0

ラムダを使用してS3からRedshiftにファイルを移動します。AWSラムダとマルチパートアップロードS3から

データは、データプロバイダのRedshiftから直接UNLOADコマンドを使用してS3に配置されます。それは並行して走っているために、異なる時に完了することがある10の異なる部分に分かれています。

Redshiftにデータをインポートするトリガを起動する前に、すべてのデータが完全にアップロードされるまで、Lambdaトリガを待機させます。

ラムダでは「完全マルチパートアップロード」というイベントオプションがあります。 UNLOAD機能はラムダ内のマルチパートアップロードとしてカウントされますか?または、単純な "POST"イベントは、すべてのパートがプロバイダによって完全にアップロードされるまでは起動しませんか?

RedshiftのUNLOADコマンドがMultipartアップロードとしてカウントされていることを確認する明示的な文書や、データプロバイダ全体のアップロードが完了するまでトリガーが起動しないことを確認する明示的な文書はありません。

答えて

2

Amazon S3の場合、複数の部分からなるアップロードは1つのファイルで、複数の部分でS3にアップロードされます。すべての部品がアップロードされると、クライアントはCompleteMultipartUploadを呼び出します。クライアントがCompleteMultipartUploadを呼び出した後でのみ、S3にファイルが表示されます。

ファイルが完成した後で、ラムダ機能が起動されます。あなたは各パーツのラムダトリガーを取得しません。

UNLOAD操作でS3で複数のオブジェクト/ファイルが生成されている場合は、S3の「マルチパートアップロード」ではありません。

+0

ありがとうございます!したがって、データがアップロードから10個のファイルのセットに入っている場合、10個のファイルがすべて完了するまでトリガーを開始しないように設定することをどのように提案しますか? 私はUNLOADを使ってファイルの並列生成をオフにすることを検討しました。そのため、それぞれが完了してアップロードされると、インポートが開始されます。それは効率的でしょうか?不必要に複雑に思えます – dataflux

+0

10個すべてが完了するまでラムダトリガーを抑制することはできません。あなたができることは、最後のファイルがトリガーされるまでトリガーを無視することです。 –

関連する問題