

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 롤백 또는 재시도 스테이지
<a name="pipelines-stages"></a>

AWS CodePipeline 콘솔 또는 AWS CLI를 사용하여 스테이지 또는 스테이지의 작업을 수동으로 롤백하거나 재시도할 수 있습니다. 롤백 또는 재시도를 구성된 결과로 사용하려는 단계의 조건을 구성하려면 [스테이지에 대한 조건 구성](stage-conditions.md) 섹션을 참조하세요.

**Topics**
+ [

# 실패한 스테이지 또는 실패한 작업에 대해 스테이지 재시도 구성
](stage-retry.md)
+ [

# 스테이지 롤백 구성
](stage-rollback.md)

# 실패한 스테이지 또는 실패한 작업에 대해 스테이지 재시도 구성
<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>

스테이지 재시도에 대한 고려 사항은 다음과 같습니다.
+ 재시도 횟수 한 번에 스테이지 실패 시 자동 재시도를 구성할 수 있습니다.
+ `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 Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름이 표시됩니다.

1.  **이름**에서 파이프라인의 이름을 선택합니다.

1. 실패한 작업이 있는 단계를 찾은 다음, 다음 중 하나를 선택합니다.
   + 단계의 모든 작업을 재시도하려면 **단계 재시도**를 선택합니다.
   + 단계에서 실패한 작업만 다시 시도하려면 **실패한 작업 재시도**를 선택합니다.  
![\[CodeCommit 소스 단계와 실패한 CodeDeploy 배포 단계가 있는 예제 파이프라인\]](http://docs.aws.amazon.com/ko_kr/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)에서, `MyPipeline`이라는 파이프라인의 다음 예제에서와 같이 [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) 명령을 실행합니다.

   ```
   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 파일을 먼저 만듭니다. `--cli-input-json` 파라미터와 함께 **retry-stage-execution** 명령을 실행합니다. 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
      ```

      명령에 대한 응답에는 각 단계의 파이프라인 상태 정보가 포함됩니다. 다음 예에서는 응답이 하나 이상의 작업이 스테이징 단계에서 실패했음을 나타냅니다.

      ```
      {
          "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>

실패 시 자동 재시도를 위한 스테이지를 구성할 수 있습니다. 스테이지가 한 번 재시도를 시도하고 실패한 스테이지의 재시도 상태를 파이프라인 **보기** 페이지에 표시합니다.

실패한 스테이지의 모든 작업을 자동으로 재시도하거나 스테이지에서 실패한 작업만 재시도하도록 지정하여 재시도 모드를 구성할 수 있습니다.

### 실패 시 자동 재시도를 위한 스테이지 구성(콘솔)
<a name="stage-retry-auto-console"></a>

콘솔을 사용하여 자동 재시도를 위한 스테이지를 구성할 수 있습니다.

**자동 재시도를 위한 스테이지 구성(콘솔)**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름과 상태가 표시됩니다.

1. [**Name**]에서 편집할 파이프라인의 이름을 선택합니다.

1. 파이프라인 세부 정보 페이지에서 [**Edit**]를 선택합니다.

1. **편집** 페이지에서 편집하려는 작업에 대해 **스테이지 편집**을 선택합니다.

1. **자동화된 스테이지 구성:**을 선택한 다음 **스테이지 장애 시 자동 재시도 활성화**를 선택합니다. 파이프라인에 변경 사항을 저장합니다.

1. **자동화된 스테이지 구성:**에서 다음 재시도 모드 중 하나를 선택합니다.
   + 모드가 스테이지의 모든 작업을 재시도하도록 지정하려면 **실패한 단계 재시도**를 선택합니다.
   + 모드가 스테이지에서 실패한 작업만 재시도하도록 지정하려면 **실패한 작업 재시도**를 선택합니다.

   파이프라인에 변경 사항을 저장합니다.  
![\[CodePipeline에서 스테이지 실패 시 자동 재시도를 구성하는 편집 화면 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/retry-configure.png)

1. 파이프라인이 실행된 후 스테이지 실패가 발생하면 자동 재시도가 수행됩니다. 다음 예제에서는 자동으로 재시도된 빌드 단계를 보여줍니다.  
![\[실패한 스테이지가 한 번 재시도된 예제 파이프라인입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/stage-auto-retry-example.png)

1. 재시도에 대한 세부 정보를 보려면 다음을 선택합니다. 창이 표시됩니다.  
![\[한 번의 시도가 있었음을 보여주는 재시도 스테이지 메타데이터 창의 예입니다.\]](http://docs.aws.amazon.com/ko_kr/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)를 참조하세요.

# 스테이지 롤백 구성
<a name="stage-rollback"></a>

해당 스테이지에서 성공한 실행으로 스테이지를 롤백할 수 있습니다. 실패 시 롤백을 위해 스테이지를 사전 구성하거나 스테이지를 수동으로 롤백할 수 있습니다. 롤백 작업을 수행하면 새 실행이 수행됩니다. 롤백을 위해 선택한 대상 파이프라인 실행은 소스 개정 및 변수를 검색하는 데 사용됩니다.

표준 또는 롤백 실행 유형은 파이프라인 기록, 파이프라인 상태 및 파이프라인 실행 세부 정보에 표시됩니다.

**Topics**
+ [

## 롤백 고려 사항
](#stage-rollback-considerations)
+ [

# 스테이지를 수동으로 롤백
](stage-rollback-manual.md)
+ [

# 자동 롤백을 위한 스테이지 구성
](stage-rollback-auto.md)
+ [

# 실행 목록에서 롤백 상태 보기
](stage-rollback-view-listing.md)
+ [

# 롤백 상태 세부 정보 보기
](stage-rollback-view-details.md)

## 롤백 고려 사항
<a name="stage-rollback-considerations"></a>

스테이지 롤백에 대한 고려 사항은 다음과 같습니다.
+ 소스 스테이지는 롤백할 수 없습니다.
+ 파이프라인은 현재 파이프라인 구조 버전에서 이전 실행이 시작된 경우에만 이전 실행으로 롤백할 수 있습니다.
+ 롤백 실행 유형인 대상 실행 ID로 롤백할 수 없습니다.
+ CodePipeline은 롤백 중인 실행의 변수와 아티팩트를 사용합니다.

# 스테이지를 수동으로 롤백
<a name="stage-rollback-manual"></a>

콘솔 또는 CLI를 사용하여 스테이지를 수동으로 롤백할 수 있습니다. 파이프라인은 현재 파이프라인 구조 버전에서 이전 실행이 시작된 경우에만 이전 실행으로 롤백할 수 있습니다.

[자동 롤백을 위한 스테이지 구성](stage-rollback-auto.md)에 설명된 대로 실패 시 자동으로 롤백하도록 스테이지를 구성할 수도 있습니다.

## 스테이지를 수동으로 롤백(콘솔)
<a name="stage-rollback-console"></a>

콘솔을 사용하여 스테이지를 대상 파이프라인 실행으로 수동으로 롤백할 수 있습니다. 스테이지가 롤백되면 콘솔의 파이프라인 시각화에 **롤백** 레이블이 표시됩니다.

**스테이지를 수동으로 롤백(콘솔)**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름과 상태가 표시됩니다.

1. **이름**에서 롤백할 스테이지가 있는 파이프라인의 이름을 선택합니다.  
![\[CodePipeline에 두 스테이지가 있는 파이프라인의 예제 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/rollback-stage-first.png)

1. 스테이지에서 **롤백 시작**을 선택합니다. 페이지로 **롤백**이 표시됩니다.

1. 스테이지를 롤백할 대상 실행을 선택합니다.
**참고**  
사용 가능한 대상 파이프라인 실행 목록은 2024년 2월 1일부터 현재 파이프라인 버전의 모든 실행입니다.  
![\[CodePipeline에서 대상 실행 ID를 선택하는 예제입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/rollback-stage-dialog.png)

다음 다이어그램은 새 실행 ID로 롤백된 스테이지의 예를 보여줍니다.

![\[CodePipeline에 롤백된 스테이지가 있는 파이프라인의 예제 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/stage-rolled-back.png)


## 스테이지를 수동으로 롤백(CLI)
<a name="stage-rollback-cli"></a>

 AWS CLI 를 사용하여 스테이지를 수동으로 롤백하려면 `rollback-stage` 명령을 사용합니다.

[스테이지를 수동으로 롤백](#stage-rollback-manual)에 설명된 대로 스테이지를 수동으로 롤백할 수도 있습니다.

**참고**  
사용 가능한 대상 파이프라인 실행 목록은 2024년 2월 1일부터 현재 파이프라인 버전의 모든 실행입니다.

**스테이지를 수동으로 롤백하려면(CLI)**

1. 수동 롤백을 위한 CLI 명령에는 스테이지에서 이전에 성공한 파이프라인 실행의 실행 ID가 필요합니다. 지정할 대상 파이프라인 실행 ID를 가져오려면 스테이지에서 성공적인 실행을 반환하는 필터와 함께 list-pipeline-executions 명령을 사용합니다. 터미널(Linux, macOS 또는 Unix) 또는 명령 프롬프트(Windows)를 열고를 사용하여 `list-pipeline-executions` 명령을 실행하고 파이프라인의 이름과 단계에서 성공적으로 실행 AWS CLI 하기 위한 필터를 지정합니다. 이 예제에서는 출력에 MyFirstPipeline이라는 파이프라인의 파이프라인 실행과 `deploys3`라는 스테이지에서의 성공적인 실행이 나열됩니다.

   ```
   aws codepipeline list-pipeline-executions --pipeline-name MyFirstPipeline --filter succeededInStage={stageName=deploys3}
   ```

   출력에서 롤백에 지정하려는 이전에 성공한 실행의 실행 ID를 복사합니다. 다음 단계에서는 이를 대상 실행 ID로 사용합니다.

1. 터미널(Linux, macOS 또는 Unix) 또는 명령 프롬프트(Windows)를 열고 AWS CLI 를 사용하여 `rollback-stage` 명령을 실행하고, 파이프라인의 이름과 스테이지의 이름, 롤백하려는 대상 실행을 지정합니다. 예를 들어 *MyFirstPipeline*이라는 파이프라인에 배포라는 스테이지를 롤백하려면 다음을 입력합니다.

   ```
   aws codepipeline rollback-stage --pipeline-name MyFirstPipeline --stage-name Deploy --target-pipeline-execution-id bc022580-4193-491b-8923-9728dEXAMPLE 
   ```

   출력은 새 롤백 실행의 실행 ID를 반환합니다. 이는 지정된 대상 실행의 소스 개정 및 파라미터를 사용하는 별도의 ID입니다.

# 자동 롤백을 위한 스테이지 구성
<a name="stage-rollback-auto"></a>

실패 시 자동으로 롤백하도록 파이프라인의 단계를 구성할 수 있습니다. 스테이지가 실패하면 스테이지가 가장 최근에 성공한 실행으로 롤백됩니다. 파이프라인은 현재 파이프라인 구조 버전에서 이전 실행이 시작된 경우에만 이전 실행으로 롤백할 수 있습니다. 자동 롤백 구성은 파이프라인 정의의 일부이므로 파이프라인 단계에서 파이프라인이 성공적으로 실행된 후에만 파이프라인 단계가 자동으로 롤백됩니다.

## 자동 롤백을 위한 스테이지 구성(콘솔)
<a name="stage-rollback-auto-console"></a>

스테이지를 지정된 이전에 성공한 실행으로 롤백할 수 있습니다. 자세한 내용은 *CodePipeline API 가이드*의 [RollbackStage](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RollbackStage.html)를 참조하세요.

**자동 롤백을 위한 스테이지 구성(콘솔)**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름과 상태가 표시됩니다.

1. [**Name**]에서 편집할 파이프라인의 이름을 선택합니다.

1. 파이프라인 세부 정보 페이지에서 [**Edit**]를 선택합니다.

1. **편집** 페이지에서 편집하려는 작업에 대해 **스테이지 편집**을 선택합니다.

1. **자동화된 스테이지 구성:**을 선택한 다음 **스테이지 장애 시 자동 롤백 구성**을 선택합니다. 파이프라인에 변경 사항을 저장합니다.  
![\[CodePipeline에서 롤백된 스테이지를 구성하기 위한 편집 화면의 예입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/rollback-configure.png)

## 자동 롤백을 위한 스테이지 구성(CLI)
<a name="stage-rollback-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": "ROLLBACK"
                  }
              }
  ```

  스테이지 롤백의 실패 조건 구성에 대한 자세한 내용은 *CodePipeline API 참조*의 [FailureConditions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_FailureConditions.html)을 참조하세요.

## 자동 롤백을 위한 스테이지 구성(CloudFormation)
<a name="stage-rollback-auto-cfn"></a>

 CloudFormation 를 사용하여 실패 시 자동으로 롤백하도록 스테이지를 구성하려면 `OnFailure` 파라미터를 사용합니다. 실패 시 스테이지는 가장 최근에 성공한 실행으로 자동으로 롤백됩니다.

```
OnFailure:
     Result: ROLLBACK
```
+ 다음 조각과 같이 템플릿을 업데이트합니다. 다음 예제에서는 `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: ROLLBACK
      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)를 참조하세요.

# 실행 목록에서 롤백 상태 보기
<a name="stage-rollback-view-listing"></a>

롤백 실행의 상태 및 대상 실행 ID를 볼 수 있습니다.

## 실행 목록에서 롤백 상태 보기(콘솔)
<a name="stage-rollback-view-listing-console"></a>

콘솔을 사용하여 실행 목록에서 롤백 실행의 상태 및 대상 실행 ID를 볼 수 있습니다.

**실행 목록에서 롤백 실행 상태 보기(콘솔)**

1. 에 로그인 AWS Management Console 하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

   사용자의 AWS 계정 에 연결된 모든 파이프라인의 이름과 상태가 표시됩니다.

1. **이름**에서 확인하려는 파이프라인의 이름을 선택합니다.

1. **History(기록)**를 선택합니다. 실행 목록에 **롤백** 레이블이 표시됩니다.

![\[CodePipeline에서 롤백 레이블을 보여주는 실행 기록 페이지의 예입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/rollback-view-list-console.png)


세부 정보를 보고자 하는 실행 ID를 선택합니다.

## `list-pipeline-executions`(CLI)를 사용하여 롤백 상태 보기
<a name="stage-rollback-view-listing-cli"></a>

CLI를 사용하여 롤백 실행의 상태 및 대상 실행 ID를 볼 수 있습니다.
+ 터미널(Linux, macOS, Unix) 또는 명령 프롬프트(Windows)를 열고 AWS CLI 를 사용하여 **list-pipeline-executions** 명령을 실행합니다.

  ```
  aws codepipeline list-pipeline-executions --pipeline-name MyFirstPipeline 
  ```

  이 명령은 파이프라인과 연결되어 있는 완료된 모든 실행의 목록을 반환합니다.

  다음 예에서는 롤백 실행으로 파이프라인이 시작된 *MyFirstPipeline*이라는 파이프라인에 대해 반환된 데이터를 보여 줍니다.

  ```
  {
      "pipelineExecutionSummaries": [
          {
              "pipelineExecutionId": "eb7ebd36-353a-4551-90dc-18ca5EXAMPLE",
              "status": "Succeeded",
              "startTime": "2024-04-16T09:00:28.185000+00:00",
              "lastUpdateTime": "2024-04-16T09:00:29.665000+00:00",
              "sourceRevisions": [
                  {
                      "actionName": "Source",
                      "revisionId": "revision_ID",
                      "revisionSummary": "Added README.txt",
                      "revisionUrl": "console-URL"
                  }
              ],
              "trigger": {
                  "triggerType": "ManualRollback",
                  "triggerDetail": "{arn:aws:sts::<account_ID>:assumed-role/<role>"}"
              },
              "executionMode": "SUPERSEDED",
              "executionType": "ROLLBACK",
              "rollbackMetadata": {
                  "rollbackTargetPipelineExecutionId": "f15b38f7-20bf-4c9e-94ed-2535eEXAMPLE"
              }
          },
          {
              "pipelineExecutionId": "fcd61d8b-4532-4384-9da1-2aca1EXAMPLE",
              "status": "Succeeded",
              "startTime": "2024-04-16T08:58:56.601000+00:00",
              "lastUpdateTime": "2024-04-16T08:59:04.274000+00:00",
              "sourceRevisions": [
                  {
                      "actionName": "Source",
                      "revisionId": "revision_ID",
                      "revisionSummary": "Added README.txt",
                      "revisionUrl": "console_URL"
                  }
              ],
              "trigger": {
                  "triggerType": "StartPipelineExecution",
                  "triggerDetail": "arn:aws:sts::<account_ID>:assumed-role/<role>"
              },
              "executionMode": "SUPERSEDED"
          },
          {
              "pipelineExecutionId": "5cd064ca-bff7-425f-8653-f41d9EXAMPLE",
              "status": "Failed",
              "startTime": "2024-04-24T19:19:50.781000+00:00",
              "lastUpdateTime": "2024-04-24T19:19:52.119000+00:00",
              "sourceRevisions": [
                  {
                      "actionName": "Source",
                      "revisionId": "<revision_ID>",
                      "revisionSummary": "Edited README.txt",
                      "revisionUrl": "<revision_URL>"
                  }
              ],
              "trigger": {
                  "triggerType": "AutomatedRollback",
                  "triggerDetail": "{\"FailedPipelineExecutionId\":\"b2e77fa5-9285-4dea-ae66-4389EXAMPLE\"}"
              },
              "executionMode": "SUPERSEDED",
              "executionType": "ROLLBACK",
              "rollbackMetadata": {
                  "rollbackTargetPipelineExecutionId": "5efcfa68-d838-4ca7-a63b-4a743EXAMPLE"
              }
           },
  ```

# 롤백 상태 세부 정보 보기
<a name="stage-rollback-view-details"></a>

롤백 실행의 상태 및 대상 실행 ID를 볼 수 있습니다.

## 세부 정보 페이지에서 롤백 상태 보기(콘솔)
<a name="stage-rollback-view-details-console"></a>

콘솔을 사용하여 롤백 실행의 상태 및 대상 파이프라인 실행 ID를 볼 수 있습니다.

![\[CodePipeline의 대상 파이프라인 실행 ID 필드를 보여주는 예제 상태 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/images/rollback-view-status-console.png)


## `get-pipeline-execution`(CLI)을 사용하여 롤백 세부 정보 보기
<a name="stage-rollback-view-details-cli"></a>

롤백된 파이프라인 실행은 파이프라인 실행을 가져오기 위한 출력에 표시됩니다.
+ 파이프라인에 대한 세부 정보를 보려면 파이프라인의 고유 이름을 지정한 채 **[get-pipeline-execution](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-execution.html)** 명령을 실행합니다. 예를 들어, *MyFirstPipeline*이라는 파이프라인의 세부 정보를 보려면 다음을 입력합니다.

  ```
  aws codepipeline get-pipeline-execution --pipeline-name MyFirstPipeline --pipeline-execution-id 3f658bd1-69e6-4448-ba3e-79007EXAMPLE
  ```

  이 명령은 파이프라인의 구조를 반환합니다.

  다음 예제에서는 롤백 실행 ID와 메타데이터가 표시되는 *MyFirstPipeline*이라는 파이프라인의 일부에 대해 반환된 데이터를 보여줍니다.

  ```
  {
      "pipelineExecution": {
          "pipelineName": "MyFirstPipeline",
          "pipelineVersion": 6,
          "pipelineExecutionId": "2004a94e-8b46-4c34-a695-c8d20EXAMPLE",
          "status": "Succeeded",
          "artifactRevisions": [
              {
                  "name": "SourceArtifact",
                  "revisionId": "<ID>",
                  "revisionSummary": "Added README.txt",
                  "revisionUrl": "<console_URL>"
              }
          ],
          "trigger": {
              "triggerType": "ManualRollback",
              "triggerDetail": "arn:aws:sts::<account_ID>:assumed-role/<role>"
          },
          "executionMode": "SUPERSEDED",
          "executionType": "ROLLBACK",
          "rollbackMetadata": {
              "rollbackTargetPipelineExecutionId": "4f47bed9-6998-476c-a49d-e60beEXAMPLE"
          }
      }
  }
  ```

## `get-pipeline-state`(CLI)를 사용하여 롤백 상태 보기
<a name="w2aac34c10c17b9"></a>

롤백된 파이프라인 실행은 파이프라인 상태를 가져오기 위한 출력에 표시됩니다.
+ 파이프라인에 대한 세부 정보를 보려면 파이프라인의 고유 이름을 지정한 채 **get-pipeline-state** 명령을 실행합니다. 예를 들어, *MyFirstPipeline*이라는 파이프라인의 세부 정보를 보려면 다음을 입력합니다.

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

  다음 예제에서는 롤백 실행 유형이 있는 반환된 데이터를 보여줍니다.

  ```
  {
      "pipelineName": "MyFirstPipeline",
      "pipelineVersion": 7,
      "stageStates": [
          {
              "stageName": "Source",
              "inboundExecutions": [],
              "inboundTransitionState": {
                  "enabled": true
              },
              "actionStates": [
                  {
                      "actionName": "Source",
                      "currentRevision": {
                          "revisionId": "<Revision_ID>"
                      },
                      "latestExecution": {
                          "actionExecutionId": "13bbd05d-b439-4e35-9c7e-887cb789b126",
                          "status": "Succeeded",
                          "summary": "update",
                          "lastStatusChange": "2024-04-24T20:13:45.799000+00:00",
                          "externalExecutionId": "10cbEXAMPLEID"
                      },
                      "entityUrl": "console-url",
                      "revisionUrl": "console-url"
                  }
              ],
              "latestExecution": {
                  "pipelineExecutionId": "cf95a8ca-0819-4279-ae31-03978EXAMPLE",
                  "status": "Succeeded"
              }
          },
          {
              "stageName": "deploys3",
              "inboundExecutions": [],
              "inboundTransitionState": {
                  "enabled": true
              },
              "actionStates": [
                  {
                      "actionName": "s3deploy",
                      "latestExecution": {
                          "actionExecutionId": "3bc4e3eb-75eb-45b9-8574-8599aEXAMPLE",
                          "status": "Succeeded",
                          "summary": "Deployment Succeeded",
                          "lastStatusChange": "2024-04-24T20:14:07.577000+00:00",
                          "externalExecutionId": "mybucket/SampleApp.zip"
                      },
                      "entityUrl": "console-URL"
                  }
              ],
              "latestExecution": {
                  "pipelineExecutionId": "fdf6b2ae-1472-4b00-9a83-1624eEXAMPLE",
                  "status": "Succeeded",
                  "type": "ROLLBACK"
              }
          }
      ],
      "created": "2024-04-15T21:29:01.635000+00:00",
      "updated": "2024-04-24T20:12:24.480000+00:00"
  }
  ```