

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 失敗したステージまたは失敗したアクションのステージ再試行の設定
<a name="stage-retry"></a>

パイプラインを最初から再実行することなく、失敗したステージを再試行できます。そのためには、ステージ内の失敗したアクションを再試行するか、ステージ内の最初のアクションから始めてステージ内のすべてのアクションを再試行します。ステージ内の失敗したアクションを再試行する場合、進行中のすべてのアクションはそのまま動作し続け、失敗したアクションは再度トリガーされます。失敗したアクションのあるステージ内で最初のアクションから再試行する場合、ステージに進行中のアクションがないことが必要です。ステージを再試行するには、すべてのアクションが失敗しているか、一部のアクションが失敗して他のアクションが成功している必要があります。

**重要**  
失敗したステージを再試行すると、そのステージ内の最初のアクションからすべてのアクションが再試行されます。失敗したアクションを再試行すると、ステージ内のすべての失敗したアクションが再試行されます。これにより、同じ実行内で以前に成功したアクションの出力アーティファクトは上書きされます。  
アーティファクトが上書きされても、以前に成功したアクションの実行履歴は保持されます。

コンソールを使用してパイプラインを表示している場合、再試行できるステージに [**ステージの再試行**] ボタンまたは [**失敗したアクションの再試行**] ボタンが表示されます。

 AWS CLI を使用している場合は、 **get-pipeline-state** コマンドを使用して、アクションが失敗したかどうかを判断できます。

**注記**  
次の場合は、ステージを再試行できないことがあります。  
ステージ内のすべてのアクションが成功したため、ステージが失敗ステータスになっていない。
ステージが失敗した後、パイプライン全体の構造が変更された。
ステージで別の再試行がすでに進行中です。

**Topics**
+ [ステージ再試行に関する考慮事項](#stage-retry-considerations)
+ [失敗したステージを手動で再試行する](#stage-retry-manual)
+ [ステージ障害時の自動再試行を設定する](#stage-retry-auto)

## ステージ再試行に関する考慮事項
<a name="stage-retry-considerations"></a>

ステージ再試行に関する考慮事項は以下のとおりです。
+ ステージ障害時の自動再試行は、1 回の再試行に対してのみ設定できます。
+ ステージ障害時の自動再試行は、`Source` アクションを含むすべてのアクションに対して設定できます。

## 失敗したステージを手動で再試行する
<a name="stage-retry-manual"></a>

コンソールまたは CLI を使用して、失敗したステージを手動で再試行できます。

「[ステージ障害時の自動再試行を設定する](#stage-retry-auto)」で説明しているように、障害時に自動的に再試行するようにステージを設定することもできます。

### 失敗したステージを手動で再試行する (コンソール)
<a name="stage-retry-console"></a><a name="proc-stage-retry-console"></a>

**失敗したステージまたはステージ内の失敗したアクションを再試行するには**

1. にサインイン AWS マネジメントコンソール し、[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) で CodePipeline コンソールを開きます。

    AWS アカウントに関連付けられているすべてのパイプラインの名前が表示されます。

1.  [**Name**] で、パイプラインの名前を選択します。

1. 失敗したアクションのあるステージを見つけ、次のいずれかを選択します。
   + ステージ内のすべてのアクションを再試行するには、[**ステージの再試行**] を選択します。
   + ステージ内の失敗したアクションのみを再試行するには、[**失敗したアクションの再試行**] を選択します。  
![CodeCommit ソースステージと失敗した CodeDeploy デプロイステージを含むパイプラインの例](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/retry-failed-stage.png)

   再試行したアクションがすべて正常に完了した場合、パイプラインは続行されます。

### 失敗したステージを手動で再試行する (CLI)
<a name="stage-retry-cli"></a>

**失敗したステージまたはステージ内の失敗したアクションを再試行するには - CLI**

を使用してすべてのアクションまたは失敗したすべてのアクション AWS CLI を再試行するには、次のパラメータを指定して **retry-stage-execution** コマンドを実行します。

```
--pipeline-name <value>
--stage-name <value>
--pipeline-execution-id <value>
--retry-mode ALL_ACTIONS/FAILED_ACTIONS
```
**注記**  
`retry-mode` に使用できる値は `FAILED_ACTIONS` と `ALL_ACTIONS` です。

1. ターミナル (Linux、macOS、UNIX) またはコマンドプロンプト (Windows) で、[https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html) コマンドを実行します。次の例では、`MyPipeline` という名前のパイプラインに対して実行しています。

   ```
   aws codepipeline retry-stage-execution --pipeline-name MyPipeline --stage-name Deploy --pipeline-execution-id b59babff-5f34-EXAMPLE --retry-mode FAILED_ACTIONS
   ```

   出力は実行 ID を返します。

   ```
   {
       "pipelineExecutionId": "b59babff-5f34-EXAMPLE"
   }
   ```

1. JSON 入力ファイルを使用してコマンドを実行することもできます。まず、パイプライン、失敗したアクションを含むステージ、そのステージでの最新のパイプラインの実行を識別する JSON ファイルを作成します。その後、**retry-stage-execution** コマンドに `--cli-input-json` パラメータを指定して実行します。JSON ファイルに必要な詳細を取得するには、**get-pipeline-state** コマンドを使用するのが最も簡単です。

   1. ターミナル (Linux、macOS、UNIX) またはコマンドプロンプト (Windows) で、パイプラインの [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html) コマンドを実行します。例えば、「MyFirstPipeline」という名前のパイプラインに対しては、以下のようなコマンドを入力します。

      ```
      aws codepipeline get-pipeline-state --name {{MyFirstPipeline}}
      ```

      コマンドに対する応答には、各ステージのパイプラインの状態情報が含まれます。以下の例では、応答は [Staging] ステージで 1 つ以上のアクションが失敗したことを示しています。

      ```
      {
          "updated": 1427245911.525,
          "created": 1427245911.525,
          "pipelineVersion": 1,
          "pipelineName": "MyFirstPipeline",
          "stageStates": [
              {
                  "actionStates": [...],
                  "stageName": "Source",
                  "latestExecution": {
                      "pipelineExecutionId": "9811f7cb-7cf7-SUCCESS",
                      "status": "Succeeded"
                  }
              },
              {{{
                  "actionStates": [...],
                  "stageName": "Staging",
                  "latestExecution": {
                      "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
                      "status": "Failed"
                  }}}
              }
          ]
      }
      ```

   1. プレーンテキストエディタで、JSON 形式で以下の情報を記録するファイルを作成します。
      + 失敗したアクションを含むパイプラインの名前
      + 失敗したアクションを含むステージの名前
      + ステージでの最新のパイプラインの実行 ID
      + 再試行モード

      先ほどの MyFirstPipeline の例では、ファイルは以下のようになります。

      ```
      {
          "pipelineName": "MyFirstPipeline",
          "stageName": "Staging",
          "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
          "retryMode": "FAILED_ACTIONS"
      }
      ```

   1. **retry-failed-actions.json** のような名前でファイルを保存します。

   1. [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html) コマンドを実行したときに作成したファイルを呼び出します。例: 
**重要**  
ファイル名の前に必ず `file://` を含めてください。このコマンドでは必須です。

      ```
      aws codepipeline retry-stage-execution --cli-input-json file://retry-failed-actions.json
      ```

   1. 再試行の結果を表示するには、CodePipeline コンソールを開いてから、失敗したアクションが含まれるパイプラインを選択するか、もう一度 **get-pipeline-state** コマンドを使用します。詳細については、「[CodePipeline でパイプラインと詳細を表示する](pipelines-view.md)」を参照してください。

## ステージ障害時の自動再試行を設定する
<a name="stage-retry-auto"></a>

ステージ障害時の自動再試行を設定できます。ステージは 1 回の再試行を行い、失敗したステージの再試行ステータスを **[パイプラインを表示する]** ページに表示します。

再試行モードを設定するには、自動再試行の対象を、失敗したステージ内のすべてのアクションにするか、失敗したアクションのみにするかを指定します。

### ステージ障害時の自動再試行を設定する (コンソール）
<a name="stage-retry-auto-console"></a>

コンソールを使用して、自動的に再試行するようにステージを設定できます。

**自動的に再試行するようにステージを設定する (コンソール）**

1. にサインイン AWS マネジメントコンソール し、[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) で CodePipeline コンソールを開きます。

    AWS アカウントに関連付けられているすべてのパイプラインの名前とステータスが表示されます。

1. **[名前]** で、編集するパイプラインの名前を選択します。

1. パイプライン詳細ページで、[**編集**] を選択します。

1. **[編集]** ページで、編集するアクションに関連する **[ステージを編集する]** を選択します。

1. **[自動ステージ設定]**、**[ステージ障害時の自動再試行を有効にする]** の順に選択します。パイプラインに変更を保存します。

1. **[自動ステージ設定]** で、次のいずれかの再試行モードを選択します。
   + ステージ内のすべてのアクションを再試行するように指定するには、**[失敗したステージを再試行]** を選択します。
   + ステージ内の失敗したアクションのみを再試行するように指定するには、**[失敗したアクションを再試行]** を選択します。

   パイプラインに変更を保存します。  
![CodePipeline でのステージ障害時の自動再試行を設定する編集画面の例。](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/retry-configure.png)

1. パイプラインの実行後に、ステージの障害が発生した場合は、自動再試行が行われます。以下の例は、自動的に再試行されたビルドステージを示しています。  
![ステージが失敗して一度再試行されたパイプラインの例。](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/stage-auto-retry-example.png)

1. 再試行の詳細を表示するには、[詳細を表示] を選択します。ウィンドウが表示されます。  
![試行が 1 回あったことを示す再試行ステージメタデータウィンドウの例。](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/retry-stage-metadata.png)

### 自動的に再試行するようにステージを設定する (CLI)
<a name="stage-retry-auto-cli"></a>

を使用して、障害時に自動的に再試行するようにステージ AWS CLI を設定するには、 コマンドを使用して、 [パイプライン、ステージ、アクションを作成する](pipelines-create.md)および で説明されているようにパイプラインを作成または更新します[CodePipeline でパイプラインを編集する](pipelines-edit.md)。
+ ターミナル (Linux、macOS、Unix) またはコマンドプロンプト (Windows) を開きます。次に AWS CLI を使用し、パイプライン構造の失敗条件を指定して `update-pipeline` コマンドを実行します。次の例では、`S3Deploy` という名前のステージの自動再試行を設定します。

  ```
  {
                  "name": "S3Deploy",
                  "actions": [
                      {
                          "name": "s3deployaction",
                          "actionTypeId": {
                              "category": "Deploy",
                              "owner": "AWS",
                              "provider": "S3",
                              "version": "1"
                          },
                          "runOrder": 1,
                          "configuration": {
                              "BucketName": "static-website-bucket",
                              "Extract": "false",
                              "ObjectKey": "SampleApp.zip"
                          },
                          "outputArtifacts": [],
                          "inputArtifacts": [
                              {
                                  "name": "SourceArtifact"
                              }
                          ],
                          "region": "us-east-1"
                      }
                  ],
                   "onFailure": {
                      "result": "RETRY",
                      "retryConfiguration": {
                          "retryMode": "ALL_ACTIONS",
                      },
              }
  ```

### 自動的に再試行するようにステージを設定する (CloudFormation）
<a name="stage-retry-auto-cfn"></a>

 CloudFormation を使用して、障害発生時の自動再試行用にステージを設定するには、`OnFailure`ステージライフサイクルパラメータを使用します。`RetryConfiguration` パラメータを使用して再試行モードを設定します。

```
OnFailure:
     Result: RETRY
     RetryConfiguration: 
         RetryMode: ALL_ACTIONS
```
+ 次のスニペットに示すように、テンプレートを更新します。次の例では、`Release` という名前のステージの自動再試行を設定します。

  ```
  AppPipeline: 
    Type: AWS::CodePipeline::Pipeline 
    Properties: 
      RoleArn:
        Ref: CodePipelineServiceRole 
      Stages: 
        - 
          Name: Source 
          Actions: 
            - 
              Name: SourceAction
              ActionTypeId: 
                Category: Source 
                Owner: AWS 
                Version: 1 
                Provider: S3 
              OutputArtifacts: 
                - 
                  Name: SourceOutput 
              Configuration: 
                S3Bucket: 
                  Ref: SourceS3Bucket 
                S3ObjectKey: 
                  Ref: SourceS3ObjectKey 
              RunOrder: 1  
        - 
          Name: Release 
          Actions: 
            - 
              Name: ReleaseAction
              InputArtifacts: 
                - 
                  Name: SourceOutput 
              ActionTypeId: 
                Category: Deploy 
                Owner: AWS 
                Version: 1
                Provider: CodeDeploy 
              Configuration: 
                ApplicationName: 
                  Ref: ApplicationName
                DeploymentGroupName: 
                  Ref: DeploymentGroupName 
              RunOrder: 1   
         OnFailure:
             Result: RETRY
             RetryConfiguration: 
                RetryMode: ALL_ACTIONS
      ArtifactStore: 
        Type: S3 
        Location:
          Ref: ArtifactStoreS3Location 
        EncryptionKey:
          Id: arn:aws:kms:useast-1:ACCOUNT-ID:key/KEY-ID
          Type: KMS
      DisableInboundStageTransitions: 
        - 
          StageName: Release 
          Reason: "Disabling the transition until integration tests are completed"
      Tags:
        - Key: Project
          Value: ProjectA
        - Key: IsContainerBased
          Value: 'true'
  ```

  障害時にステージを再試行するように設定する方法の詳細については、「*CloudFormation ユーザーガイド*」で「`StageDeclaration`」の「[OnFailure](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onfailure)」を参照してください。