使用堆栈名称

时间:2020-09-02 19:57:47

标签: python amazon-ec2 amazon-cloudformation

我想用键-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"]}
            ]
        }
    }

1 个答案:

答案 0 :(得分:1)

具有以下标记的

CloudFormation automatically tags资源:

  • aws:cloudformation:logical-id
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

因此,可以代替使用AWS::StackName复制标签,而可以使用自动提供的标签。

更新

缺少引号:

   { "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}},

应该是:

   { "Key": "otherkey", "Value": "Fn::Sub": "${AWS::StackName}"},

也许也应该是:

   { "Key": "otherkey", "Value": {"Fn::Sub": "${AWS::StackName}"}},