スキップしてコンテンツを表示

ステータスコールバックを待っている間にデプロイがタイムアウトしたときに AWS CodeDeploy で発生するエラーを解決する方法を教えてください。

所要時間1分
0

AWS CodeDeploy のデプロイがタイムアウトし、次のエラーが返されます。 「ステータスコールバックを待っている間にデプロイがタイムアウトしました。CodeDeploy は、デプロイフックが呼び出されてから 1 時間以内にステータスコールバックを受け取ることを想定しています。」

簡単な説明

この問題は、CodeDeploy を使用して検証テストを行った Amazon Elastic Container Service (Amazon ECS) サービスをデプロイするときに発生する可能性があります。

ライフサイクルイベントフックが呼び出されてから 60 分以内にテストで Succeeded または Failed の応答が返されない場合、CodeDeploy は次のエラーを返します。

「ステータスコールバックを待っている間にデプロイがタイムアウトしました。CodeDeploy は、デプロイフックが呼び出されてから 1 時間以内にステータスコールバックを受け取ることを想定しています。」

注: ライフサイクルフック AWS Lambda 関数では、ステータスコールバックのデフォルトのタイムアウト制限は 60 分です。

エラーを解決するには、ライフサイクルフック Lambda 関数に必要なメソッドと AWS Identity and Access Management (IAM) アクセス許可があることを確認します。

解決策

CloudWatch ログを確認してエラーの原因を確認する

手順については、「Amazon CloudWatch Logs からログデータを取得する方法を教えてください」を参照してください。

ライフサイクルフック Lambda 関数に必要な IAM アクセス許可があることを確認する

ライフサイクルフック Lambda 関数に、次のアクセス許可を含む実行ロールがあることを確認してください。 PutLifecycleEventHookExecutionStatus

注: PutLifecycleEventHookExecutionStatus アクセス許可は、AWS により管理される CodeDeployFullAccess IAM ポリシーにはデフォルトでは含まれていません。

次の PutLifecycleEventHookExecutionStatus アクセス許可ステートメント例を参照してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "codedeploy:PutLifecycleEventHookExecutionStatus",
      "Resource": "*"
    }
  ]
}

ライフサイクルフック Lambda 関数に、CodeDeploy にステータス応答を返すために必要なメソッドが含まれていることを確認する

ライフサイクルフック Lambda 関数に putLifecycleEventHookExecutionStatus メソッドが含まれていることを確認してください。

詳細については、CodeDeploy ユーザーガイドの「ステップ 3: ライフサイクルフック Lambda 関数を作成する」を参照してください。

ライフサイクルフック Lambda 関数用の putLifecycleEventHookExecutionStatus メソッド例を次に示します。

codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
     if (err) {
          // Validation failed.
          console.log('AfterAllowTestTraffic validation tests failed');
          console.log(err, err.stack);
          callback("CodeDeploy Status update failed");
     } else {
          // Validation succeeded.
          console.log("AfterAllowTestTraffic validation tests succeeded");callback(null, "AfterAllowTestTraffic validation tests succeeded");
         }
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ