我想用键-somekey和otherkey-将ec2实例标记为堆栈名称。这会用这个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"]}
]
}
}
答案 0 :(得分:1)
CloudFormation automatically tags资源:
因此,可以代替使用AWS::StackName
复制标签,而可以使用自动提供的标签。
缺少引号:
{ "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}},
应该是:
{ "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}"},
也许也应该是:
{ "Key": "otherkey", "Value": {"Fn::Sub": "${AWS::StackName}"}},