SAMの各コマンドをhelpを元にまとめてみました。最新情報は公式ドキュメントを参照してください。3.6インストール等こちらを参照ください。Gatewayをデプロイしてみた(Python)コマンド組み合わせの一覧OPTIONSを除いたコマンドの組み合わせは下記です。概要サンプルアプリケーションの作成を行います。[OPTIONS]OPTIONSOPTIONSは下記となります。gitでテンプレートとなるファイルを取得する。TEXTにはパスを記述。Lambdaの言語を指定する。出力先のフォルダパスを指定する。プロジェクト名を指定する。この名前のフォルダが作成される。プロンプトの入力を無効にしてデフォルトのテンプレート設定を使用する。デバッグログを表示する。使用例Python3.6でサンプルを作成します。my_project_nameローカル配置SAMのコマンドではありませんが、必要ライブラリのインストールやbuildフォルダ以下に必要なファイルを集めておきます。概要Lambda関数を実行する際のペイロード(実行時の引数)のサンプルを作成できます。後ほど紹介する「Lambdaのテスト実行」で使用します。[ARGS]...OPTIONSOPTIONSは下記となります。COMMANDSとARGSCOMMANDSとARGSは下記となります。Gatewayのイベントを作成する。DynamoDBのイベントを作成する。Kinesisのイベントを作成する。S3のイベントを作成する。Scheduleのイベントを作成する。SNSのイベントを作成する。このうち、S3についてはバケット名なども指定します。Gatewayのイベントを作成します。結果を外部ファイルに保存しておくと便利です。event_api.json作成したペイロードのbody部分がAPIを叩いた際のペイロードとなります。概要Lambda関数をローカルで実行することで動作確認を行えます。Lambda関数を実行する際のペイロードは、stdinでその場で渡すことも可能ですが、予め作成しておくと便利です。[FUNCTION_IDENTIFIER]OPTIONSOPTIONSは下記となります。Lambda実行時のイベントファイル(json)を指定する。未指定時は、stdinでjsonを入力する。SAMのテンプレートファイルを指定する。未指定時はtemplate.yamlまたはtemplate.ymlとする。環境変数を記述したjsonファイルを指定する。ローカルデバッグ用のポート番号を指定する。デバッガに渡す追加の引数を指定する。既存のDockerネットワークに接続する。ログの出力ファイルを指定する。Lambda用の最新Dockerファイルの取得をスキップする。AWSの認証プロファイルを指定する。デバッグログを表示する。環境変数ファイルは、例えば下記のようになります。},}https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/test-sam-cli.htmlFUNCTION_IDENTIFIER実行対象となるLambda関数のIDを指定します。template.yamlに記載されています。initで作成したtemplate.yamlだと、下記のHelloWorldFunctionが該当します。Gatewayのイベントパラメータを使用して、Lambdaをローカル実行します。event_api.jsonうまくいかない場合は、例えば下記のようにするのも手です。Gatewayを経由した動作確認を行うことができます。[OPTIONS]OPTIONSOPTIONSは下記となります。invokeと同じです。ローカルホストまたはIPアドレスを指定する。ローカルポート番号を指定する。CSS/JavaScript/HTMLなどの静的アセットを指定する。SAMのテンプレートファイルを指定する。未指定時はtemplate.yamlまたはtemplate.ymlとする。環境変数を記述したjsonファイルを指定する。ローカルデバッグ用のポート番号を指定する。デバッガに渡す追加の引数を指定する。既存のDockerネットワークに接続する。ログの出力ファイルを指定する。Lambda用の最新Dockerファイルの取得をスキップする。AWSの認証プロファイルを指定する。デバッグログを表示する。使用例OPTION無しでも良いのですが、ログを外部出力させてみます。quit)マウントしているアドレスにアクセスします。方法は何でも良いのですが、ここではcurlコマンドを使用します。57終了する場合は、CTRL+CでOKです。ログファイルは下記のようになっています。Logsに残るようなやつですね。概要Lambda関数をテストするためのローカルエンドポイントを作成します。start-apiと似ていますが、HTTPサーバか否かが異なります。Gateway経由で公開しないLambdaはこちらを使えば良いと思います。CLIまたはSDKを使用して呼び出しを行います。プログラムから呼び出せるので、自動テストなどを作れます。[OPTIONS]OPTIONSOPTIONSは下記となります。invokeと同じです。ローカルホストまたはIPアドレスを指定する。ローカルポート番号を指定する。SAMのテンプレートファイルを指定する。未指定時はtemplate.yamlまたはtemplate.ymlとする。環境変数を記述したjsonファイルを指定する。ローカルデバッグ用のポート番号を指定する。デバッガに渡す追加の引数を指定する。既存のDockerネットワークに接続する。ログの出力ファイルを指定する。Lambda用の最新Dockerファイルの取得をスキップする。AWSの認証プロファイルを指定する。デバッグログを表示する。使用例まずはLambda関数のローカルエンドポイントを作成します。下記コマンドで実行します。ステータスコードが返ってきます。200}ログファイルはそれぞれ下記となっています。\"125.xxx.xxx.xxx\"}"}実行時のペイロードを指定することもできます。CLIの機能になります。詳細は下記を参照してください。下記のPythonプログラムでLambdaを実行してみます。main()実行時のコマンドを結果は下記です。0x03599C70>}output-lambda.logは似た内容なので割愛します。SAMのテンプレートファイルが正しく作成できているか検証します。内容の検証ではなくYAMLファイルとしてのフォーマットを検証するだけです。[OPTIONS]OPTIONSOPTIONSは下記となります。SAMのテンプレートファイルを指定する。未指定時はtemplate.yamlまたはtemplate.ymlとする。デバッグログを表示する。意図的にNGのテンプレートファイルを作成し、検証してみます。python3.6#略では検証してみましょう。hello_world/build/怒られました。概要コード類をまとめてS3にアップロードし、CloudFormationでLambdaにデプロイできるSAMテンプレートファイルを生成します。[ARGS]...OPTIONSOPTIONSは下記となります。テンプレートファイルを指定する。作成するデプロイ用のテンプレートファイルを指定する。アップロード先のS3バケット名を指定する。デバッグログを表示する。S3バケットを作成しておきます。s3://mybucket実行します。バケット名の指定を忘れないようにします。mybucketLambdaにデプロイ概要S3にパッケージ化したものをLambdaにデプロイします。[ARGS]...OPTIONSOPTIONSは下記となります。デプロイに使用するテンプレートファイルを指定する。CloudFormationのスタック名を指定する。ロール作成を明示する。デバッグログを表示する。