This page looks best with JavaScript enabled

IAMのリソースを作成直後にEC2や、ECSに紐づけるとエラーになる

 ·  ☕ 1 min read

先日、IAMロールをプログラム上で作成、その直後にECSタスクのタスクロールとして設定しようとしたらエラーになって時間を溶かしてしまいました。
その原因と解決策を記録しておこうと思います。

エラーになるサンプルコード

https://github.com/ippachi/aws-role-test/tree/error

EC2インスタンスに作成したInstance profileを紐づける例です。
このコードを走らせると

2021/01/30 16:00:49 InvalidParameterValue: Value (arn:aws:iam::xxx:instance-profile/aws-role-test) for parameter iamInstanceProfile.arn is invalid. Invalid IAM Instance Profile ARN

のようなエラーが出ます。

うまくいくコード

https://github.com/ippachi/aws-role-test/tree/no-error

2021/01/30 16:05:43 DryRunOperation: Request would have succeeded, but DryRun flag is set.

違いは1行のみで

https://github.com/ippachi/aws-role-test/blob/no-error/main.go#L37

この行で15秒間sleepをしただけです。
実際に問題になったコードでは単にsleepではなく、5秒ごとにリトライをするようにしました。

原因

あくまで推測ですが、IAM内で作成したリソースをIAM外が認識できるようになるまでにタイムラグがあるようです。
なのでIAMで作成したリソースを紐付けたい場合はちょっと待ってあげましょう。

まとめ

この問題で2時間溶かしました。

Share on

ippachi
WRITTEN BY
ippachi
Software Developer