我想用 key-somekey 和 otherkey- 标记 ec2 实例,并将值作为 stackname。这个 python 代码能解决这个问题吗??
import os, sys, pprint #standard library imports
import yaml, boto3 #pip library imports
import lib.aws as aws
import config.hooks as hooks
def generate(source_data):
return yaml.dump(generate_map(source_data), default_flow_style=False)
def generate_resource(ami, source_data):
resource = {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": ami["ImageId"],
"InstanceType": ami["InstanceType"],
"PrivateIpAddress": ami["PrivateIpAddress"],
"KeyName": ami["KeyName"],
"SubnetId": { "Ref": "SubnetId" },
"SecurityGroupIds": { "Ref": "SecurityGroupId" },
"Tags": [
{ "Key": "Name", "Value": ami["Name"] },
{ "Key": "BootUpDependsOn", "Value": ami["BootUpDependsOn"]},
{ "Key": "somekey", "Value": "Fn::Sub": "${AWS::StackName}},
{ "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}},
{ "Key": "WaitTimeAfterBootUp", "Value": ami["WaitTimeAfterBootUp"]}
]
}
}
最佳答案
云形成automatically tags具有以下标签的资源:
- aws:cloudformation:逻辑 ID
- aws:cloudformation:堆栈 ID
- aws:cloudformation:堆栈名称
因此,您可以使用自动提供的标签,而不是使用 AWS::StackName
复制标签。
更新
缺少引号:
{ "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}},
应该是:
{ "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}"},
也许也应该是:
{ "Key": "otherkey", "Value": {"Fn::Sub": "${AWS::StackName}"}},
关于python - 使用堆栈名称标记 ec2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63712747/