web-dev-qa-db-ja.com

S3から直接ラムダを呼び出す場合とSQS経由で行う場合

AWSは比較的初めてです。私は一般的なパターンであると私が思うものを使用しています:

  1. S3バケットにファイルを置く
  2. Lambda関数で上記のファイルを使用して何かを行う

このリンクを作成するための2つのオプションが表示されます(SNSは無視されます)。

  • s3イベントが発生したときにラムダを呼び出す
  • s3イベントをSQSキューに送信すると、ラムダがトリガーされます

最初は膨大な数のイベントを処理することはありませんが、将来的には、このラムダにさらに多くのバケットを接続することが期待されます。即時の呼び出し、メッセージの順序、速度/時間は、それほど重要ではありません。ただし、再試行、「失敗」したファイル、DLQ、およびその他すべての優れた機能のキャプチャisは重要です。

私はSQSルートに傾いています。それは私の要件によく合うと思います、それは私が何とか機能するテラフォームモジュールを作ることができたものであり、それが何らかの意味で私の請求書に追加されることはないと思います。

これは意見の問題ですか、それとも客観的により良い選択肢がありますか?

6
moarCoffee

最も堅牢なアプローチは

S3 -> SNS -> SQS -> Lambda

SNSはそのpubサブエンドポイントを提供するので、必要に応じてイベントにより多くのものを添付できます。

SNSを使用すると、メッセージを1回公開して1回以上配信できます。 SNSトピックは、受信者がイベント通知を受信するために動的にサブスクライブできるアクセスポイントです。

SQSはエラー処理と保証された配信を提供します

パブリッシュされたすべてのメッセージが正常に処理されることが重要である場合、開発者は(他のトランスポートを介した通知に加えて)SQSキューに配信される通知を持っている必要があります。

ただし、選択のすべての組み合わせに信頼性オプションがあります。 1つの方法があなたにとって正しい方法であると言うためには、非常に具体的な要件が本当に必要です。

5
Ewan