[新機能] 長い形式IDのIAM Role単位での適用
渡辺です。 普段は札幌で仕事していますが、現在東京に出張中です。 はい、暑くてしにそうです・・・。
さて、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形式を適用しますのでご注意ください。