ResultWriter (マップ) - AWS Step Functions

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

ResultWriter (マップ)

ResultWriter フィールドは、分散マップ状態 によって開始された子ワークフロー実行の結果を Step Functions が書き込む Amazon S3 の場所を指定するJSONオブジェクトです。デフォルトでは、Step Functions はこれらの結果をエクスポートしません。

重要

マップ実行の結果のエクスポートに使用する Amazon S3 バケットが同じ にあることを確認します。 AWS アカウント また、 AWS リージョン ステートマシンとして。それ以外の場合は、States.ResultWriterFailed エラーが発生してステートマシンの実行が失敗します。

出力ペイロードサイズが 256 KB を超える場合は、結果を Amazon S3 バケットにエクスポートすると便利です。Step Functions は、実行入出力、、実行ステータスなど、すべての子ワークフロー実行データを統合ARNします。次に、指定した Amazon S3 の場所のそれぞれのファイルに、同じステータスの実行をエクスポートします。次の例は、子ワークフローの実行結果をエクスポートする場合の ResultWriter フィールドの構文を示しています。この例では、csvProcessJobs というプレフィックス内にある、amzn-s3-demo-destination-bucket という名前のバケットに結果を保存します。

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } } }
ヒント

Workflow Studio では、[マップステートの結果を Amazon S3 にエクスポート] を選択すると、子ワークフローの実行結果をエクスポートできます。次に、結果をエクスポートする Amazon S3 バケットの名前とプレフィックスを入力します。

Step Functions には、結果をエクスポートするバケットとフォルダにアクセスするための適切な権限が必要です。必要なIAMポリシーの詳細については、「」を参照してくださいIAM の ポリシー ResultWriter

子ワークフローの実行結果をエクスポートする場合、分散マップ状態の実行はマップ実行ARNと Amazon S3 のエクスポート場所に関するデータを次の形式で返します。

{ "MapRunArn": "arn:aws:states:us-east-2:123456789012:mapRun:csvProcess/Map:ad9b5f27-090b-3ac6-9beb-243cd77144a7", "ResultWriterDetails": { "Bucket": "amzn-s3-demo-destination-bucket", "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 は、最大 5 GB の個別の結果ファイルをサポートします。ファイルサイズが 5 GB を超える場合、Step Functions は残りの実行結果を書き込む別のファイルを作成し、ファイル名にインデックス番号を追加します。例えば、Succeeded_0.json ファイルのサイズが 5 GB を超える場合、Step Functions は残りの結果を記録する Succeeded_1.json ファイルを作成します。

子ワークフロー実行結果をエクスポートするように指定しなかった場合、ステートマシン実行は次の例のように子ワークフロー実行結果の配列を返します。

注記

返される出力サイズが 256 KB を超えると、ステートマシンの実行は失敗し、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" } }, ... ]

IAM の ポリシー ResultWriter

Step Functions コンソールでワークフローを作成すると、Step Functions はワークフロー定義のリソースに基づいてIAMポリシーを自動的に生成できます。これらのポリシーには、ステートマシンロールが分散マップ状態 StartExecutionAPIアクションを呼び出すのに必要な最小限の権限が含まれています。これらのポリシーには、Step Functions がアクセスするために必要な最小限の権限も含まれています。 AWS Amazon S3 バケット、オブジェクト、Lambda 関数などの リソース。IAM ポリシーに必要なアクセス許可のみを含めることを強くお勧めします。例えばワークフローに分散モードの Map 状態が含まれている場合は、ポリシーの範囲をデータセットを含む特定の Amazon S3 バケットとフォルダに限定します。

重要

Amazon S3 バケットとオブジェクト、またはプレフィックスを指定し、分散マップ状態入力の既存のキーと値のペアへの参照パスを指定する場合は、ワークフローのIAMポリシーを必ず更新してください。ポリシーの範囲は、ランタイムでパスから解釈されるバケット名とオブジェクト名に限定します。

次のIAMポリシー例では、子ワークフロー実行結果を という名前のフォルダに書き込むために必要な最小権限を付与します。csvJobs PutObject API アクションを使用した Amazon S3 バケット内の 。

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

子ワークフローの実行結果を書き込む先の Amazon S3 バケットが を使用して暗号化されている場合 AWS Key Management Service (AWS KMS) キー、必要な を含める必要があります AWS KMS IAM ポリシー内の アクセス許可。詳細については、「IAM の アクセス許可 AWS KMS key 暗号化された Amazon S3 バケット」を参照してください。