标记使用 cloudformation 创建的 Beanstalk 环境

Posted

技术标签:

【中文标题】标记使用 cloudformation 创建的 Beanstalk 环境【英文标题】:Tagging Beanstalk environments created with cloudformation 【发布时间】:2015-02-28 21:24:25 【问题描述】:

使用 Cloud Formation 创建 Elastic Beanstalk 环境时,如何设置分配给环境和实例的标签?

例如我有以下资源定义:

"BeanstalkEnvironment" : 
  "Type" : "AWS::ElasticBeanstalk::Environment",
  "Properties" : 
    "ApplicationName" :  "Ref" : "BeanstalkApplication" ,
     "Description" :  "AWS Elastic Beanstalk Environment running Demo Application",
     "SolutionStackName" : "64bit Windows Server 2012 R2 running IIS 8.5",
     "EnvironmentName" : "Test Site",
     "CNAMEPrefix" :  "Ref" : "URLPrefix" ,
     "OptionSettings" : [
       "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "EC2KeyName", "Value" :  "Ref" : "KeyName" ,
       "Namespace" : "aws:ec2:vpc", "OptionName" : "VPCId", "Value" :  "Ref" : "VPC" ,
       "Namespace" : "aws:ec2:vpc", "OptionName" : "Subnets", "Value" :  "Fn::Join" : [ ",", [  "Ref" : "SubnetA" ,  "Ref" : "SubnetB" ,  "Ref" : "SubnetC"  ] ]  ,
       "Namespace" : "aws:ec2:vpc", "OptionName" : "ELBSubnets", "Value" :  "Fn::Join" : [ ",", [  "Ref" : "SubnetA" ,  "Ref" : "SubnetB" ,  "Ref" : "SubnetC"  ] ]  ,
       "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName":"InstanceType", "Value" : "t2.micro" ,
       "Namespace" : "aws:ec2:vpc", "OptionName":"AssociatePublicIpAddress", "Value":"true" ,
       "Namespace" : "aws:autoscaling:updatepolicy:rollingupdate", "OptionName":"MaxBatchSize", "Value": "1" ,
       "Namespace" : "aws:autoscaling:updatepolicy:rollingupdate", "OptionName":"MinInstancesInService", "Value": "1" ,
       "Namespace" : "aws:autoscaling:updatepolicy:rollingupdate", "OptionName":"PauseTime", "Value": "PT5M30S" ,
       "Namespace" : "aws:autoscaling:updatepolicy:rollingupdate", "OptionName":"RollingUpdateEnabled", "Value": "true" ,
       "Namespace" : "aws:elasticbeanstalk:command", "OptionName":"BatchSize", "Value": "30" ,
       "Namespace" : "aws:elb:policies", "OptionName":"ConnectionDrainingEnabled", "Value": "true" 
      ],
     "VersionLabel" : "Sample .NET Application"
    
  

完整的工作示例模板位于this gist。

并且想为 Beanstalk 和它创建的实例添加一组标签,例如:

"Tags" : [ 
           "Key" : "Contact", "Value" :  "Ref" : "Contact"  ,
           "Key" : "BudgetCode", "Value" :  "Ref" : "BudgetCode"   
        ]

Elastic Beanstalk Resource Type 似乎没有与其他类型(例如 S3 Buckets)相同的“标签”元素。

关于如何做到这一点的任何建议?确保创建的实例被正确标记会非常好,这样我们就可以跟踪哪些实例用于不同的项目。

【问题讨论】:

【参考方案1】:

OP 中给出的示例现在应该可以工作了。

AWS 于 2015 年 8 月 24 日增加了对标记 Elastic Beanstalk 环境的支持: http://aws.amazon.com/about-aws/whats-new/2015/08/aws-cloudformation-updates-support-for-amazon-vpc-aws-lambda-aws-elastic-beanstalk-amazon-rds-and-amazon-s3/

用法与支持标签的其他 CFN 资源类型相同 - 在 Properties 映射中包含一个 Tags 键并分配一个键、值映射列表: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-tags

【讨论】:

【参考方案2】:

我希望我有答案,但我有同样的问题。您可以在创建环境 cli 和 api 中执行此操作,但在 cloudformation 模板中执行此操作的选项设置中似乎没有名称空间。 (至少从我所见,它不是一个记录在案的命名空间)。我的 google-fu 也没有向其他人显示对此的答案。

【讨论】:

【参考方案3】:

我有同样的问题,亚马逊支持表明这是功能上的差距。

【讨论】:

以上是关于标记使用 cloudformation 创建的 Beanstalk 环境的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 aws cloudformation 模板在 aws cognito 用户池中设置所需属性?

docker pull <image> 在 cloudformation UserData 标记中不起作用

如何使用 CloudFormation 在现有 EC2 实例上启动容器?

如何使用cloudformation创建ecs集群?

使用 CloudFormation 创建 IdentityPool

如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板