Amazon ECS の AWS Secrets Manager シークレットに関連する問題のトラブルシューティングを行うにはどうすればよいですか?

最終更新日: 2022 年 3 月 30 日

AWS Secrets Manager シークレットを使用するタスクを Amazon Elastic Container Services (Amazon ECS) に配置しようとすると、次のいずれかのエラーが発生します。

  • AWS Fargate での ResourceInitializationError エラー
  • Amazon Elastic Compute Cloud (Amazon EC2) での AccessDenied エラー

タスクは Secrets Manager からシークレットを取得できず、失敗します。

簡単な説明

次のいずれかの理由により、これらのエラーメッセージが表示されます。

  • Amazon ECS タスク実行ロールには、Secrets Manager シークレットにアクセスするために必要な権限がありません。
  • Secrets Manager は、指定されたシークレットを見つけることができません。
  • シークレットの名前は、ハイフンとそれに続く 6 文字で終わります。これにより、部分的な ARN を使用してシークレットを検索すると、予期しない結果が返されます。
  • Amazon 仮想プライベートクラウド (Amazon VPC) ネットワーク設定に問題があります。

解決方法

ECS タスク実行ロールに必要な許可があることを確認してください

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、[ロール] を選択します。
  3. ECS タスクが使用しているタスク実行ロールのロールのリストを検索します。
  4. タスク実行ロールに、必要なシークレットマネージャーリソースにアクセスするために必要な許可があることを確認します。

Secrets Manager シークレットが存在することを確認します

  1. Secrets Manager コンソールを開きます。
  2. シークレットリストページで、ECSタスクが使用しているシークレットを選択します。
  3. ECS タスク定義にこれらの特定のシークレット名が含まれていることを確認してください。シークレットで追加のパラメータを指定した場合は、タスク定義にシークレットで指定されたjson-key/version-stage/version-idが含まれていることを確認してください。

Secrets Manager シークレットの名前と ARN を確認してください

シークレット名がハイフンとそれに続く6文字で終わっているかどうかを確認します (例: myappsecret-xxxxxx)。Secrets Manager は、ARN の最後のシークレット名の後にハイフンと 6 つのランダムな文字を自動的に追加します。したがって、シークレット名をハイフンの後に 6 文字で終わらせないことをお勧めします。これを行うと、部分的な ARN を使用してシークレットを検索したときに、予期しない結果が返される場合があります。この問題を解決するには、Secrets Manager からのシークレットの完全な ARN (追加のハイフンと6文字を含む) を使用していることを確認してください。

VPC ネットワーク構成により、Amazon ECS インフラストラクチャが Secrets Manager に到達できることを確認します

次の条件が当てはまる場合は、Secrets Manager のインターフェイス VPC エンドポイントを作成します

  • Secrets Manager のシークレットを参照するタスク定義を使用して、コンテナーの機密データを取得しています。
  • インターフェイス VPC エンドポイントを使用しています。

また、VPC エンドポイントのセキュリティグループが ECS インフラストラクチャでこれらのエンドポイントを使用できるようにしていることを確認してください。

Secrets Managerの VPC エンドポイントが存在するかどうかを確認するには、次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。
  3. Secrets Manager の VPC エンドポイントcom.amazonaws.example-region.secretsmanagerがエンドポイントのリストに含まれていることを確認してください。
  4. エンドポイントのリストからエンドポイントを選択し、[Subnets] (サブネット) タブを選択します。このエンドポイントのサブネットに、ECS タスクで使用されるサブネットが含まれていることを確認してください。
    注:サブネットが表示されない場合は、[Manage Subnets] を選択します。次に、アベイラビリティーゾーンに基づいてサブネットを選択し、[Modify Subnets] (サブネットの変更) を選択します。

エンドポイントcom.amazonaws.example-region.secretsmanagerに接続されているセキュリティグループが Amazon ECS タスクからのポート 443 での着信接続を許可していることを確認するには、次の手順を実行します。

  1. エンドポイントのリストからエンドポイントを選択します。
  2. [Security Groups] (セキュリティグループ) タブを選択します。
  3. チェックするセキュリティグループのグループ IDを選択します。
  4. [インバウンドのルール] タブを選択します。
  5. インバウンドルールのリストに、ECS タスクからの 443 接続を許可するルールが含まれていることを確認します。