如何通过CloudFormation设置EC2实例的根卷标记

时间:2017-11-26 18:46:48

标签: amazon-web-services amazon-cloudformation

使用CloudFormation创建EC2实例,但根卷的名称(标记)为空。如何使用CloudFormation进行设置?

# ec2-instance.yml (CloudFormation template)
MyInstance:
  Type: "AWS::EC2::Instance"
  Properties:
    ImageId: "ami-da9e2cbc"
    InstanceType: "t2.nano"
    KeyName: !Ref "KeyPair"
    Tags: # This is for EC2 instance (not root volume)
      - Key: "Name"
        Value: "my-instance"

我发现"卷"和" BlockDeviceMappings"属性,但它不能。

the name is empty

2 个答案:

答案 0 :(得分:0)

我知道EC2 RunInstances现在支持EBS volumes on launch的标记,但我不确定CloudFormation是否支持此功能。

其他人在CloudFormation中有requested this feature。另请参阅this thread

在CloudFormation中支持此功能之前,您可能需要查看graffiti-monkey,其中查看EC2实例具有的标记,将这些标记复制到附加到实例的EBS卷,然后复制那些标签到EBS快照。 (我还没有验证它是否将标签传播到根设备卷,但假设它确实如此。)

答案 1 :(得分:0)

UserData下存在一些语法错误

请参见下面的代码,使其生效

# Download and install AWS CLI
apt-get -y install unzip
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws  
rm -rf awscli-bundle awscli-bundle.zip
EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
EC2_AVAIL_ZONE=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
VOLUME_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=$EC2_INSTANCE_ID Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region ${AWS::Region} --out text | cut -f 1)
aws ec2 create-tags --resources $VOLUME_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${AWS::Region}