sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

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 ロールはすぐには反映されないことを覚えた(はず…