ラムダ関数のライブ
6439 ワード
AWS CDK 私たちと私たちの読者のために素晴らしいされているServerless Stack . しかし、ラムダのローカル開発の経験は素晴らしいです.これを修正するために、我々は2009年にライブラムダ開発環境を作成しましたSST . SSTは、あなたの展開されたリソースに接続しながら、あなたのラムダ関数をローカルで動作できるようにすることにより、Serverlessアプリをビルドすることが容易になります.
どのように動作するかを見る前に、Serverlessのためのローカル開発環境が通常どのようなものかを見てみましょう.
ラムダ関数を局所的に扱うことは苦痛である.どちらかです.
あなたのラムダ関数が使用するすべてのサービス
APIゲートウェイ、SNS、SQSなどのように、これは難しいです.あなたが特定のサービス(APIゲートウェイのような)をモックするツールを使用しているならば、あなたは異なったサービス(SNSのような)によって起動されるラムダをテストすることができません.一方、サービスの全体のスイートをモンクしようとするサービスのようなlocalstackは、低速であり、モックサービスは時代遅れであることができます.
または、変更を展開する必要があります
各展開は少なくとも1分を取ることができます.そして、変化をテストするために繰り返し配備することは、フィードバックループを本当に遅くします.
これを修正するために
このコマンドはいくつかあります. それはあなたのアプリケーションと同じAWSのアカウントと地域にWebSocket APIを使用してデバッグスタックを展開します. それはあなたのアプリケーションを展開し、スタブラムダでラムダ関数を置き換えます. デバッグスタックに接続するローカルWebSocketクライアントを起動します. デバッグスタックには、ServerlessなWebSocket APIとDynamoDBテーブルが含まれます.スタブラムダが呼び出されると、WebSocket APIにメッセージが送信され、WebSocket APIはそれに接続されたローカルクライアントにメッセージを送ります.クライアントは、ラムダ関数のローカルバージョンを実行し、結果をWebSocket APIに送信します.次にスタブラムダに応答する.そして最後にスタブラムダは結果と反応する.
例を見てみましょう.
このサンプルアプリケーションでは: APIゲートウェイ終点 SNS話題 APIに反応して、SNS話題にメッセージを送るラムダ関数(API . js) SNSトピックを購読するラムダ関数(SNS . js) それで、APIエンドポイント(APIのスタブ版)に要求がなされるとき.jsは呼び出され、デバッグスタックにメッセージを送ります.これは順番にクライアントにストリーミングされます.クライアントはAPIのローカルバージョンを起動します.デバッグ結果スタックに結果を返します.ローカル版もSNSのトピックにメッセージを送信します.一方、スタブAPI.JSはAPIリクエストに応答します.今SNSのスタブバージョン.それがSNS話題に登録されるので、JSは起動されます.これはデバッグスタックに送られ、順番にSNSのローカルバージョンを実行するためにクライアントにストリーミングされます.jsこの結果はスタブSNSにストリームバックされます.結果に応えるJS.
あなたはtry out this sample repo here .
このアプローチは2、3の利点を有する. あなたのラムダ関数をローカルで動作することができます あなたの配備されたAWSインフラストラクチャと相互作用する間 これはすべてのラムダのトリガをサポートしているので、API APIゲートウェイ、SQS、SNSなどに必要はありません. リアルラムダ環境変数 ラムダIAMパーミッションは、もしAAMパーミッションがないため、ラムダがラムダに失敗した場合、同様にローカルに失敗します. そしてそれは速い!変更するときに展開するものはありません! 注意するカップル. デバッグスタックは完全にサーバレスです それで、あなたが使用中でないとき、あなたは課金されません そして、それは要求ごとに非常に安い、それは自由な層の制限内になります すべてのデータは、ローカルマシンとAWSアカウントの間にとどまります 使用されるサードパーティのサービスはありません VPC内部のAWSリソースへの接続をサポートしています
The
我々の初期のユーザーの1つとしてそれを置く;
あなたがSSTプロジェクトが好きならば、我々のrepoを主演させてください
Serverless Stack Toolkit ( SST )
ServerlessのスタックツールキットAWS CDK それで を含むLive Lambda Development environment
を使用して設定しますesbuild
使用することができますCDK with Serverless Framework
SSTはまた、非同期的にあなたのCloudFormationスタックを展開することをサポートします.Seed ネイティブのSSTアプリの同時非同期展開をサポートします.種子のSST展開は無料です!
SSTにもいくつかの他のニコルが付属しています: コードを自動的に使用しますESLint
あなたのユニットテストを実行Jest
舞台裏では、SST使用a lightweight fork of AWS CDK プログラムによって様々なCDKコマンドを呼び出します.
あなたの最初のSSTアプリを作成します.
npx create serverless -stack@latestマイSSTアプリ
マイSSTアプリ
NSTのSSTスタート
The
View on GitHub
どのように動作するかを見る前に、Serverlessのためのローカル開発環境が通常どのようなものかを見てみましょう.
背景
ラムダ関数を局所的に扱うことは苦痛である.どちらかです.
あなたのラムダ関数が使用するすべてのサービス
APIゲートウェイ、SNS、SQSなどのように、これは難しいです.あなたが特定のサービス(APIゲートウェイのような)をモックするツールを使用しているならば、あなたは異なったサービス(SNSのような)によって起動されるラムダをテストすることができません.一方、サービスの全体のスイートをモンクしようとするサービスのようなlocalstackは、低速であり、モックサービスは時代遅れであることができます.
または、変更を展開する必要があります
各展開は少なくとも1分を取ることができます.そして、変化をテストするために繰り返し配備することは、フィードバックループを本当に遅くします.
SSTスタート
これを修正するために
sst start
コマンドをServerless Stack Toolkit (SST) . これは、CDKを使用してServerlessアプリをビルドすることが容易になりますAWS CDKの拡張機能です.このコマンドはいくつかあります.
一例
例を見てみましょう.
このサンプルアプリケーションでは:
あなたはtry out this sample repo here .
利点
このアプローチは2、3の利点を有する.
結論
The
sst start
コマンドSST ライブラムダ開発環境を作成します.AWS CDKを拡張することによって、CDKでサーバレスのアプリケーションを構築することができます.一方、ファーストクラスのローカル開発環境があります.我々の初期のユーザーの1つとしてそれを置く;
sst start
ラムダ開発の将来あなたがSSTプロジェクトが好きならば、我々のrepoを主演させてください
セルレススタック / セルレススタック
Serverlessのスタックツールキットを使用すると、cdkを使用してサーバーレスアプリケーションを構築することができます。
Serverless Stack Toolkit ( SST )
ServerlessのスタックツールキットAWS CDK それで
SSTはまた、非同期的にあなたのCloudFormationスタックを展開することをサポートします.Seed ネイティブのSSTアプリの同時非同期展開をサポートします.種子のSST展開は無料です!
SSTにもいくつかの他のニコルが付属しています:
クイックスタート
あなたの最初のSSTアプリを作成します.
npx create serverless -stack@latestマイSSTアプリ
マイSSTアプリ
NSTのSSTスタート
ラムダ開発
The
sst start
コマンドは、展開されたアプリケーションにWebSocket接続をオープンし、ローカルマシンに任意のラムダ要求をプロキシするローカル開発環境を起動します.View on GitHub
Reference
この問題について(ラムダ関数のライブ), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/work-on-your-lambda-functions-live-51cpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol