Todos os produtos
Search
Central de documentação

CloudOps Orchestration Service:ACS-TAG-TagResources

Última atualização: Jun 28, 2026

Adicione tags aos recursos automaticamente pelo Resource Management.

Nome do modelo

ACS-TAG-TagResources: Adicionar tags a recursos com o Resource Management

Executar agora

Descrição do modelo

Adiciona tags aos recursos por meio do Resource Management.

Tipo de modelo

Automatizado

Proprietário

Alibaba Cloud

Parâmetros de entrada

Parâmetro

Descrição

Tipo

Obrigatório

Valor padrão

Limite

resourceIds

IDs dos recursos.

List

Sim

resourceType

Tipo de recurso.

String

Sim

regionId

ID da região.

String

Não

{{ ACS::RegionId }}

tags

Tags a adicionar.

Json

Não

{"oosGenerate": "oosGenerate"}

rateControl

Taxa de execução simultânea de tarefas.

Json

Não

{"Mode": "Concurrency", "MaxErrors": 0, "Concurrency": 10}

OOSAssumeRole

Função do RAM assumida pelo CloudOps Orchestration Service (OOS).

String

Não

""

Parâmetros de saída

Parâmetro

Descrição

Tipo

resourceIdsAndTag

List

Política de permissões necessária para executar o modelo

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "tag:ListTagResources",
                "tag:TagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Detalhes

Para mais informações, consulte ACS-TAG-TagResources.yml no GitHub.

Conteúdo do modelo

FormatVersion: OOS-2019-06-01
Description:
    en: Adds tags to resources using Resource Management.
    name-en: ACS-TAG-TagResources
    categories:
      - security
Parameters:
  regionId:
    Label:
      en: Region ID
    Type: String
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  resourceIds:
    Label:
      en: Resource IDs
    Type: List
  resourceType:
    Label:
      en: Resource Type
    Type: String
    AllowedValues:
      - ACS::ACK::Cluster
      - ACS::ADB::DBCluster
      - ACS::ADB::DBClusterLakeVersion
      - ACS::ALB::Acl
      - ACS::ALB::HealthCheckTemplate
      - ACS::ALB::Listener
      - ACS::ALB::LoadBalancer
      - ACS::ALB::Rule
      - ACS::ALB::SecurityPolicy
      - ACS::ALB::ServerGroup
      - ACS::AliKafka::ConsumerGroup
      - ACS::AliKafka::Instance
      - ACS::AliKafka::Topic
      - ACS::ApiGateway::Api
      - ACS::ApiGateway::ApiGroup
      - ACS::ARMS::TraceApp
      - ACS::ARMS::RetcodeApp
      - ACS::ARMS::Prometheus
      - ACS::Bastionhost::Instance
      - ACS::CBWP::CommonBandwidthPackage
      - ACS::CDN::Domain
      - ACS::CEN::CenBandwidthPackage
      - ACS::CEN::CenInstance
      - ACS::CEN::Flowlog
      - ACS::CEN::TransitRouter
      - ACS::CEN::TransitRouterMulticastDomain
      - ACS::CEN::TransitRouterPeerAttachment
      - ACS::CEN::TransitRouterRouteTable
      - ACS::CEN::TransitRouterVbrAttachment
      - ACS::CEN::TransitRouterVpcAttachment
      - ACS::CEN::TransitRouterVpnAttachment
      - ACS::CEN::TransitRouterEcrAttachment
      - ACS::ClickHouse::DBCluster
      - ACS::CloudStorageGateway::Gateway
      - ACS::DCDN::Domain
      - ACS::DdosCoo::Instance
      - ACS::DdosBgp::Instance
      - ACS::EBS::DedicatedBlockStorageCluster
      - ACS::EBS::DiskReplicaGroup
      - ACS::EBS::DiskReplicaPair
      - ACS::EBS::EnterpriseSnapshotPolicy
      - ACS::EBS::SolutionInstance
      - ACS::ECI::ContainerGroup
      - ACS::ECS::AutoSnapshotPolicy
      - ACS::ECS::Command
      - ACS::ECS::DedicatedHost
      - ACS::ECS::Disk
      - ACS::ECS::Image
      - ACS::ECS::Instance
      - ACS::ECS::KeyPair
      - ACS::ECS::LaunchTemplate
      - ACS::ECS::NetworkInterface
      - ACS::ECS::SecurityGroup
      - ACS::ECS::Snapshot
      - ACS::ECS::ElasticityAssurance
      - ACS::ECS::CapacityReservation
      - ACS::ECS::SnapshotGroup
      - ACS::ECS::ReservedInstance
      - ACS::ECS::Activation
      - ACS::ECS::DedicatedHostCluster
      - ACS::ECS::StorageCapacityUnit
      - ACS::ECS::AutoProvisioningGroup
      - ACS::EIP::EipAddress
      - ACS::Eipanycast::AnycastEipAddress
      - ACS::ESS::ScalingGroup
      - ACS::ExpressConnect::PhysicalConnection
      - ACS::ExpressConnectRouter::ExpressConnectRouter
      - ACS::ECS::ImageComponent
      - ACS::ECS::ImagePipeline
      - ACS::Eflo::Cluster
      - ACS::Eflo::Node
      - ACS::EAIS::Instance
      - ACS::Eflo::Vcc
      - ACS::Eflo::Vpd
      - ACS::Eflo::Subnet
      - ACS::Eflo::ExperimentPlan
      - ACS::Eflo::Vsc
      - ACS::Eflo::ElasticNetworkInterface
      - ACS::Eflo::NetworkInterface
      - ACS::Eflo::Er
      - ACS::Eflo::HighDensityElasticNetworkInterface
      - ACS::Eflo::HyperNode
      - ACS::EMR::Cluster
      - ACS::FC::Service
      - ACS::GPDB::DBInstance
      - ACS::Ga::Accelerator
      - ACS::Ga::Acl
      - ACS::Ga::BandwidthPackage
      - ACS::Ga::BasicAccelerator
      - ACS::Ga::EndpointGroup
      - ACS::GWLB::LoadBalancer
      - ACS::GWLB::Listener
      - ACS::GWLB::ServerGroup
      - ACS::KMS::Key
      - ACS::KMS::Secret
      - ACS::Lindorm::Instance
      - ACS::Live::Domain
      - ACS::Live::Caster
      - ACS::HBase::Cluster
      - ACS::Hologram::Instance
      - ACS::MaxCompute::Project
      - ACS::MongoDB::DBInstance
      - ACS::MSE::Gateway
      - ACS::MSE::Cluster
      - ACS::NAS::FileSystem
      - ACS::NAT::NatGateway
      - ACS::NLB::Listener
      - ACS::NLB::LoadBalancer
      - ACS::NLB::SecurityPolicy
      - ACS::NLB::ServerGroup
      - ACS::OOS::Application
      - ACS::OOS::Parameter
      - ACS::OOS::SecretParameter
      - ACS::OOS::Template
      - ACS::OSS::Bucket
      - ACS::OOS::StateConfiguration
      - ACS::OOS::PatchBaseline
      - ACS::Ons::Group
      - ACS::Ons::Instance
      - ACS::Ons::Instance
      - ACS::Ons::Topic
      - ACS::OTS::Instance
      - ACS::PolarDB::DBCluster
      - ACS::PrivateLink::VpcEndpoint
      - ACS::PrivateLink::VpcEndpointService
      - ACS::RAM::Role
      - ACS::RAM::Policy
      - ACS::RAM::User
      - ACS::RDS::DBInstance
      - ACS::Redis::DBInstance
      - ACS::ResourceManager::Account
      - ACS::ResourceManager::ResourceGroup
      - ACS::ResourceManager::Folder
      - ACS::ResourceManager::ControlPolicy
      - ACS::ResourceManager::ResourceShare
      - ACS::RocketMQ::Instance
      - ACS::RDS::Custom
      - ACS::RDS::CustomDeploymentSet
      - ACS::RDS::CustomDisk
      - ACS::RDS::CustomSnapshot
      - ACS::ROS::Template
      - ACS::SLB::AccessControlList
      - ACS::SLB::CACertificate
      - ACS::SLB::LoadBalancer
      - ACS::SLB::MasterSlaveServerGroup
      - ACS::SLB::ServerCertificate
      - ACS::SLB::VServerGroup
      - ACS::SLS::Project
      - ACS::SelectDB::DBInstance
      - ACS::VPC::DhcpOptionsSet
      - ACS::VPC::FlowLog
      - ACS::VPC::GatewayEndpoint
      - ACS::VPC::HaVip
      - ACS::VPC::Ipv4Gateway
      - ACS::VPC::Ipv4Gateway
      - ACS::VPC::Ipv6Gateway
      - ACS::VPC::NetworkAcl
      - ACS::VPC::PrefixList
      - ACS::VPC::PublicIpAddressPool
      - ACS::VPC::RouteTable
      - ACS::VPC::TrafficMirrorFilter
      - ACS::VPC::TrafficMirrorSession
      - ACS::VPC::VPC
      - ACS::VPC::VSwitch
      - ACS::VPC::PeerConnection
      - ACS::VPC::VSwitchCidrReservation
      - ACS::VpcIpam::Ipam
      - ACS::VpcIpam::IpamPool
      - ACS::VpcIpam::IpamScope
      - ACS::VPN::CustomerGateway
      - ACS::VPN::VpnGateway
      - ACS::VPN::VpnAttachment
      - ACS::VOD::Domain
      - ACS::WAFV3::DefenseResource
      - ALIYUN::ADB::CLUSTER
      - ALIYUN::ALB::ACL
      - ALIYUN::ALB::LOADBALANCER
      - ALIYUN::ALB::SECURITYPOLICY
      - ALIYUN::ALB::SERVERGROUP
      - ALIYUN::ALIDNS::DOMAIN
      - ALIYUN::ALIDNSGTM::GTMINSTANCE
      - ALIYUN::ALIKAFKA::CONSUMERGROUP
      - ALIYUN::ALIKAFKA::INSTANCE
      - ALIYUN::ALIKAFKA::TOPIC
      - ALIYUN::APIGATEWAY::API
      - ALIYUN::APIGATEWAY::APIGROUP
      - ALIYUN::APIGATEWAY::APP
      - ALIYUN::APIGATEWAY::INSTANCE
      - ALIYUN::APIGATEWAY::PLUGIN
      - ALIYUN::ARMS::APPLICATION
      - ALIYUN::ARMS::WEB
      - ALIYUN::AVDS::ASSETS
      - ALIYUN::AVDS::INSTANCE
      - ALIYUN::BAAS::CONSORTIUM
      - ALIYUN::BAAS::ORGANIZATION
      - ALIYUN::BASTIONHOST::INSTANCE
      - ALIYUN::BPSTUDIO::APPLICATION
      - ALIYUN::BPSTUDIO::TEMPLATE
      - ALIYUN::CAS::INSTANCE
      - ALIYUN::CASSANDRA::CLUSTER
      - ALIYUN::CBN::TRANSITROUTERPEERATTACHMENT
      - ALIYUN::CBN::TRANSITROUTERVBRATTACHMENT
      - ALIYUN::CBN::TRANSITROUTERVPCATTACHMENT
      - ALIYUN::CBN::TRANSITROUTERVPNATTACHMENT
      - ALIYUN::CBS::BACKUPPLAN
      - ALIYUN::CDDC::DEDICATEDHOST
      - ALIYUN::CDN::DOMAIN
      - ALIYUN::CDS::CLUSTER
      - ALIYUN::CDT::CDT
      - ALIYUN::CDT::CDTCB
      - ALIYUN::CDT::CDTINTERNET
      - ALIYUN::CEN::BANDWIDTHPACKAGE
      - ALIYUN::CEN::CEN
      - ALIYUN::CLOUDBOX::CLOUDBOX
      - ALIYUN::CLOUDBOX::DEMAND
      - ALIYUN::CLOUDBOX::SITE
      - ALIYUN::CLOUDBOX::SKU
      - ALIYUN::CLOUDPHONE::INSTANCE
      - ALIYUN::CMS::MONITORGROUP
      - ALIYUN::COMPOSER::FLOW
      - ALIYUN::COMPUTENEST::SERVICE
      - ALIYUN::COMPUTENEST::SERVICEINSTANCE
      - ALIYUN::CONFIG::AGGREGATECOMPLIANCEPACK
      - ALIYUN::CONFIG::AGGREGATECONFIGRULE
      - ALIYUN::CONFIG::AGGREGATOR
      - ALIYUN::CONFIG::COMPLIANCEPACK
      - ALIYUN::CONFIG::RULE
      - ALIYUN::CR::CHARTNAMESPACE
      - ALIYUN::CR::CHARTREPOSITORY
      - ALIYUN::CR::INSTANCE
      - ALIYUN::CR::NAMESPACE
      - ALIYUN::CR::REPOSITORY
      - ALIYUN::CS::CLUSTER
      - ALIYUN::DATAHUB::PROJECT
      - ALIYUN::DATAHUB::TOPIC
      - ALIYUN::DATAV::SCREEN
      - ALIYUN::DBAUDIT::INSTANCE
      - ALIYUN::DCDN::DOMAIN
      - ALIYUN::DCDNIPA::DOMAIN
      - ALIYUN::DDOSBGP::INSTANCE
      - ALIYUN::DDOSCOO::INSTANCE
      - ALIYUN::DDS::INSTANCE
      - ALIYUN::DDS::SHARDINGINSTANCE
      - ALIYUN::DIDE::PROJECT
      - ALIYUN::DOMAIN::DOMAIN
      - ALIYUN::DRDS::INSTANCE
      - ALIYUN::DTS::CONSUMERCHANNEL
      - ALIYUN::DTS::INSTANCE
      - ALIYUN::DTS::JOBMONITORRULE
      - ALIYUN::DTS::MIGRATIONJOB
      - ALIYUN::DTS::SUBSCRIPTIONJOB
      - ALIYUN::DTS::SYNCHRONIZATIONJOB
      - ALIYUN::DYSMS::TEMPLATE
      - ALIYUN::EBS::DBSC
      - ALIYUN::EBS::DEDICATEDBLOCKSTORAGECLUSTER
      - ALIYUN::EBS::DISKREPLICAGROUP
      - ALIYUN::EBS::DISKREPLICAPAIR
      - ALIYUN::EBS::GROUP
      - ALIYUN::EBS::PAIR
      - ALIYUN::ECI::CONTAINERGROUP
      - ALIYUN::ECI::IMAGECACHE
      - ALIYUN::ECI::LAUNCHTEMPLATE
      - ALIYUN::ECI::VIRTUALNODE
      - ALIYUN::ECS::CAPACITYRESERVATION
      - ALIYUN::ECS::COMMAND
      - ALIYUN::ECS::DDH
      - ALIYUN::ECS::DDHCLUSTER
      - ALIYUN::ECS::DISK
      - ALIYUN::ECS::ELASTICITYASSURANCE
      - ALIYUN::ECS::ENI
      - ALIYUN::ECS::IMAGE
      - ALIYUN::ECS::IMAGECOMPONENT
      - ALIYUN::ECS::IMAGEPIPELINE
      - ALIYUN::ECS::INSTANCE
      - ALIYUN::ECS::INVOCATION
      - ALIYUN::ECS::KEYPAIR
      - ALIYUN::ECS::LAUNCHTEMPLATE
      - ALIYUN::ECS::RESERVEDINSTANCE
      - ALIYUN::ECS::SCU
      - ALIYUN::ECS::SECURITYGROUP
      - ALIYUN::ECS::SNAPSHOT
      - ALIYUN::ECS::SNAPSHOTGROUP
      - ALIYUN::ECS::SNAPSHOTPOLICY
      - ALIYUN::ECS::VOLUME
      - ALIYUN::EDAS::APPLICATION
      - ALIYUN::EDAS::CLUSTER
      - ALIYUN::EDAS::NAMESPACE
      - ALIYUN::EHPC::CLUSTER
      - ALIYUN::ELASTICSEARCH::APM
      - ALIYUN::ELASTICSEARCH::INSTANCE
      - ALIYUN::ELASTICSEARCH::LOGSTASH
      - ALIYUN::EMR::CLUSTER
      - ALIYUN::EMR::FLOWPROJECT
      - ALIYUN::EMR::INSTANCE
      - ALIYUN::ESS::SCALINGGROUP
      - ALIYUN::EXPRESSCONNECT::PHYSICALCONNECTION
      - ALIYUN::FC::SERVICE
      - ALIYUN::FLINKASI::VVPINSTANCE
      - ALIYUN::FLINKASI::VVPNAMESPACE
      - ALIYUN::GA::ACL
      - ALIYUN::GDS::INSTANCE
      - ALIYUN::GPDB::INSTANCE
      - ALIYUN::GWS::INSTANCE
      - ALIYUN::GWS::USER
      - ALIYUN::HBR::CLIENT
      - ALIYUN::HBR::HANAINSTANCE
      - ALIYUN::HBR::VAULT
      - ALIYUN::HCS_SGW::GATEWAY
      - ALIYUN::HITSDB::INSTANCE
      - ALIYUN::HOLOGRAM::INSTANCE
      - ALIYUN::HOLOGRES::INSTANCE
      - ALIYUN::HSM::INSTANCE
      - ALIYUN::IACSERVICE::AUTHORIZATION
      - ALIYUN::IACSERVICE::JOB
      - ALIYUN::IACSERVICE::MODULE
      - ALIYUN::IACSERVICE::MODULEMARKET
      - ALIYUN::IACSERVICE::MODULEVERSION
      - ALIYUN::IACSERVICE::TASK
      - ALIYUN::IMAGESEARCH::INSTANCE
      - ALIYUN::IOT::PRODUCT
      - ALIYUN::IOT::RULE
      - ALIYUN::KMS::KEY
      - ALIYUN::KMS::SECRET
      - ALIYUN::KVSTORE::AUDITLOGCONFIG
      - ALIYUN::KVSTORE::INSTANCE
      - ALIYUN::LICENSEMANAGER::GRANT
      - ALIYUN::LICENSEMANAGER::LICENSE
      - ALIYUN::LIVE::DOMAIN
      - ALIYUN::LOG::LOGSTORE
      - ALIYUN::LOG::PROJECT
      - ALIYUN::MQ::GROUP
      - ALIYUN::MQ::INSTANCE
      - ALIYUN::MQ::TOPIC
      - ALIYUN::MSE::CLUSTER
      - ALIYUN::MSE::GATEWAY
      - ALIYUN::MTS::MEDIAINFO
      - ALIYUN::MTS::SNAPSHOT
      - ALIYUN::MTS::TRANSCODE
      - ALIYUN::MULTIMOD::CLUSTER
      - ALIYUN::NAS::FILESYSTEM
      - ALIYUN::NLB::LOADBALANCER
      - ALIYUN::NLB::SECURITYPOLICY
      - ALIYUN::NLB::SERVERGROUP
      - ALIYUN::NLP::ENTITY
      - ALIYUN::NLP::IE
      - ALIYUN::NLP::KWE
      - ALIYUN::NLP::REVIEWANALYSIS
      - ALIYUN::NLP::SENTIMENT
      - ALIYUN::NLP::TEXTSTRUCTURE
      - ALIYUN::NLP::WORDPOS
      - ALIYUN::OCEANBASE::INSTANCE
      - ALIYUN::OCEANBASE::TENANT
      - ALIYUN::OOS::APPLICATION
      - ALIYUN::OOS::EXECUTION
      - ALIYUN::OOS::OPSITEM
      - ALIYUN::OOS::OPSITEMCONFIGURATION
      - ALIYUN::OOS::PARAMETER
      - ALIYUN::OOS::SECRETPARAMETER
      - ALIYUN::OOS::STATECONFIGURATION
      - ALIYUN::OOS::TEMPLATE
      - ALIYUN::OPENANALYTICS::INSTANCE
      - ALIYUN::OPENSEARCH::APPGROUP
      - ALIYUN::OPENSEARCH::INSTANCE
      - ALIYUN::OSS::BUCKET
      - ALIYUN::OTS::INSTANCE
      - ALIYUN::OUTBOUNDBOT::INSTANCE
      - ALIYUN::PETADATA::INSTANCE
      - ALIYUN::POLARDB::CLUSTER
      - ALIYUN::POLARDBX::POLARDBXINSTANCE
      - ALIYUN::PRIVATELINK::VPCENDPOINT
      - ALIYUN::PRIVATELINK::VPCENDPOINTSERVICE
      - ALIYUN::PVTZ::ZONE
      - ALIYUN::RAM::USER
      - ALIYUN::RDS::ACCOUNT
      - ALIYUN::RDS::ACTIONEVENTPOLICY
      - ALIYUN::RDS::BACKUP
      - ALIYUN::RDS::BACKUPFILE
      - ALIYUN::RDS::BACKUPPOLICY
      - ALIYUN::RDS::DATABASE
      - ALIYUN::RDS::DBPROXY
      - ALIYUN::RDS::DEDICATEDHOST
      - ALIYUN::RDS::DOWNLOADLINKDETAIL
      - ALIYUN::RDS::GADINSTANCE
      - ALIYUN::RDS::INSTANCE
      - ALIYUN::RDS::PARAMETERGROUP
      - ALIYUN::RM::ACCOUNT
      - ALIYUN::RM::INSTANCE
      - ALIYUN::RM::RESOURCEGROUP
      - ALIYUN::RM::RESOURCESHARE
      - ALIYUN::RM::SHAREDRESOURCE
      - ALIYUN::RM::SHAREDTARGET
      - ALIYUN::RM::TOPIC
      - ALIYUN::ROCKETMQ::CONSUMERGROUP
      - ALIYUN::ROCKETMQ::INSTANCE
      - ALIYUN::ROCKETMQ::TOPIC
      - ALIYUN::ROS::CHANGESET
      - ALIYUN::ROS::STACK
      - ALIYUN::ROS::STACKGROUP
      - ALIYUN::ROS::TEMPLATE
      - ALIYUN::SAE::APPLICATION
      - ALIYUN::SAG::CCN
      - ALIYUN::SAVINGPLAN::INSTANCE
      - ALIYUN::SCBLINKONECS::CLUSTER
      - ALIYUN::SCDN::DOMAIN
      - ALIYUN::SEARCHENGINE::INSTANCE
      - ALIYUN::SLB::ACL
      - ALIYUN::SLB::CERTIFICATE
      - ALIYUN::SLB::INSTANCE
      - ALIYUN::SMARTAG::ABWP
      - ALIYUN::SMARTAG::ACL
      - ALIYUN::SMARTAG::CCN
      - ALIYUN::SMARTAG::FLOWLOG
      - ALIYUN::SMARTAG::QOS
      - ALIYUN::SMARTAG::SMARTAG
      - ALIYUN::SMARTAG::SMARTAG_B
      - ALIYUN::SMARTAG::SMARTAG_D
      - ALIYUN::SMARTAG::SMARTAG_S
      - ALIYUN::SMARTHOSTING::HBM
      - ALIYUN::SMARTHOSTING::MANAGEDHOST
      - ALIYUN::SMARTHOSTING::MPS
      - ALIYUN::SMC::REPLICATIONJOB
      - ALIYUN::SMC::SOURCESERVER
      - ALIYUN::SPARK::CLUSTER
      - ALIYUN::TESTAMP::INSTANCE
      - ALIYUN::TESTPRODUCT::TEST2
      - ALIYUN::TESTPRODUCT::TESTTYPE
      - ALIYUN::TESTPRODUCT::XXX
      - ALIYUN::TESTPRODUCT::XXXX
      - ALIYUN::VOD::APPINFO
      - ALIYUN::VOD::DOMAIN
      - ALIYUN::VPC::COMMONBANDWIDTHPACKAGE
      - ALIYUN::VPC::CUSTOMERGATEWAY
      - ALIYUN::VPC::EIP
      - ALIYUN::VPC::FLOWLOG
      - ALIYUN::VPC::HAVIP
      - ALIYUN::VPC::IPSECSERVER
      - ALIYUN::VPC::IPV4GATEWAY
      - ALIYUN::VPC::IPV6BANDWIDTH
      - ALIYUN::VPC::IPV6GATEWAY
      - ALIYUN::VPC::IPV6INSTANCE
      - ALIYUN::VPC::NATGATEWAY
      - ALIYUN::VPC::PHYSICALCONNECTION
      - ALIYUN::VPC::PREFIXLIST
      - ALIYUN::VPC::PUBLICIPADDRESSPOOL
      - ALIYUN::VPC::ROUTETABLE
      - ALIYUN::VPC::SSLVPNCLIENTCERT
      - ALIYUN::VPC::SSLVPNSERVER
      - ALIYUN::VPC::TRAFFICMIRRORFILTER
      - ALIYUN::VPC::TRAFFICMIRRORSESSION
      - ALIYUN::VPC::VPC
      - ALIYUN::VPC::VPNATTACHMENT
      - ALIYUN::VPC::VPNCONNECTION
      - ALIYUN::VPC::VPNGATEWAY
      - ALIYUN::VPC::VSWITCH
      - ALIYUN::WAF::DOMAIN
  tags:
    Label:
      en: Tags
    Description:
      en: The tags of the resource. Example: {"k1":"v1","k2":"v2"}
    Type: Json
    Default: { "oosGenerate": "oosGenerate" }
  rateControl:
    Label:
      en: Rate Control
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: tagResource
    Action: ACS::CheckFor
    Description:
      en: Adds tags to resources using Resource Management.
    Properties:
      Service: TAG
      API: TagResources
      Parameters:
        RegionId: '{{ regionId }}'
        ResourceARN:
          - 'Fn::Jq':
              - First
              - '.resourceType | ascii_downcase |split("::") | "arn:acs:"+.[1]+":{{ regionId }}:{{ ACS::AccountId }}:"+.[2]+"/{{ ACS::TaskLoopItem }}"'
              - '{"resourceType":"{{resourceType}}"}'
        Tags: "{{ tags }}"
      DesiredValues:
        - null
      PropertySelector: .FailedResources.FailedResource[]
    Loop:
      Items: '{{ resourceIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        errorMessages:
          AggregateType: 'Fn::ListJoin'
          AggregateField: errorMessage
    Outputs:
      errorMessage:
        Type: String
        ValueSelector: .FailedResources.FailedResource[]
  - Name: listTagResources
    Action: ACS::ExecuteAPI
    Description:
      en: Queries information about resource tags.
    Properties:
      Service: TAG
      API: ListTagResources
      Parameters:
        RegionId: '{{ regionId }}'
        ResourceARN:
          - 'Fn::Jq':
              - First
              - '.resourceType | ascii_downcase |split("::") | "arn:acs:"+.[1]+":{{ regionId }}:{{ ACS::AccountId }}:"+.[2]+"/{{ ACS::TaskLoopItem }}"'
              - '{"resourceType":"{{resourceType}}"}'
    Outputs:
      tagAndResourceId:
        Type: Json
        ValueSelector: .TagResources
    Loop:
      Items: '{{ resourceIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        tagAndResourceIds:
          AggregateType: Fn::ListJoin
          AggregateField: tagAndResourceId
Outputs:
  resourceIdsAndTag:
    Type: List
    Value:
      'Fn::If':
        - 'Fn::Equals':
            - []
            - 'Fn::MergeList': '{{ tagResource.errorMessages }}'
        - '{{ listTagResources.tagAndResourceIds }}'
        - errcode: '{{ tagResource.errorMessages }}'
          results: '{{ listTagResources.tagAndResourceIds }}'