您可以使用资源编排服务ROS(Resource Orchestration Service)创建资源栈,在资源栈中创建资源,并同时为资源绑定标签,方便日后的运维管理。支持为多个云资源批量绑定或更新标签,提升运维效率。
为多个云资源绑定相同标签
如下将提供一个示例,使用资源栈创建专有网络VPCmytest-vpc
和交换机vSwitchmytest-vsw-h
,并同时为VPC和vSwitch绑定app:test
标签。
- 编写模板。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"VPC": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": "mytest-vpc"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"VpcId": { "Ref": "VPC" },
"ZoneId": "cn-hangzhou-h",
"CidrBlock": "172.16.0.0/24",
"VSwitchName": "mytest-vsw-h"
}
}
}
}
模板说明:创建一个VPC和一个vSwitch。
- 创建资源栈,并为VPC和vSwitch绑定标签
app:test
。# pip install alibabacloud_ros20190910
from alibabacloud_ros20190910.client import Client as ROS20190910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ros20190910 import models as ros20190910_models
AK = '<AccessKeyId>'
SECRET = '<AccessKeySecret>'
REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。
template = '''
<Template>
'''
def create_client(
access_key_id: str,
access_key_secret: str,
) -> ROS20190910Client:
"""
使用AccessKey初始化账号Client。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# 您的AccessKey ID。
access_key_id=access_key_id,
# 您的AccessKey Secret。
access_key_secret=access_key_secret,
)
# 访问的域名。
config.endpoint = 'ros.aliyuncs.com'
return ROS20190910Client(config)
def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]):
"""create stack"""
create_stack_request = ros20190910_models.CreateStackRequest(
region_id=region_id,
stack_name=stack_name,
# 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。
# 您也可以使用Body Param + HTTP POST的方式传递模板内容。
template_body=template_body,
timeout_in_minutes=timeout_in_minutes,
parameters=parameters,
tags=tags,
disable_rollback=True
)
response = client.create_stack(create_stack_request)
return response.body
client = create_client(AK, SECRET)
tags = [
ros20190910_models.CreateStackRequestTags(
key='app',
value='test'
)
]
print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))
参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为步骤1中的模板。
- 可选:登录专有网络管理控制台,查看VPC和vSwitch绑定的标签。
当VPC和vSwitch都绑定了标签app:test
,表示操作成功。
为多个云资源绑定不同标签
如下将提供一个示例,使用资源栈创建专有网络VPC
mytest-vpc
和交换机vSwitch
mytest-vsw-h
,为VPC和vSwitch绑定通用标签
app:test
,除此之外还要为vSwitch绑定特定标签
group:test
。最终效果为:
- VPC
mytest-vpc
绑定的标签:app:test
。
- vSwitch
mytest-vsw-h
绑定的标签:app:test
和group:test
。
- 编写模板。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"VPC": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": "mytest-vpc"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"VpcId": { "Ref": "VPC" },
"ZoneId": "cn-hangzhou-h",
"CidrBlock": "172.16.0.0/24",
"VSwitchName": "mytest-vsw-h",
"Tags": [{ "Key": "group", "Value": "test" }]
}
}
}
}
模板说明:创建一个VPC和一个vSwitch,并为vSwitch绑定特定标签group:test
。
- 创建资源栈,并为VPC和vSwitch绑定通用标签
app:test
。# pip install alibabacloud_ros20190910
from alibabacloud_ros20190910.client import Client as ROS20190910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ros20190910 import models as ros20190910_models
AK = '<AccessKeyId>'
SECRET = '<AccessKeySecret>'
REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。
template = '''
<Template>
'''
def create_client(
access_key_id: str,
access_key_secret: str,
) -> ROS20190910Client:
"""
使用AccessKey初始化账号Client。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# 您的AccessKey ID。
access_key_id=access_key_id,
# 您的AccessKey Secret。
access_key_secret=access_key_secret,
)
# 访问的域名。
config.endpoint = 'ros.aliyuncs.com'
return ROS20190910Client(config)
def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]):
"""create stack"""
create_stack_request = ros20190910_models.CreateStackRequest(
region_id=region_id,
stack_name=stack_name,
# 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。
# 您也可以使用Body Param + HTTP POST的方式传递模板内容。
template_body=template_body,
timeout_in_minutes=timeout_in_minutes,
parameters=parameters,
tags=tags,
disable_rollback=True
)
response = client.create_stack(create_stack_request)
return response.body
client = create_client(AK, SECRET)
tags = [
ros20190910_models.CreateStackRequestTags(
key='app',
value='test'
)
]
print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))
参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为步骤1中的模板。
- 可选:登录专有网络管理控制台,查询VPC和vSwitch绑定的标签。
当VPC绑定的标签为app:test
,vSwitch绑定的标签为app:test
和group:test
时,表示操作成功。
为多个云资源更新标签
如下将提供一个示例,在为多个云资源绑定相同标签的基础上,将VPCmytest-vpc
和vSwitchmytest-vsw-h
已绑定的标签app:test
更新为app:normal
。
- 创建资源栈,并为VPC和vSwitch绑定新标签
app:normal
。# pip install alibabacloud_ros20190910
from alibabacloud_ros20190910.client import Client as ROS20190910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ros20190910 import models as ros20190910_models
AK = '<AccessKeyId>'
SECRET = '<AccessKeySecret>'
REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。
template = '''
<Template>
'''
def create_client(
access_key_id: str,
access_key_secret: str,
) -> ROS20190910Client:
"""
使用AccessKey初始化账号Client。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# 您的AccessKey ID。
access_key_id=access_key_id,
# 您的AccessKey Secret。
access_key_secret=access_key_secret,
)
# 访问的域名。
config.endpoint = 'ros.aliyuncs.com'
return ROS20190910Client(config)
def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]):
"""create stack"""
create_stack_request = ros20190910_models.CreateStackRequest(
region_id=region_id,
stack_name=stack_name,
# 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。
# 您也可以使用Body Param + HTTP POST的方式传递模板内容。
template_body=template_body,
timeout_in_minutes=timeout_in_minutes,
parameters=parameters,
tags=tags,
disable_rollback=True
)
response = client.create_stack(create_stack_request)
return response.body
client = create_client(AK, SECRET)
tags = [
ros20190910_models.CreateStackRequestTags(
key='app',
value='normal'
)
]
print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))
参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为为多个云资源绑定相同标签中的模板。
- 可选:登录专有网络管理控制台,查询VPC和vSwitch绑定的标签。
当VPC和vSwitch都绑定了新标签app:normal
时,表示操作成功。