sam local start-lambda - AWS Serverless Application Model

sam local start-lambda

AWS CLI または SDK を使用して、プログラムで Lambda 関数をローカルで呼び出すことができます。このコマンドは、AWS Lambda をエミュレートするローカルエンドポイントを起動します。

このコマンドを使用する場合、AWS SAM CLI はデフォルトで、現在の作業ディレクトリがプロジェクトのルートディレクトリであると想定します。AWS SAM CLI はまず、sam build コマンドを使用して構築されたテンプレートファイルを見つけようとします。これは .aws-sam サブフォルダにあり、template.yaml または template.yml と命名されています。AWS SAM CLI は次に、現在の作業ディレクトリで、template.yaml または template.yml と命名されているテンプレートファイルを見つけようとします。--template オプションを指定する場合、AWS SAM CLI のデフォルト動作が上書きされ、その AWS SAM テンプレートと、それがポイントするローカルリソースだけがロードされます。

自動化されたテストは、このローカル Lambda エンドポイントに対して実行できます。AWS CLI または SDK を使用してこのエンドポイントに呼び出しを送信すると、リクエストで指定された Lambda 関数がローカルで実行されます。

使用:

sam local start-lambda [OPTIONS]

例:

# SETUP # ------ # Start the local Lambda endpoint by running this command in the directory that contains your AWS SAM template. sam local start-lambda # USING AWS CLI # ------------- # Then, you can invoke your Lambda function locally using the AWS CLI aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt # USING AWS SDK # ------------- # You can also use the AWS SDK in your automated tests to invoke your functions programatically. # Here is a Python example: # # self.lambda_client = boto3.client('lambda', # endpoint_url="http://127.0.0.1:3001", # use_ssl=False, # verify=False, # config=Config(signature_version=UNSIGNED, # read_timeout=0, # retries={'max_attempts': 0})) # self.lambda_client.invoke(FunctionName="HelloWorldFunction")

オプション:

オプション 説明
--hook-name TEXT

AWS SAM CLI 機能の拡張に使用されるフックの名前。

許容値: terraform

--skip-prepare-infra --hook-name オプションを使用してインフラストラクチャの変更が行われていない場合は、準備段階をスキップします。
--host TEXT バインド先のローカルホスト名または IP アドレス (デフォルト:「127.0.0.1」)。
-p, --port INTEGER リッスンするローカルポート番号 (デフォルト: 「3001」)。
-t, --template PATH AWS SAM テンプレートファイルです。

注意: このオプションを指定すると、AWS SAM は、テンプレートと、それがポイントするローカルリソースのみをロードします。このオプションは --hook-name と互換性がありません。

-n, --env-vars PATH Lambda 関数の環境変数の値が含まれる JSON ファイルです。
--parameter-overrides オプション。キーバリューペアとしてエンコードされた AWS CloudFormation パラメータオーバーライドが含まれる文字列です。AWS CLI と同じ形式を使用します。例えば、「ParameterKey=KeyPairName、ParameterValue=MyKey ParameterKey=InstanceType、ParameterValue=t1.micro」です。このオプションは --hook-name と互換性がありません。
-d, --debug-port TEXT 指定すると、Lambda 関数コンテナをデバッグモードで起動し、このポートをローカルホストに公開します。
--debugger-path TEXT Lambda コンテナにマウントされるデバッガーへのホストパス。
--debug-args TEXT デバッガーに渡される追加の引数です。
--warm-containers [EAGER | LAZY]

オプションです。AWS SAM CLI が各関数のコンテナを管理する方法を指定します。

以下の 2 つのオプションを使用できます。

   EAGER: 起動時にすべての関数のコンテナがロードされ、呼び出し間で保持されます。

   LAZY: 各関数が初めて呼び出される場合に限り、コンテナがロードされます。これらのコンテナは、追加の呼び出し用に保持されます。

--debug-function

オプション。--warm-containers が指定されているときにデバッグオプションを適用する Lambda 関数を指定します。このパラメータは、--debug-port--debugger-path、および --debug-args に適用されます。

-v, --docker-volume-basedir TEXT AWS SAM ファイルが存在するベースディレクトリの場所です。Docker がリモートマシンで実行されている場合は、Docker マシン上に AWS SAM ファイルが存在するパスをマウントし、この値をリモートマシンと一致するように変更する必要があります。
--docker-network TEXT デフォルトのブリッジネットワークと共に、Lambda Docker コンテナが接続される必要がある既存の Docker ネットワークの名前または ID です。これを指定すると、Lambda コンテナはデフォルトのブリッジ Docker ネットワークにのみ接続します。
--container-env-vars オプション。ローカルでデバッグする時に、環境変数をイメージコンテナに渡します。
-l, --log-file TEXT ランタイムログを送信するログファイルです。
--layer-cache-basedir DIRECTORY テンプレートで使用されるレイヤーがダウンロードされる場所である basedir を指定します。
--invoke-image TEXT

ローカル関数の呼び出しに使用するコンテナーイメージの URI。デフォルトで、AWS SAM は Amazon ECR Public からコンテナイメージをプルします。このオプションは、別の場所からイメージをプルするために使用します。

例えば、sam local start-lambda MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8 です。

--skip-pull-image Lambda ランタイムの最新 Docker イメージのプルダウンを CLI がスキップすべきかどうかを指定します。
--force-image-build レイヤーを使用して関数を呼び出すために使用されるイメージを CLI が再構築すべきかどうかを指定します。
--beta-features | --no-beta-features ベータ機能を許可または拒否します。
--profile TEXT AWS 認証情報を取得する、認証情報ファイルから特定のプロファイルです。
--region TEXT デプロイ先の AWS リージョンです。例えば、us-east-1 などです。
--config-file PATH 使用するデフォルトのパラメータ値が含まれる設定ファイルのパスとファイル名です。デフォルト値は、プロジェクトディレクトリのルートにある「samconfig.toml」です。設定ファイルの詳細については、「AWS SAM CLI の設定ファイル」を参照してください。
--config-env TEXT 使用する設定ファイル内のデフォルトパラメータ値を指定する環境名です。デフォルト値は「default」です。設定ファイルの詳細については、「AWS SAM CLI の設定ファイル」を参照してください。
--shutdown シャットダウン動作の拡張機能処理をテストするために、呼び出し完了後にシャットダウンイベントをエミュレートします。
--container-host TEXT ローカルでエミュレートされた Lambda コンテナのホストです。デフォルト値は、「localhost」です。macOS 上の Docker コンテナで AWS SAM CLI を実行する場合は、host.docker.internal を指定できます。AWS SAM CLI 以外のホストでコンテナを実行する場合は、リモートホストの IP アドレスを指定できます。
--container-host-interface TEXT コンテナポートがバインドする必要があるホストネットワークインターフェイスの IP アドレスです。デフォルト値は、「127.0.0.1」です。0.0.0.0 を使用して、すべてのインターフェイスにバインドします。
--debug デバッグロギングをオンにして、AWS SAM CLI が生成するデバッグメッセージを出力表示し、タイムスタンプを表示します。
--help このメッセージを表示して終了します。