

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

# Step Functions 실행의 맵 실행 Redriving
<a name="redrive-map-run"></a>

[상위 워크플로](state-map-distributed.md#dist-map-orchestrate-parallel-workloads-key-terms)를 [redriving](redrive-executions.md)하면 맵 실행에서 실패한 하위 워크플로 실행을 다시 시작할 수 있습니다. redriven 상위 워크플로에서 Distributed Map을 비롯한 실패한 모든 상태를 redrives합니다. 상위 워크플로에서 실행을 완료한 시점의 상태에 대한 `<stateType>Entered` 이벤트에 해당하는 `<stateType>Exited` 이벤트가 없으면 상위 워크플로는 실패한 상태를 리드라이브합니다. 예를 들어 이벤트 내역에 `MapStateEntered` 이벤트에 대한 `MapStateExited` 이벤트가 포함되어 있지 않으면 상위 워크플로를 redrive하여 맵 실행에서 실패한 모든 하위 워크플로 실행을 redrive할 수 있습니다.

상태 시스템에 [ItemReader(맵)](input-output-itemreader.md), [ResultWriter(맵)](input-output-resultwriter.md) 또는 둘 다에 액세스하는 데 필요한 권한이 없으면 맵 실행이 원래 실행 시도에서 시작되지 않거나 실패합니다. 맵 실행이 상위 워크플로의 원래 실행 시도에서 시작되지 않은 경우 상위 워크플로를 redriving하면 맵 실행이 처음으로 시작됩니다. 이 문제를 해결하려면 상태 시스템 역할에 필요한 권한을 추가한 다음 상위 워크플로를 redrive합니다. 필요한 권한을 추가하지 않고 상위 워크플로를 redrive한 경우 새 맵 실행을 시작하려고 시도하면 다시 실패합니다. 필요할 수 있는 권한은 [Distributed Map 상태를 사용하기 위한 IAM 정책](iam-policies-eg-dist-map.md) 섹션을 참조하세요.

**Contents**
+ [맵 실행에서 하위 워크플로에 대한 Redrive 적격성](#redrive-eligibility-map-run)
+ [하위 워크플로 실행 redrive 동작](#redrive-child-workflow-behavior)
+ [맵 실행 redrive에서 사용된 입력 시나리오](#maprun-redrive-input)
+ [맵 실행을 redrive할 수 있는 IAM 권한](#maprun-iam-permission)
+ [콘솔에서 맵 실행 Redriving](#redrive-maprun-console)
+ [API를 사용하여 맵 실행 Redriving](#redrive-maprun-api)

## 맵 실행에서 하위 워크플로에 대한 Redrive 적격성
<a name="redrive-eligibility-map-run"></a>

다음 조건이 충족되면 맵 실행에서 실패한 하위 워크플로를 redrive할 수 있습니다.
+ 2023년 11월 15일 이후에 상위 워크플로 실행을 시작했습니다. 이 날짜 이전에 시작한 실행은 redrive에 적합하지 않습니다.
+ 특정 맵 실행의 엄격한 한도인 redrives 1,000회를 초과하지 않았습니다. 이 한도를 초과하면 `States.Runtime` 오류가 발생합니다.
+ 상위 워크플로는 redrivable입니다. 상위 워크플로가 redrivable이 아니면 맵 실행에서 하위 워크플로 실행을 redrive할 수 없습니다. 워크플로의 redrive 적격성에 대한 자세한 내용은 [실패한 실행에 대한 Redrive 적격성](redrive-executions.md#redrive-eligibility) 섹션을 참조하세요.
+ 맵 실행에서 표준 유형의 하위 워크플로 실행이 실행 이벤트 내역 한도인 25,000개를 초과하지 않았습니다. 이벤트 내역 한도를 초과한 하위 워크플로 실행은 [허용 실패 임계값](state-map-distributed.md#maprun-fail-threshold)에 포함되며 실패로 간주됩니다. 실행의 redrive 적격성에 대한 자세한 내용은 [실패한 실행에 대한 Redrive 적격성](redrive-executions.md#redrive-eligibility) 섹션을 참조하세요.

맵 실행이 원래 실행 시도에서 실패했더라도 다음과 같은 경우에는 새 맵 실행이 시작되고 기존 맵 실행은 redriven되지 않습니다.
+ `States.DataLimitExceeded` 오류로 인해 맵 실행이 실패했습니다.
+ JSON 데이터 보간 오류인 `States.Runtime`으로 인해 맵 실행이 실패했습니다. 예를 들어 [OutputPath를 사용하여 상태 출력 필터링](input-output-example.md#input-output-outputpath)에 존재하지 않는 JSON 노드를 선택했습니다.

상위 워크플로가 중지되거나 시간 초과된 후에도 맵 실행은 계속 실행될 수 있습니다. 다음과 같은 시나리오에서는 redrive는 즉시 발생하지 않습니다.
+ 맵 실행에서 여전히 진행 중인 표준 유형의 하위 워크플로 실행을 취소하거나 Express 유형의 하위 워크플로 실행이 완료될 때까지 기다리고 있을 수 있습니다.
+ 결과를 내보내도록 맵 실행을 구성한 경우 맵 실행에서 여전히 결과를 [ResultWriter(맵)](input-output-resultwriter.md)에 쓰고 있을 수 있습니다.

이러한 경우에는 실행 중인 맵 실행이 redrive를 시도하기 전에 작업을 완료합니다.

## 하위 워크플로 실행 redrive 동작
<a name="redrive-child-workflow-behavior"></a>

맵 실행의 redriven 하위 워크플로 실행은 다음 표의 설명과 같은 동작을 나타냅니다.


| Express 하위 워크플로 | 표준 하위 워크플로 | 
| --- | --- | 
| 원래 실행 시도에서 실패하거나 시간 초과된 모든 하위 워크플로 실행은 [StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html) API 작업을 통해 시작됩니다. [ItemProcessor](state-map-distributed.md#distitemprocessor)의 첫 번째 상태가 먼저 실행됩니다. | 원래 실행 시도에서 실패, 시간 초과 또는 취소된 모든 하위 워크플로 실행은 [https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html) API 작업을 통해 redriven됩니다. 이러한 하위 워크플로는 실행이 실패한 ItemProcessor의 마지막 상태에서 redriven됩니다. | 
| 실행 실패는 항상 redriven될 수 있습니다. 이는 Express 하위 워크플로 실행이 항상 StartExecution API 작업을 통해 새 실행으로 시작되기 때문입니다. | 실패한 표준 하위 워크플로 실행은 항상 redriven될 수 없습니다. 실행이 redrivable되지 않으면 다시 시도되지 않습니다. 실행의 마지막 오류나 출력은 영구적입니다. 이는 실행이 기록 이벤트 25,000개를 초과하거나 redrivable 기간 14일이 만료된 경우에 가능합니다.<br />상위 워크플로 실행이 14일 이내에 종료되었지만 하위 워크플로 실행은 14일 이전에 종료된 경우에는 표준 하위 워크플로 실행이 redrivable되지 않을 수 있습니다. | 
| Express 하위 워크플로 실행은 원래 실행 시도와 동일한 실행 ARN을 사용하지만 개별 redrives를 명확하게 식별할 수 없습니다. | 표준 하위 워크플로 실행은 원래 실행 시도와 동일한 실행 ARN을 사용합니다. 콘솔에서 [GetExecutionHistory](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html) 및 [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)과 같은 API를 사용하여 개별 redrives를 명확하게 식별할 수 있습니다. 자세한 내용은 [redriven 실행 검사](redrive-executions.md#examine-redriven-executions) 단원을 참조하십시오. | 

맵 실행을 redriven하고 동시 한도에 도달하면 해당 맵 실행의 하위 워크플로 실행이 보류 중 상태로 전환됩니다. 맵 실행의 실행 상태도 **redrive 보류 중** 상태로 전환됩니다. 지정된 동시성 한도에서 더 많은 하위 워크플로 실행을 허용할 수 있을 때까지 실행은 **redrive 보류 중** 상태로 유지됩니다.

예를 들어 워크플로에 있는 분산 맵의 동시성 한도가 3000이고 재실행할 하위 워크플로 수가 6000개라고 가정해보겠습니다. 이로 인해 하위 워크플로가 3000개가 동시에 실행되고 나머지 워크플로 3000개는 **리드라이브 보류 중** 상태로 유지됩니다. 하위 워크플로 3000개의 첫 번째 배치가 실행을 완료하면 나머지 하위 워크플로 3000개가 실행됩니다.

맵 실행이 실행을 완료하거나 중단되면 **redrive 보류 중** 상태의 하위 워크플로 실행 수가 0으로 재설정됩니다.

## 맵 실행 redrive에서 사용된 입력 시나리오
<a name="maprun-redrive-input"></a>

원래 실행 시도에서 분산 맵에 입력을 제공한 방식에 따라 redriven 맵 실행은 다음 표의 설명대로 입력을 사용합니다.


| 원래 실행 시도의 입력 | 맵 실행 redrive에 사용된 입력 | 
| --- | --- | 
| 이전 상태에서 전달된 입력 또는 실행 입력 | redriven 맵 실행에서 같은 입력을 사용합니다. | 
| 다음 중 조건 중 하나에 해당되므로 [ItemReader(맵)](input-output-itemreader.md)를 통해 전달된 입력과 맵 실행에서 하위 워크플로 실행을 시작하지 않았습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/step-functions/latest/dg/redrive-map-run.html)  | redriven 맵 실행에서 Amazon S3 버킷의 입력을 사용합니다. | 
| ItemReader를 통해 전달된 입력. 하위 워크플로 실행을 시작하거나 시작하려고 시도한 후에 맵 실행이 실패했습니다. | redriven 맵 실행은 원래 실행 시도에서 제공된 입력과 동일한 입력을 사용합니다. | 

## 맵 실행을 redrive할 수 있는 IAM 권한
<a name="maprun-iam-permission"></a>

Step Functions에는 맵 실행을 redrive할 수 있는 적절한 권한이 필요합니다. 다음 IAM 정책 예제에서는 맵 실행을 redriving하는 데 필요한 최소 권한을 상태 시스템에 부여합니다. {{기울임꼴}} 텍스트를 리소스별 정보로 바꿔야 합니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:RedriveExecution"
      ],
      "Resource": "arn:aws:states:us-east-2:{{123456789012}}:execution:{{myStateMachineName}}/{{myMapRunLabel}}:*"
    }
  ]
}
```

## 콘솔에서 맵 실행 Redriving
<a name="redrive-maprun-console"></a>

다음 이미지에서는 분산 맵이 포함된 상태 시스템의 실행 그래프를 보여줍니다. 맵 실행이 실패하여 이 실행이 실패했습니다. 맵 실행을 redrive하려면 상위 워크플로를 redrive해야 합니다.

![맵 실행 실패로 인해 실패한 상태 시스템 실행 그래프입니다.](http://docs.aws.amazon.com/ko_kr/step-functions/latest/dg/images/redrive-eg-failed-maprun.png)


**콘솔에서 맵 실행 redrive하기**

1. [Step Functions 콘솔](https://console.aws.amazon.com/states/home?region=us-east-1#/)을 열고 실행이 실패한 분산 맵이 포함된 기존 상태 시스템을 선택합니다.

1. 상태 시스템 세부 정보 페이지의 **실행**에서 이 상태 시스템의 실패한 실행 인스턴스를 선택합니다.

1. **Redrive**을 선택합니다.

1. **Redrive** 대화 상자에서 **Redrive 실행**을 선택합니다.
**작은 정보**  
*실행 세부 정보* 또는 *맵 실행 세부 정보* 페이지에서 맵 실행을 redrive할 수도 있습니다.  
*실행 세부 정보* 페이지에서 다음 중 하나를 수행하여 실행을 redrive합니다.  
**복구**를 선택한 다음 **장애로부터 Redrive**을 선택합니다.
**작업**을 선택한 다음 **Redrive**를 선택합니다.
*맵 실행 세부 정보* 페이지에서 **복구**를 선택한 다음 **장애로부터 Redrive**을 선택합니다.

   redrive에서 같은 상태 시스템 정의와 ARN을 사용합니다. 원래 실행 시도에서 실패한 단계부터 실행을 계속 실행합니다. 이 예제에서는 **Map**이라는 분산 맵 단계와 내부의 **프로세스 입력** 단계입니다. 실패한 맵 실행 하위 워크플로 실행을 다시 시작한 후에도 redrive는 **완료** 단계 실행을 계속합니다.

1. *실행 세부 정보* 페이지에서 **맵 실행**을 선택하여 redriven 맵 실행 세부 정보를 확인합니다.

   이 페이지에서 redriven 실행 결과를 볼 수 있습니다. 예를 들어 [맵 실행 요약](concepts-examine-map-run.md#map-run-exec-summary) 섹션에서 맵 실행이 redriven된 횟수를 나타내는 **Redrive 횟수**를 확인할 수 있습니다. **이벤트** 섹션에서 원래 실행 시도 이벤트에 추가된 redrive 관련 실행 이벤트를 확인할 수 있습니다. 예제는 `MapRunRedriven` 이벤트를 참조하세요.

맵 실행을 redriven한 후에 콘솔에서 또는 [GetExecutionHistory](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html) 및 [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) API 작업을 사용하여 redrive 세부 정보를 검사할 수 있습니다. redriven 실행 검사 방법에 대한 자세한 내용은 [redriven 실행 검사](redrive-executions.md#examine-redriven-executions) 섹션을 참조하세요.

## API를 사용하여 맵 실행 Redriving
<a name="redrive-maprun-api"></a>

상위 워크플로에서 [https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html) API를 사용하여 [적합한](#redrive-eligibility-map-run) 맵 실행을 redrive할 수 있습니다. 이 API는 맵 실행에서 실패한 하위 워크플로 실행을 다시 시작합니다.

AWS Command Line Interface(AWS CLI)에서 다음 명령을 실행하여 실패한 상태 시스템 실행을 redrive합니다. {{기울임꼴}} 텍스트를 리소스별 정보로 바꿔야 합니다.

```
aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:{{account-id}}:execution:{{myStateMachine}}:{{foo}}
```

맵 실행을 redriven한 후에 콘솔에서 또는 [DescribeMapRun](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeMapRun.html) API 작업을 사용하여 redrive 세부 정보를 검사할 수 있습니다. 맵 실행에서 표준 워크플로 실행의 redrive 세부 정보를 검사하려면 [GetExecutionHistory](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html) 또는 [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) API 작업을 사용하면 됩니다. redriven 실행 검사 방법에 대한 자세한 내용은 [redriven 실행 검사](redrive-executions.md#examine-redriven-executions) 섹션을 참조하세요.

상위 워크플로에서 로깅을 활성화한 경우 [Step Functions 콘솔](https://console.aws.amazon.com/states/home?region=us-east-1#/)의 맵 실행에서 Express 워크플로 실행의 redrive 세부 정보를 검사할 수 있습니다. 자세한 내용은 [CloudWatch Logs를 사용하여 Step Functions에서 실행 기록 로깅](cw-logs.md) 단원을 참조하십시오.