0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SAM Localコマンドについての備忘録

0
Posted at

以下2つのコマンドについて、違いがわからなかったので調べました。

sam local invoke <arguments> <options>
sam local start-lambda <options>

sam local invokeコマンド

sam local invoke サブコマンドは、 AWS Lambda 関数の 1 回限りの呼び出しをローカルで開始します。

想定ユースケース:

  • Lambda 関数の単体テスト
    API Gateway や Step Functions を介さず、特定のイベントを直接渡して動作確認が可能です。
  • デバッグ
    ローカル環境で関数をデバッグし、標準出力を確認しながら動作を調整できます。

sam local start-lambdaコマンド

sam local start-lambda サブコマンドは、 AWS Lambdaをエミュレートするローカルエンドポイントを起動します。

想定ユースケース:

  • ローカル環境で API Gateway などから Lambda を呼び出す
    例えば、Lambda を API Gateway や AWS Step Functions などの外部サービスと連携させたい場合、ローカル環境でその動作を確認できます。
  • 外部ツール(Postmanなど)を使って関数をテスト
    sam local start-lambda を起動すれば、Lambda をローカル API として動かせるので、Postman や curl を使って手軽にリクエストを送信し、レスポンスを確認できます。

結論

sam local invokeは、

1. ローカル上でLambdaコンテナを起動し、
2. ローカルでイベントを渡して、
3. 1回だけ実行できる

というコマンドでした。

一方、sam local start-lambdaは

1. ローカル上でLambdaのエミュレーター(エンドポイント)を作り、
2. ローカル上でAPIを起動して、
3. 複数回の動作確認を手軽に実行できる

というコマンドでした。

  • Lambdaコンテナをローカル上で起動して呼び出すのがinvoke
  • Lambdaのエンドポイントをローカル上で作成するのがstart-lambda
    と覚えればよいと思います。
    (invokeはLambdaを"起動"すること、start-lambdaは実行環境を"開始"すること、という意図の命名だと思います)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?