ResultWriter - AWS Step Functions

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

ResultWriter

ResultWriter 필드는 Step Functions가 Distributed Map 상태에서 시작한 하위 워크플로 실행 결과를 기록하는 Amazon S3 위치를 지정하는 JSON 객체입니다. 기본적으로 Step Functions는 이러한 결과를 내보내지 않습니다.

중요

맵 실행 결과를 내보내는 데 사용하는 Amazon S3 버킷이 상태 시스템과 동일한 AWS 계정 및 AWS 리전에 있는지 확인하세요. 그렇지 않으면 상태 시스템 실행이 실패하고 States.ResultWriterFailed 오류가 표시됩니다.

출력 페이로드 크기가 256KB를 초과하는 경우 Amazon S3 버킷에 결과를 내보내는 것이 도움이 됩니다. Step Functions는 실행 입력 및 출력, ARN, 실행 상태와 같은 모든 하위 워크플로 실행 데이터를 통합합니다. 그런 다음 같은 상태의 실행을 지정된 Amazon S3 위치에 있는 각 파일로 내보냅니다. 다음 예제에서는 하위 워크플로 실행 결과를 내보내는 경우의 ResultWriter 필드 구문을 보여줍니다. 이 예제에서는 csvProcessJobs 접두사 내 myOutputBucket이라는 버킷에 결과를 저장합니다.

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "myOutputBucket", "Prefix": "csvProcessJobs" } } }
작은 정보

Workflow Studio에서 Amazon S3로 Map 상태 결과 내보내기를 선택하여 하위 워크플로 실행 결과를 내보낼 수 있습니다. 그런 다음 결과를 내보내려는 Amazon S3 버킷의 이름과 접두사를 입력합니다.

Step Functions에는 결과를 내보내려는 버킷과 폴더에 액세스할 수 있는 적절한 권한이 필요합니다. 필요한 IAM 정책에 대한 자세한 내용은 ResultWriter에 대한 IAM 정책을 참조하세요.

하위 워크플로 실행 결과를 내보내면 Distributed Map 상태 실행에서 맵 실행 ARN과 Amazon S3 내보내기 위치에 대한 데이터를 다음 형식으로 반환합니다.

{ "MapRunArn": "arn:aws:states:us-east-2:123456789012:mapRun:csvProcess/Map:ad9b5f27-090b-3ac6-9beb-243cd77144a7", "ResultWriterDetails": { "Bucket": "myOutputBucket", "Key": "csvProcessJobs/ad9b5f27-090b-3ac6-9beb-243cd77144a7/manifest.json" } }

Step Functions는 동일한 상태의 실행을 해당 파일로 각각 내보냅니다. 예를 들어 하위 워크플로 실행 실행에서 성공이 500개, 실패가 200개인 경우 Step Functions는 지정된 Amazon S3 위치에 성공 및 실패 결과에 대한 파일 2개를 만듭니다. 이 예제에서 성공 결과 파일에는 성공 결과 500개가 포함되고 실패 결과 파일에는 실패 결과 200개가 포함됩니다.

지정된 실행 시도의 경우 Step Functions는 실행 출력에 따라 지정된 Amazon S3 위치에 다음 파일을 만듭니다.

  • manifest.json - 내보내기 위치, 맵 실행 ARN, 결과 파일에 대한 정보와 같은 맵 실행 메타데이터를 포함합니다.

    맵 실행을 redriven한 경우 manifest.json 파일에는 맵 실행의 모든 시도에서 성공한 모든 하위 워크플로 실행에 대한 참조가 포함됩니다. 하지만 이 파일에는 특정 redrive의 실패 및 보류 중인 실행에 대한 참조가 포함됩니다.

  • SUCCEEDED_n.json - 모든 성공적인 하위 워크플로 실행에 대한 통합 데이터를 포함합니다. n은 파일의 인덱스 번호를 나타냅니다. 인덱스 번호는 0부터 시작합니다. 예: SUCCEEDED_1.json.

  • FAILED_n.json - 모든 실패, 제한 시간 및 중단된 하위 워크플로 실행에 대한 통합 데이터를 포함합니다. 실패한 실행을 복구하려면 이 파일을 사용합니다. n은 파일 인덱스를 나타냅니다. 인덱스 번호는 0부터 시작합니다. 예: FAILED_1.json.

  • PENDING_n.json - 맵 실행이 실패하거나 중단되어 시작되지 않은 모든 하위 워크플로 실행에 대한 통합 데이터를 포함합니다. n은 파일 인덱스를 나타냅니다. 인덱스 번호는 0부터 시작합니다. 예: PENDING_1.json.

Step Functions는 개별 결과 파일을 최대 5GB까지 지원합니다. 파일 크기가 5GB를 초과하면 Step Functions에서 나머지 실행 결과를 기록할 다른 파일을 만들고 파일 이름에 인덱스 번호를 추가합니다. 예를 들어 Succeeded_0.json 파일 크기가 5GB를 초과하면 Step Functions에서 Succeeded_1.json 파일을 만들어 나머지 결과를 기록합니다.

하위 워크플로 실행 결과를 내보내도록 지정하지 않은 경우 상태 시스템 실행은 다음 예제와 같이 하위 워크플로 실행 결과 배열을 반환합니다.

참고

반환된 출력 크기가 256KB를 초과하면 상태 시스템 실행이 실패하고 States.DataLimitExceeded 오류가 반환됩니다.

[ { "statusCode": 200, "inputReceived": { "show_id": "s1", "release_year": "2020", "rating": "PG-13", "type": "Movie" } }, { "statusCode": 200, "inputReceived": { "show_id": "s2", "release_year": "2021", "rating": "TV-MA", "type": "TV Show" } }, ... ]

ResultWriter에 대한 IAM 정책

Step Functions 콘솔을 사용하여 워크플로를 만들면 Step Functions에서 워크플로 정의의 리소스를 기반으로 IAM 정책을 자동으로 생성할 수 있습니다. 이러한 정책에는 상태 시스템 역할에서 Distributed Map 상태에 대한 StartExecution API 작업을 간접적으로 호출하도록 허용하는 데 필요한 최소 권한이 포함되어 있습니다. 또한 이러한 정책에는 Step Functions에서 Amazon S3 버킷과 객체, Lambda 함수와 같은 AWS 리소스에 액세스하는 데 필요한 최소 권한이 포함되어 있습니다. IAM 정책에 필요한 권한만 포함하는 것이 좋습니다. 예를 들어 워크플로에 분산 모드의 Map 상태가 포함된 경우 정책 범위를 데이터 세트가 포함된 특정 Amazon S3 버킷과 폴더로 좁힙니다.

중요

Distributed Map 상태 입력에 있는 기존 키-값 페어에 대한 참조 경로를 사용하여 Amazon S3 버킷과 객체 또는 접두사를 지정하는 경우 워크플로에 대한 IAM 정책을 업데이트해야 합니다. 정책 범위를 런타임 시 경로에서 확인하는 버킷과 객체 이름으로 좁히세요.

다음 IAM 정책 예제에서는 PutObject API 작업을 사용하여 하위 워크플로 실행 결과를 Amazon S3 버킷의 csvJobs 폴더에 쓰는 데 필요한 최소 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::resultBucket/csvJobs/*" ] } ] }

하위 워크플로 실행 결과를 기록하는 Amazon S3 버킷이 AWS Key Management Service (AWS KMS) 키를 통해 암호화된 경우 IAM 정책에 필요한 AWS KMS 권한을 포함해야 합니다. 자세한 내용은 AWS KMS key 암호화된 Amazon S3 버킷에 대한 IAM 권한 섹션을 참조하세요.