AWSステップ関数を持つPaginate直接AWS SDK呼び出し


AWSステップ機能AWS SDK integrationは、あなたのステップ機能ワークフローから直接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を含む限り、我々は新しいバッチを要求し続けます.最後のオブジェクトバッチのサイズはBatchSizeIsTruncated: 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サービスを調整するのに最適です.私は強くあなたのユースケースに適応するためのランニングスタートを得るための良いテンプレートのライブラリを構築することをお勧めします.