ラムダを使用してS3バケットフォルダーからスノーフレークテーブルにデータをロードしようとしています。ファイルが取り込まれる S3 トリガーを設定し、ラムダとスノーフレークの間の統合を形成して、受信ファイルを s3 にスノーフレーク テーブルにロードしました。
問題は、S3 フォルダーに 1000 個のファイルが取り込まれており、スノーフレークとラムダの間で輻輳が発生していることです。 1000 個のファイルが S3 バケットに取り込まれたときに、ラムダが一度に 1 つのファイルを処理する方法を探しています。最初のファイルをロードした後は、次のファイルのみが順番に処理されます。例: Snowflake から確認を受け取るか、Snowflake に対する確認を受け取ります。
予約された同時実行数を持つように AWS Lambda 関数を設定できます - AWS Lambda:
Reserved Concurrency = 1 を設定すると、一度に 1 つの Lambda 関数インスタンスのみが実行されます。 Snowflake の構成に応じて、Snowflake に負荷をかけずにファイルをより高速に処理するために、これを 2 または 3 に増やすことを選択できます。
バッチ サイズ を構成することもできます。 S3 が同じ Lambda インスタンスに複数のファイルを送信する場合、コードはイベントをループし、呼び出しごとに複数のファイルを処理できます。
少し懸念があるのですが、多数のオブジェクトを作成し、Lambda 関数の同時実行数が 1 に制限されている場合、S3 による Lambda への呼び出しによって の実行後にタイムアウトが発生する可能性があります。複数回の再試行。その場合は、次のようにする必要があります:
イベントを以上がS3 から Snowflake にデータをロードし、1 対 1 の順序でラムダを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。