ラムダ関数のライブ


AWS CDK 私たちと私たちの読者のために素晴らしいされているServerless Stack . しかし、ラムダのローカル開発の経験は素晴らしいです.これを修正するために、我々は2009年にライブラムダ開発環境を作成しましたSST . SSTは、あなたの展開されたリソースに接続しながら、あなたのラムダ関数をローカルで動作できるようにすることにより、Serverlessアプリをビルドすることが容易になります.
どのように動作するかを見る前に、Serverlessのためのローカル開発環境が通常どのようなものかを見てみましょう.

背景


ラムダ関数を局所的に扱うことは苦痛である.どちらかです.

  • あなたのラムダ関数が使用するすべてのサービス
    APIゲートウェイ、SNS、SQSなどのように、これは難しいです.あなたが特定のサービス(APIゲートウェイのような)をモックするツールを使用しているならば、あなたは異なったサービス(SNSのような)によって起動されるラムダをテストすることができません.一方、サービスの全体のスイートをモンクしようとするサービスのようなlocalstackは、低速であり、モックサービスは時代遅れであることができます.

  • または、変更を展開する必要があります
    各展開は少なくとも1分を取ることができます.そして、変化をテストするために繰り返し配備することは、フィードバックループを本当に遅くします.
  • SSTスタート


    これを修正するためにsst start コマンドをServerless Stack Toolkit (SST) . これは、CDKを使用してServerlessアプリをビルドすることが容易になりますAWS CDKの拡張機能です.
    このコマンドはいくつかあります.
  • それはあなたのアプリケーションと同じ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 sst start コマンドSST ライブラムダ開発環境を作成します.AWS CDKを拡張することによって、CDKでサーバレスのアプリケーションを構築することができます.一方、ファーストクラスのローカル開発環境があります.
    我々の初期のユーザーの1つとしてそれを置く;sst start ラムダ開発の将来
    あなたがSSTプロジェクトが好きならば、我々のrepoを主演させてください

    セルレススタック / セルレススタック


    Serverlessのスタックツールキットを使用すると、cdkを使用してサーバーレスアプリケーションを構築することができます。



    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 sst start コマンドは、展開されたアプリケーションにWebSocket接続をオープンし、ローカルマシンに任意のラムダ要求をプロキシするローカル開発環境を起動します.
    View on GitHub