2017-11-26 52 views
0

CloudFormationを使用してEC2インスタンスを作成しますが、ルートボリュームの名前(タグ)は空です。 CloudFormationを使って設定するには?CloudFormation経由でEC2インスタンスのルートボリュームのタグを設定する方法

# 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" 

"Volumes"と "BlockDeviceMappings"プロパティが見つかりましたが、できませんでした。

the name is empty

答えて

0

CloudFormationはこれを現在サポートしていません。このスクリプトは、私のUbuntu AMIのために私がインストールする必要があることName=Root Volume my-instance

ノートでは/ dev/sda1にEBSボリュームをタグ付けします

apt-get -y install unzip 
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_REGION=${EC2_AVAIL_ZONE:0:${#EC2_AVAIL_ZONE} - 1} 
ROOT_DISK_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values={EC2_INSTANCE_ID} Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region=${EC2_REGION} --out \"text\" | cut -f 1) 
aws ec2 create-tags --resources $ROOT_DISK_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${EC2_REGION} 

:しかしインスタンスuser data scriptを使用して、あなたは、ルートボリュームにタグを付け、これを行うことができますまずAWSツールを使用します。 Amazon Linux AMIには、これらのツールがインストールされています。 CloudFormationのために

、あなたが使用します。!

# ec2-instance.yml (CloudFormation template) 
MyInstance: 
    Type: "AWS::EC2::Instance" 
    Properties: 
    ImageId: "ami-da9e2cbc" 
    InstanceType: "t2.nano" 
    KeyName: !Ref "KeyPair" 
    UserData: 
     "Fn::Base64": !Sub | 
     #!/bin/bash -x 
     apt-get -y install unzip 
     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_REGION=${EC2_AVAIL_ZONE:0:${#EC2_AVAIL_ZONE} - 1} 
     ROOT_DISK_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values={EC2_INSTANCE_ID} Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region=${EC2_REGION} --out \"text\" | cut -f 1) 
     aws ec2 create-tags --resources $ROOT_DISK_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${EC2_REGION} 
+0

これはとても醜いです私! 'UserData'プロパティとそのスクリプトを使用するか、あきらめてください...ありがとう! –

+0

はい、これらのユーザデータスクリプトはかなり厄介なものになります;-)。しかし、CLIを使用して必要なことを何もすることができます。 –

0

私はEC2 RunInstancesが今EBS volumes on launchのタグ付けをサポートしていることを知っているが、私はCloudFormationがこれをサポートしていることはよく分かりません。

他にもCloudFormationのrequested this featureがあります。 this threadも参照してください。

これはCloudFormationでサポートされるまで、graffiti-monkeyを見て、EC2インスタンスが持つタグを調べ、それらのタグをインスタンスに接続されているEBSボリュームにコピーしてから、それらのタグをEBSスナップショット(私はそれがルートデバイスボリュームにタグを伝播することを確認していませんが、それが前提としています)。

+0

をああ...要求された日付は5年前です:(私がタグ付けする他の方法を探してみてくださいよおかげ –

関連する問題