

# Amazon ECS サービスデプロイのライフサイクルフック
<a name="deployment-lifecycle-hooks"></a>

デプロイが開始されると、ライフサイクルステージが進行されます。各ステージは、`IN_PROGRESS` や `SUCCEEDED` などの状態になります。ライフサイクルフックを特定の段階で設定して、カスタムロジックを実行したり、デプロイが進む前に決定ポイントを導入したりできます。Amazon ECS は、次の 2 種類のライフサイクルフックに対応しています。

Lambda フック  
Amazon ECS は、デプロイの特定の段階で Lambda 関数を呼び出します。関数にはカスタムロジックが含まれており、続行する方法を Amazon ECS に伝えるには `SUCCEEDED`、`FAILED`、または `IN_PROGRESS` の `hookStatus` を含む JSON オブジェクトを返す必要があります。デプロイが進む前に、これらのフックを使用して、検証テストの実行、ガバナンスポリシーの適用、カスタム承認ステップの実装を行うことができます。詳細については、「[Amazon ECS サービスデプロイの Lambda フック](lambda-lifecycle-hooks.md)」を参照してください。

フックを一時停止する  
Amazon ECS は、設定されたライフサイクルステージでデプロイを一時停止し、`ContinueServiceDeployment` API を呼び出して続行またはロールバックを待ちます。一時停止中は、手動承認、既存ツールとの統合テスト、運用準備チェック、CI/CD パイプラインステップなど、独自のワークフローを外部で実行できます。詳細については、「[Amazon ECS サービスデプロイの一時停止フック](pause-lifecycle-hooks.md)」を参照してください。

Lambda フックと一時停止フックの両方を同じライフサイクルステージで設定できます。デプロイが次のステージに進む前に、両方のフックを完了する必要があります。

## ライフサイクルフックの詳細
<a name="lifecycle-hook-details-overview"></a>

デプロイ中にフックがアクティブになると、`DescribeServiceDeployments` を呼び出してそのステータスを表示できます。レスポンスには、アクティブなフックごとに次のフィールドを持つ `lifecycleHookDetails` 配列が含まれます。


| フィールド | 説明 | 
| --- | --- | 
| hookId | このフック実行の一意の識別子。この値は、一時停止フックの ContinueServiceDeployment を呼び出すときに使用します。 | 
| targetType | フックのタイプ: AWS\_LAMBDA または PAUSE。 | 
| targetArn | フックターゲットの ARN。Lambda フックの場合、これは Lambda 関数 ARN です。一時停止フックの場合、このフィールドは設定されません。 | 
| status | フックの現在のステータス: AWAITING\_ACTION、IN\_PROGRESS、SUCCEEDED、FAILED、または TIMED\_OUT。 | 
| expiresAt | フックの有効期限が切れる日時。(例: 2026-05-06T12:06:49-07:00) | 
| timeoutAction | フックがタイムアウトしたときに Amazon ECS が実行するアクション: ROLLBACK または CONTINUE。 | 

## ライフサイクルステージのカテゴリ
<a name="lifecycle-stage-categories"></a>

ライフサイクルステージは 2 つのカテゴリに分類されます。

1. **1 回呼び出しステージ** – Amazon ECS は、サービスのデプロイ中にこれらのステージを 1 回だけ呼び出します。
   + `RECONCILE_SERVICE`
   + `PRE_SCALE_UP`
   + `POST_SCALE_UP`
   + `TEST_TRAFFIC_SHIFT`
   + `POST_TEST_TRAFFIC_SHIFT`
   + `POST_PRODUCTION_TRAFFIC_SHIFT`

1. **反復呼び出しステージ** – Amazon ECS は、サービスのデプロイ中にこれらのステージを複数回呼び出すことができます。線形デプロイとカナリアデプロイの場合、これらのステージはトラフィックシフトの各ステップで呼び出されます。
   + `PRE_PRODUCTION_TRAFFIC_SHIFT`
   + `PRODUCTION_TRAFFIC_SHIFT`

**注記**  
これらのステージはロールバック中に呼び出されるため、一時停止フックを `TEST_TRAFFIC_SHIFT` または `PRODUCTION_TRAFFIC_SHIFT` に設定することはできません。ロールバック中に一時停止するには、ロールバックを完了するための追加の `ContinueServiceDeployment` 呼び出しが必要になります。

## フックタイプ別のサポートされているステージ
<a name="lifecycle-hooks-supported-stages"></a>


| ライフサイクルステージ | Lambda フック | フックを一時停止する | 
| --- | --- | --- | 
| RECONCILE\_SERVICE | はい | はい | 
| PRE\_SCALE\_UP | はい | はい | 
| POST\_SCALE\_UP | はい | はい | 
| TEST\_TRAFFIC\_SHIFT | はい | いいえ | 
| POST\_TEST\_TRAFFIC\_SHIFT | はい | はい | 
| PRE\_PRODUCTION\_TRAFFIC\_SHIFT | はい | はい | 
| PRODUCTION\_TRAFFIC\_SHIFT | はい | いいえ | 
| POST\_PRODUCTION\_TRAFFIC\_SHIFT | はい | はい | 