您可以使用資源編排服務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
時,表示操作成功。