Amazon Elastic Container Service (Amazon ECS) または AWS Fargate タスクを実行すると、"ECS was unable to assume the role" というエラーが表示されます。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
IAM ロールまたは信頼関係を誤って設定した場合、次のエラーが表示されることがあります。
"ECS was unable to assume the role 'arn:aws:iam::444455556666:role/Admin' that was provided for this task.Please verify that the role being passed has the proper trust relationship and permissions and that your IAM user has permissions to pass this role."
解決するには、タスクロールに正しい信頼ポリシーがあることを確認し、IAM ロールに必要な IAM アクセス許可を使用していることを確認します。
タスクロールのアクセス許可を確認する
タスク定義に IAM ロールの正しいアクセス許可が含まれていることを確認してください。タスクロールのアクセス許可を確認するには、次の手順を実行します。
- IAM コンソールを開きます。
- ナビゲーションペインで [ロール] を選択します。
- タスク定義のタスクロールを選択します。
- get-role AWS CLI コマンドを実行して、タスクロールに関する情報を確認します。
aws iam get-role --role-name task-execution-role
注: task-execution-role は、タスクの IAM ロールの名前に置き換えてください。
タスクロールがない場合は、タスクの IAM ロールを作成します。
ecs-tasks.amazonaws.com の信頼ポリシーを設定する
Amazon ECS タスクが IAM ロールを引き受けるようにするには、ecs-tasks.amazonaws.com サービスを許可するように信頼ポリシーを設定します。
次の手順を実行します。
-
IAM コンソールを開きます。
-
ナビゲーションペインで [ロール] を選択します。
-
タスクロールを選択し、次に [信頼関係] を選択します。
-
信頼ポリシーのサービスとして ecs-tasks.amazonaws.com が含まれていることを確認します。
ポリシー例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
ecs-tasks.amazonaws.com をサービスとして設定していない場合は、[信頼ポリシーの編集] を選択します。
上記のサンプルポリシーを使用してポリシーを更新し、[ポリシーの更新] を選択します。
-
タスク定義で、完全な IAM ロールの ARN を指定します。例えば、arn:aws:iam::444455556666:role/ecsTaskRole などです。詳細については、「Updating an Amazon ECS task definition using the console (コンソールを使用した Amazon ECS タスク定義の更新)」を参照してください。
-
Amazon ECS タスクを起動する IAM ユーザーまたはロールに iam:PassRole アクセス許可があることを確認します。
関連情報
IAM ロールのトラブルシューティング
Amazon ECS タスク実行 IAM ロール
Amazon Elastic Container Service のアイデンティティとアクセスのトラブルシューティング