EC2コンテナサービスを使用しようとしています。テラフォームを使用して作成しています。 ecsクラスター、自動スケーリンググループ、起動構成を定義しました。すべてうまくいくようです。 1つを除いて。 ec2インスタンスは作成中ですが、クラスターに登録されていません。クラスターは、使用可能なインスタンスがないと言っているだけです。
作成されたインスタンスのecsエージェントログで、ログに1つのエラーが殺到していることがわかりました。
登録エラー:NoCredentialProviders:チェーンに有効なプロバイダーがありません
Ec2インスタンスは、適切なロールecs_roleで作成されます。この役割には2つのポリシーがあり、必要なドキュメントのように、そのうちの1つは次のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:CreateCluster",
"ecs:DeregisterContainerInstance",
"ecs:DiscoverPollEndpoint",
"ecs:Poll",
"ecs:RegisterContainerInstance",
"ecs:StartTelemetrySession",
"ecs:Submit*",
"ecs:StartTask"
],
"Resource": "*"
}
]
}
AMIを使用しています AMI-6ff4bd05 。最新のテラフォーム。
ロールにはec2が含まれている必要があるため、ロールの信頼関係に問題がありました。残念ながら、エラーメッセージはそれほど役に立ちませんでした。
信頼関係の例:
{
"Version": "2008-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": ["ecs.amazonaws.com", "ec2.amazonaws.com"]
},
"Effect": "Allow"
}
]
}
EC2のロールにAmazonEC2RoleforSSM(またはAmazonSSMFullAccess)を追加することをお勧めします。
明らかに、このエラーメッセージは、無効なaws-profileが渡された場合にも発生します。