私はAWSのCloudFormationを使用していますが、最近、ポリシーを作成してアタッチしたロールがECSタスクからメッセージをSimple Queue Service(SQS)キューに送信できなかった理由を解明するためにかなりの時間を費やしました。
ポリシーをExecution Role
にアタッチする必要があったときに、SQS許可ポリシーをTask Role
に誤ってアタッチしていたことに気付きました。 2つの役割の違いを説明する適切なドキュメントが見つかりません。それらの2つのCloudFormationのドキュメントは次のとおりです。 ExecutionRole および TaskRole
ドキュメント を参照すると、実行ロールが、イメージのプルやクラウドウォッチでのアプリケーションログの保存などのECSアクションを実行するIAMロールであることがわかります。
TaskRoleは、タスク自体が使用するIAMロールです。たとえば、コンテナがS3、SQSなどの他のAWSサービスを呼び出す場合、これらのアクセス許可はTaskRoleでカバーする必要があります。
ポイントをホームに戻すために、TaskRoleの代わりにコンテナインスタンスの構成ファイルでアクセスキーを使用できます。