AWSステップ関数を持つPaginate直接AWS SDK呼び出し
3875 ワード
AWSステップ機能AWS SDK integrationは、あなたのステップ機能ワークフローから直接AWSサービスの巨大な選択を呼び出すことができます.
項目の大きいリストを返すことができるAPI呼び出しのために、APIはデフォルトで最初のセットの結果だけを返しています.たとえば、S 3 Listオブジェクトの応答は既定のMAX . 1000オブジェクトによって返されます.結果の残りの部分は、Paginationトークンを要求によって提供することで要求されなければなりません.
データ処理のために、ページ付けは非常に役に立つと必須のパターンです.結果セットを固定サイズのページに分割すると、エラー処理のために意味のある再試行ロジックを構築することが容易になります.また、実行結果セットin parallelは、ワークフロー実行時間を大幅に改善することができる.
この例では、S 3バケットのリストオブジェクト(
注意:一部のAWS APIは、結果をページ化するために
Cloudformation template
この例では、S 3バケツのリストオブジェクトの非常に単純な流れを示し、その後、処理ステップをトリガーします.
以下はASL定義です.
AWSステップ機能はワークフローを調整し、AWSサービスを調整するのに最適です.私は強くあなたのユースケースに適応するためのランニングスタートを得るための良いテンプレートのライブラリを構築することをお勧めします.
項目の大きいリストを返すことができるAPI呼び出しのために、APIはデフォルトで最初のセットの結果だけを返しています.たとえば、S 3 Listオブジェクトの応答は既定のMAX . 1000オブジェクトによって返されます.結果の残りの部分は、Paginationトークンを要求によって提供することで要求されなければなりません.
データ処理のために、ページ付けは非常に役に立つと必須のパターンです.結果セットを固定サイズのページに分割すると、エラー処理のために意味のある再試行ロジックを構築することが容易になります.また、実行結果セットin parallelは、ワークフロー実行時間を大幅に改善することができる.
この例では、S 3バケットのリストオブジェクト(
arn:aws:states:::aws-sdk:s3:listObjectsV2
)がどのようにしてS 3オブジェクトのバッチで処理ステップをトリガーするのかを示しています.注意:一部のAWS APIは、結果をページ化するために
NextToken
を使用します.Paginationによるワークフローは、まだContinuationToken
でカバーしています.ASLでページネーションを実装する方法。
Cloudformation template
この例では、S 3バケツのリストオブジェクトの非常に単純な流れを示し、その後、処理ステップをトリガーします.
以下はASL定義です.
BatchSize
パラメーターは、各処理バッチにどのように多くのS 3オブジェクトが含まれているかを制御します.応答がIsTruncated: true
を含む限り、我々は新しいバッチを要求し続けます.最後のオブジェクトバッチのサイズはBatchSize
でIsTruncated: false
になり、処理を終了できます.{
"Comment": "List S3 objects.",
"StartAt": "list_s3",
"States": {
"list_s3": {
"Comment": "Get first batch of objects.",
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:s3:listObjectsV2",
"ResultPath": "$.s3_objects",
"Parameters": {
"Bucket": "${BucketName}",
"MaxKeys": ${BatchSize}
},
"Next": "process_s3_objects"
},
"process_s3_objects": {
"Comment": "Processing logic. Now we just wait.",
"Type": "Wait",
"Seconds": 2,
"Next": "check_if_all_listed"
},
"check_if_all_listed": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.s3_objects.IsTruncated",
"BooleanEquals": false,
"Next": "success_state"
}
],
"Default": "list_s3_with_continuation_token"
},
"list_s3_with_continuation_token": {
"Comment": "Get next batch of objects. Provide ContinuationToken in the request.",
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:s3:listObjectsV2",
"ResultPath": "$.s3_objects",
"Parameters": {
"Bucket": "${BucketName}",
"MaxKeys": ${BatchSize},
"ContinuationToken.$": "$.s3_objects.NextContinuationToken"
},
"Next": "process_s3_objects"
},
"success_state": {
"Type": "Succeed"
}
}
}
ラッピング
AWSステップ機能はワークフローを調整し、AWSサービスを調整するのに最適です.私は強くあなたのユースケースに適応するためのランニングスタートを得るための良いテンプレートのライブラリを構築することをお勧めします.
Reference
この問題について(AWSステップ関数を持つPaginate直接AWS SDK呼び出し), 我々は、より多くの情報をここで見つけました https://dev.to/markymarkus/paginate-direct-aws-sdk-calls-with-aws-step-functions-2m3lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol