2017-04-19 30 views
0

私はAWSラムダ関数があります:Pythonスクリプトを実行しますS3 ObjectCreatedトリガーにマルチパートアップロードS3トリガでラムダをトリガする方法は1回だけですか?

  1. 反応し
  2. EC2インスタンスにsshと

このPythonスクリプトは、EMRを実行します作成されたこれらのS3パーツファイルをすべて処理します。 (はい、ファイルが共同で処理する必要があります。)

しかし、パート・ファイル(file_part_0000file_part_0001file_part_0002、など)は、マルチパートアップロードとして作成されます。

Lambda Event: {..., "eventName": "ObjectCreated:CompleteMultipartUpload", ...} 

これは、一部のファイルがあるとして、このトリガは、多くの時間としてPythonスクリプトをSSHおよび実行するためにラムダを強制するというのが私の理解です。私はラムダがsshをしてスクリプトを一度だけにしたいと思う。

ラムダを起動させる方法はありますかマルチパートアップロードの各シリーズには1回限りですか?

+3

ObjectCreated:CompleteMultipartUploadイベントは、S3マルチパートアップロードの*完了*によってオブジェクトが作成されたときに発生します。 – jarmod

答えて

1

Configuring Amazon S3 Event Notifications

で述べたようにあなたが失敗した操作からイベント通知を受信しません。

イベントがs3:ObjectCreated:CompleteMultipartUploadとコールされる理由は、マルチパートが完全にアップロードされている場合にのみイベントが発生することです。

一方、SQSに情報を送信するためにS3イベントトリガーを作成する必要があります。だから、あなたのpythonプログラムがSQSキューを見てファイルを処理できるようにすることができます。 SQSを使うと、サーバをsshするためにパスワードなし設定やラムダの秘密鍵の格納をする必要はありません。

+0

あなたと@jarmodが完全にアップロードについて言及していることは本当です。しかし、私は私の問題に対処しているかどうかはわかりません。問題は、「CompleteMultipartUpload」イベントが発生したときに、ラムダが何百回も実行されることです(つまり、各パーツファイルごとに1回)。パーツファイルの各「シリーズ」または「グループ」ごとに** **ただ一回**実行します。 'file *'だけではなく、 'file_part0001'、' file_part0002'、 'file_part0003'などのために実行します。 – zephel

+0

SQS上のあなたのところでは、SQSもすべての部分ファイルのキューを作成しませんか?繰り返しますが、これは私が望むものではありません... – zephel

関連する問題