EC2 インスタンスにつけた IAM ロールが反映されるまで
ナスです。
今日は IAM ロールに小一時間ほど悩まされたので、今度こそ忘れずに書いておきます。今度こそと書いたのは、過去に似たような内容の記事を書いていたのに完全に忘れていたからです…
IAM ロールが効いていない?
EC2 インスタンスにスクリプトを置いてそこから実行できるように IAM ロールを付けたんですが、いつまで経っても AWS CLI が実行できなかったんです。テストで下記コマンドを試したらこうなりました。
[ec2-user@ip-172-31-43-xxx ~]$ aws sts get-caller-identity 'AccessKeyId' [ec2-user@ip-172-31-43-xxx~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/admin_role { "Code" : "AssumeRoleUnauthorizedAccess", "Message" : "EC2 cannot assume the role admin_role. Please see documentation at http://docs.amazonwebservices.com/IAM/latest/UserGuide/RolesTroubleshooting.html.", "LastUpdated" : "2018-04-10T02:48:40Z" }
ん? IAM ロールはついてるし権限もちゃんとつけてるしなんで??って思っていろいろ調べてからまた同じコマンドを実行してもダメで
[ec2-user@ip-172-31-43-xxx~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/admin_role { "Code" : "AssumeRoleUnauthorizedAccess", "Message" : "EC2 cannot assume the role admin_role. Please see documentation at http://docs.amazonwebservices.com/IAM/latest/UserGuide/RolesTroubleshooting.html.", "LastUpdated" : "2018-04-10T02:56:57Z" }
この時点で 2 回のコマンド実行の間隔は 8 分経過でした。
あ!再起動すればいいのか?
昔は起動済みのインスタンスには IAM ロールをつけられなかったので、再起動すればいいかも!って思って再起動したらうまくいきました。
[ec2-user@ip-172-31-43-xxx~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/admin_role { "Code" : "Success", "LastUpdated" : "2018-04-10T02:58:04Z", "Type" : "AWS-HMAC", "AccessKeyId" : "AAAAAAAAAAAAAAAAAAAA", "SecretAccessKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Token" : "ZZZZZZZZZ...長いので省略", "Expiration" : "2018-04-10T09:27:01Z" } [ec2-user@ip-172-31-43-xxx~]$ aws sts get-caller-identity { "Account": "123456789012", "UserId": "AAAAAAAAAAAAAAAAAA:i-1234567890abcdefg", "Arn": "arn:aws:sts::123456789012:assumed-role/admin_role/i-1234567890abcdefg" } [ec2-user@ip-172-31-43-xxx~]$ aws s3 ls 2018-04-10 02:17:01 nasutest1
同じ事例ないか調べてたら…
ありました。自分で書いた記事が…
nasrinjp1.hatenablog.com
この時は Linux で 5 分程度待てば IAM ロールが反映されたみたいですが、今回は 8 分待ってもダメだったので、OS はあまり関係なく、AWS 側で定期的にジョブか何かでチェックしてるんですかねー
というわけで、今回の件で IAM ロールはすぐには反映されないことを覚えた(はず…