
シェア:
アダムは開発者兼コンサルタントで、ウルトラランニング、ブログ、そして指導と支援への飽くなき欲求を持ちながら、他の人々が素晴らしいことを成し遂げるためにテクノロジーを手なずけるのを助けることを楽しんでいる。
AWS LambdaとPythonを使ったメッセージキューイングにAmazon SQSを使う
大量のメッセージを受信することが予想される場合、それらがすべて受信されることを保証することは問題になる可能性がある。このような落とし穴を回避する1つの方法は、以下のようなメッセージキューを使うことだ。 AWS SQS.
この例では、サーバーレスマイクロサービスを AWSラムダでサーバーレスマイクロサービスを作成します。 Githubで公開されているPythonアプリケーションで公開されている フラスコと サーバーレス.このアプリケーションには2つの目的がある:アプリケーションは、メッセージを AWS SQSにメッセージを追加し Vonage SMSによる実際の送信を容易にする。
前提条件
Python 3.8(アップデート
serverless.ymlより高いバージョンが必要な場合)Node.jsとnpm
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
セットアップ方法
クローン をクローンしてください。レポを GitHub からクローンし、新しく作成したディレクトリに移動します。
環境
名称変更 .env.defaultを .envに変更し、値を VONAGE_API_KEYおよび VONAGE_API_SECRETに値を追加します。 Vonage API ダッシュボード.
AWSセットアップ
以下を作成する必要があります。 AWS認証情報を作成する必要があります。ファイル .envファイルを更新してください。
また、新しい キューキューを作成し .envを SQS キューの URL で更新します。FIFO を使用することで、メッセージが保存された順序で送信されるようになります。
使用方法
手始めに、プロジェクトのルート内にvirtualenvを作成し、その中にプロジェクトを格納する。そして、以下のようにアクティベートする:
次に、npmを初期化し、デフォルトを選択するプロンプトに従う。変更したいものがなければ。また、ServerlessとLambdaがFlaskアプリで動作するように、npmを使ってdevに必要な依存関係をインストールする。
これで、pipを使って必要なPythonの依存関係をインストールできる。依存関係はrequirements.txtに既に記載されているので、それを使うようにpipに指示してください。
地元で走る
AWS Lambdaにデプロイする前に、ローカルでアプリを実行してテストしたい場合は、以下のコマンドでアプリを提供できる:
デフォルトでは http://localhost:5000.を押すとアプリは終了する。 Ctrl+cを押すと終了する。
ラムダへのデプロイ
上記がすべて成功したら、次は Serverlessを使ってアプリをAWS Lambdaにデプロイすることができる。
重要:このアプリケーションには、使用するための認証が含まれていません。そのため、一般利用を防ぐために、必ずその前に認証を追加してください。一般に公開したままにしておくと、AWSやVonageで利用料金が発生する可能性があります。
利用可能なエンドポイント
このクライアントでは、4つのURLエンドポイントが利用可能です:
1 HTTP GETリクエスト /
何のアクションも実行しないが、素早くテストする方法を提供する。
2 HTTP POSTリクエスト /add
このアクションはメッセージをSQSに保存する。
以下のようなJSONボディのPOSTを渡す。で示されるプレースホルダを
<>で示されたプレースホルダをあなたのデータで置き換えます。結果にはSQSが含まれる
MessageId.
{
"from": "<your_name_or_number>",
"message": "<sms_message_contents>",
"to": "<recipients_number>"
}
3 HTTP GETリクエスト /get
SQS FIFO キューからメッセージを取得します。
一度受信すると
ReceiptHandleを使えばキューから削除できる。
location=None, media_mode=relayed, archive_mode=manual4 HTTP POSTリクエスト /delete
このアクションは SQS からメッセージを削除します。
以下のようなJSONボディのPOSTを渡す。で示されるプレースホルダを
<>で示されたプレースホルダをあなたのデータで置き換えます。
{
"receipt_handle": "<your_receipt_handle>",
}
例を挙げよう:
デプロイプロセスが提供するURLにアクセスする。以下に、リクエストの例をいくつか示します:(URLは異なります。)
ゲット https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/
エンドポイントは /エンドポイントは一般的なメッセージを返します。
ポスト https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/add
エンドポイントは addエンドポイントはSQS MessageId.
ゲット https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/get
エンドポイントは getエンドポイントは、使用するためのメッセージを返します。
ゲット https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/delete
この deleteを終了すると、SQS からメッセージが削除されます。
Virtualenvの停止
virtualenvを終了するには、必要であれば解除することができる。
注:OSによっては、上記のコマンドの前に
virtualenvを付加する必要がある。
次のステップ
何か質問があったり、問題が発生した場合は、以下までご連絡ください。 までご連絡ください。にご連絡いただくか VonageコミュニティSlackチームにお問い合わせください。頑張ってください。
