かゆいところに手が届かない。
BlockDeviceMappings:
- DeviceName: /dev/sda1
Ebs:
VolumeSize: 50
Tags # 不可能
- Key: "keyname1"
Value: "value1"
公式が情報をナレッジセンターに出しているが、余計な情報が多すぎる、ここだけでいい。
UserData:
Fn::Base64: !Sub |
#!/bin/bash
AWS_AVAIL_ZONE=$(curl http://169.254.169.254/latest/meta-data/placement/availability-zone)
AWS_REGION="`echo \"$AWS_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
AWS_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
ROOT_VOLUME_IDS=$(aws ec2 describe-instances --region $AWS_REGION --instance-id $AWS_INSTANCE_ID --output text --query Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId)
aws ec2 create-tags --resources $ROOT_VOLUME_IDS --region $AWS_REGION --tags Key=Name,Value={つけたい名前}
aws ec2 create-tags
するためにはIAMロールとポリシーが必要だから、IAMを書いているとここまでする必要あるのか?ともやもやする。
ちなみに新規にVolumeを作るときは普通に対応している。
Type: AWS::EC2::Volume
Properties:
AutoEnableIO: Boolean
AvailabilityZone: String
Encrypted: Boolean
Iops: Integer
KmsKeyId: String
Size: Integer
SnapshotId: String
Tags:
- Tag # だよね~
VolumeType: String
CloudFormationで必要なだけインスタンス立ててから、LambdaでEC2のTagから拾ってきて一括付与でもいいんだけど、めんどくさ過ぎるからそもそも対応してほしい。