3

S3 バケット内のファイルを取得し、ファイルの内容に基づいて多くの処理とさらなるリクエストを行うワークフローがあります。現在、クライアントはファイルをアップロードした後、ワークフローを手動でトリガーする必要があります。これは私にとってかなり一般的な使用例のようですが、ファイルがアップロードされるとすぐにワークフローをトリガーする方法はありますか?

間に SNS 通知が必要だと思いますが、サービスがそれらを消費してワークフローを開始することなく、通知を SWF に直接送信する方法はありますか?

4

2 に答える 2

7

アップデート

AWS はついに本日、 Amazon S3 の新しいイベント通知を開始しました。これは、実際には、PUT、POST、および COPY などの S3 API を介してオブジェクトを作成するための追加のイベント タイプを使用して、長く利用可能なPUT バケット通知API を単純に拡張するものです。

  • s3:ObjectCreated:*
  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:Copy
  • s3:ObjectCreated:CompleteMultipartUpload

最初の答え

[...] サービスがそれらを消費してワークフローを開始することなく、通知を SWF に直接送信する方法はありますか?

残念ながら、そのような方法はありません。実際には仲介サービスが必要です。PUTバケット通知は明らかに他のタイプのイベントも許可するように設計されていますが、Amazon S3はAmazon SNS通知をサポートしていません。今日の:

この PUT 操作の実装では、サブリソースを使用してnotification、バケットの指定されたイベントの通知を有効にします。現在、このs3:ReducedRedundancyLostObjectイベントは通知でサポートされている唯一のイベントです。このs3:ReducedRedundancyLostObjectイベントは、Amazon S3 がオブジェクトのすべてのレプリカを失い、そのオブジェクトのリクエストを処理できなくなったことを検出したときにトリガーされます。[鉱山を強調]

于 2014-05-23T15:26:15.380 に答える
1

Steffen Opel が言ったように、現時点ではこれを行う方法はありません。ただし、彼の最新の回答が提供した代替ルートは、AWS の新しいイベント処理サービスLambda (ATM はプレビュー段階) を使用することです。S3 用に構成する方法を示すドキュメントはこちらにありますが、概要は次のとおりです。

  1. object-put イベントで何かを実行するラムダ関数をセットアップします (この場合は、SWF を呼び出します)。
  2. 適切なユーザーとロールを使用してそのラムダ関数に発行するようにバケットを構成します
  3. そのバケットでイベントが発生すると、ラムダ関数が AWS ハードウェアで実行されます
于 2014-11-19T08:37:10.183 に答える