この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
渡辺です。 普段は札幌で仕事していますが、現在東京に出張中です。 はい、暑くてしにそうです・・・。
さて、2016年12月から、新しく作成されるすべてのEC2インスタンス・EBS・スナップショットが長い形式のIDで発行されます。 この変更は前倒しで適用することができますが、マネジメントコンソールからの操作では、ログイン中のIAMユーザ毎にしか適用することができませんでした。 今回、追加されたAWSCLIのコマンド(modify-identity-id-format)を使用すると、IAM Role単位で変更を適用することができます。
awscliのアップデート
新しいコマンドになるので、awscliをアップデートしなければ使えないでしょう。
$ sudo pip install awscli --upgrade
$ aws --version
aws-cli/1.10.47 Python/2.7.10 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.4.37
ec2 modify-identity-id-format で長いIDを適用する
ec2 modify-identity-id-format
では、適用するリソースタイプ、IAMのARNを指定して、長いIDの適用の有無を設定できます。
例えば、あるEC2インスタンスが、EC2Role Roleで起動しているならば、次のように長いID形式を有効にします。
$ aws ec2 modify-identity-id-format --resource snapshot --use-long-ids/
--principal-arn arn:aws:iam::xxxxxxxxxxxx:role/EC2Role
適用後、スナップショットを作成してみました。
$ aws ec2 create-snapshot --volume-id vol-xxxxxxxx
{
"Description": "",
"Encrypted": false,
"VolumeId": "vol-xxxxxxxx",
"State": "pending",
"VolumeSize": 8,
"Progress": "",
"StartTime": "2016-07-14T23:24:31.000Z",
"SnapshotId": "snap-0c873622664c2xxxxx",
"OwnerId": "xxxxxxxxxxxx"
}
resourceに指定できる形式
instance
, reservation
, snapshot
, volume
のいずれかを指定します。
allとかはないので、すべて適用するにはコマンドを4回実行してください。
長いID形式のオン/オフ
--use-long-ids
で長いID形式のオン、 --no-use-long-ids
で長いID形式のオフになります。
principal-arn
IAMユーザのARNまたは、IAMロールのARNを指定してください。
現在の設定を確認する
ec2 describe-identity-id-format
を使えば、現在の長いID形式が有効化どうかを確認できます。
$ aws ec2 describe-identity-id-format --principal-arn arn:aws:iam::xxxxxxxxxxxx:role/EC2Role
{
"Statuses": [
{
"UseLongIds": false,
"Resource": "reservation"
},
{
"UseLongIds": false,
"Resource": "instance"
},
{
"UseLongIds": false,
"Resource": "volume"
},
{
"UseLongIds": true,
"Resource": "snapshot"
}
]
}
まとめ
IAM Role単位で長いID形式への適用ができるようになりました。 まずは検証環境や開発環境のEC2インスタンスで利用しているIAM Roleに適用していきましょう。 こんな場合もあるので、環境毎にIAM Roleはわけておくと安心ですね。
なお、似たコマンドでmodify-id-formatもあります。 こちらは、コマンドを実行したユーザに対して、長いID形式を適用しますのでご注意ください。