2

サーバーレス アーキテクチャを試すために、AWS API Gateway と AWS Lambda を試しています。ブログや AWS のドキュメントを読んでいます。サンプルの GET/POST を試しました。ただし、カスタム アプリケーションからのユーザー イベントの追跡に関して、次の要件があります。

  • アプリケーションから API エンドポイントにイベントがポストされる
    • API がカスタム レスポンスで応答するようにしたかった ({'fine'} と言う) (リクエストが受信されたことを確認する)
  • レスポンスが送信されたら、イベント ペイロードを AWS Lambda 関数に渡します。

ドキュメントに従って、a) イベントを API エンドポイントに投稿できる b) GET/POST で AWS Lambda 関数をトリガーする - AWS Lambda 関数から API リクエストに応答する

上記を変更して、次のように変更したかった a) イベントを API エンドポイントに投稿する a.0) リクエストを受信したことを確認して応答する [{'fine'} と言う] b) AWS Lambda 関数をトリガーして、イベント ペイロードを処理する

同じことを達成する方法についての提案を共有してください。

4

3 に答える 3

0

多くのお客様が使用している別の非同期モデル:

  1. Amazon Kinesis にリクエストを送信するように構成された API をセットアップします。この API は、要求を確認できます。
  2. Kinesis ストリームを使用するように AWS Lambda をセットアップします。

このセットアップには、Kinesis ストリームからのフェッチをバッチ処理でき、API Gateway の制限と Lambda の制限の両方を 1 対 1 でスケーリングする必要がないため、ワークロードの高い API にいくつかの利点があります。

アップデート

スケーラビリティに関する質問に答えるには:

キネシス

Kinesis は、「シャード」と呼ばれるものをストリームに追加することでスケーリングします。各シャードは、パーティション キーに基づいてトラフィックの一部を処理します。各シャードは 1000 rps または 1MBps までスケールアップします (制限を参照)。より低いデフォルトの 25 シャードでも、これは均等に分散されたパーティション キーで最大 25,000 rps または 25MBps をサポートします。

API ゲートウェイ

API Gateway のデフォルトのアカウント レベルの制限は 500 rps ですが、これは制限の引き上げをリクエストすることで簡単に拡張できます。現在推奨されているスケールを超える制限でサービスを使用している本番環境の顧客がいます。

于 2016-05-18T18:34:06.320 に答える
0

最初にいくつかのテストを実行して、ラムダ関数がすべてのロジックを完了することから得られる実際の応答時間のタイプを確認する必要があります。時間が許容範囲を超えている場合は、SNS トピックを使用してセカンダリ Lambda 関数をトリガーする別の非同期ソリューションを次に示します。

  1. API Gateway へのクライアント リクエスト -> Lambda 関数 A を呼び出す
  2. ラムダ A はペイロードを検証し、SNS トピック X に発行します
  3. ラムダ A が成功メッセージを返す{fine}-> API ゲートウェイ -> クライアント
  4. SNS トピック X が Lambda 関数 B をトリガーする
  5. ラムダ関数 B は与えられたロジックを実装します
于 2016-05-21T16:05:59.967 に答える
0

API からの迅速な応答が必要で、データの処理を待つ必要がない場合は、次のことができます。

  • イベントを API Gateway エンドポイントに投稿する
  • AWS Lambda 関数Aをトリガーする
  • Lambda 関数Aで AWS SDK を使用してLambda 関数Bを非同期的に呼び出す
  • Lambda 関数Acontext.succeed()でコールバック関数またはコールバック関数を呼び出して、API ゲートウェイに応答するcontext.done()
  • Lambda 関数Bは、API Gateway が既に応答を受信して​​いる間にデータを処理できます
于 2016-05-18T14:09:16.807 に答える