[新機能] 長い形式IDのIAM Role単位での適用

この記事は公開されてから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形式を適用しますのでご注意ください。