LoginSignup
14
12

More than 3 years have passed since last update.

[AWS] Serverless Application Model (SAM) の基本まとめ

Last updated at Posted at 2020-07-27

SAM

SAMとは

サーバレスアプリケーションを構築するためのオープンソースなフレームワークで、イベント駆動の性質を持つサーバレスアプリケーションのデプロイに特化したCloudFormationの拡張機能として提供されています。
SAMは、YAML、またはJSON形式によるテンプレートへの記述により

  • 関数
  • API
  • データベース
  • イベントソースマッピング

を表現することができます。

SAMを利用するメリット

Lambdaを作成する場合、Lambdaの実行に関する権限を付与する必要がありますが、こ

対応言語

SAMでは、Lambdaがサポートされている任意のランタイムを使用するサーバレスアプリケーションを構築することができます。
ユーザが任意で追加するランタイム以外で、Lambdaが標準でサポートされている言語は、下記の通り(2020年7月時点)です。

  • Node.js (12/10)
  • Python (3.8/3.7/3.6/2.7)
  • Ruby (2.7/2.5)
  • Java (11/8)
  • Go (1.x)
  • .NET (3.1/2.1)

対応リージョン

SAMでは、Lambdaがサポートされているリージョンで利用することができます。利用可能なリージョンは、下記の通り(2020年7月時点)です。

  • バージニア北部(us-east-1)
  • オハイオ(us-east-2)
  • 北カリフォルニア(us-west-1)
  • オレゴン(us-west-2)
  • ケープタウン(af-south-1)
  • 香港(ap-east-1)
  • ムンバイ(ap-south-1)
  • ソウル(ap-northeast-2)
  • シンガポール(ap-southeast-1)
  • シドニー(ap-southeast-2)
  • 東京(ap-northeast-1)
  • カナダ中部(ca-central-1)
  • フランクフルト(eu-central-1)
  • アイルランド(eu-west-1)
  • ロンドン(eu-west-2)
  • ミラノ(eu-south-1)
  • パリ(eu-west-3)
  • ストックホルム(eu-north-1)
  • バーレーン(me-south-1)
  • サンパウロ(sa-east-1)

デプロイ

SAM自体は、もともとCloud Formationを拡張したものであるため、SAMの中でCloud Formationのリソースを定義することができるとともに、デプロイの中でリソースのプロビジョニングを行うこともできます。
そのため、関連するコンポーネントの定義も含めて一元的に管理できるようになります。

料金

SAM自体は追加料金なしで使用することができます。
デプロイしたアプリケーションや、プロビジョニングされたリソースについてのみ、それぞれの利用に応じた料金が請求されます。

SAM CLI

SAMを操作するためのコマンドラインで、SAMの本体とともに、オープンソースとして公開されています。
SAM CLIは、ローカルにLambdaに似た実行環境を構築することができ、ローカル環境でテストやデバッグすることが可能となります。

SAM CLIインストール手順

ローカル環境でテスト・デバッグするために、Dockerの環境が必要となります。

Mac

  1. Docker Desktopをインストールする
  2. Homebrewをインストールする
  3. SAM CLIをインストール

    brew tap aws/tap
    brew install aws-sam-cli
    

Windows(64bit)

  1. Dockerをインストールする
  2. SAM CLIのインストーラをダウンロードし、インストールする

Linux

  1. Dockerをインストールする
  2. pipをインストールする

    curl -kL https://bootstrap.pypa.io/get-pip.py | python
    
  3. SAM CLIをインストール

    pip install -U aws-sam-cli
    

SAM CLIコマンドリファレンス

ローカルでの開発・テスト

sam init

SAM テンプレートを使用してサーバーレスアプリケーションを初期化します。テンプレートはLambda関数のフォルダ構造を提供し、API、S3バケット、DynamoDBテーブルなどのイベントソースに接続できます。
このアプリケーションには、使用を開始し、最終的には本番規模のアプリケーションに拡張するために必要なものがすべて含まれています。

構文

sam init [OPTIONS]

オプション

Option Description
--no-interactive initパラメータの対話型プロンプトを無効にし、必要な値がない場合は失敗します。
-l, --location TEXT テンプレートまたはアプリケーションの場所 (Git、Mercurial、HTTP/HTTPS、ZIP、パス)。このパラメータは、--no-interactiveが指定され、--runtime--name--app-templateが指定されていない場合に必要です。Gitリポジトリの場合は、リポジトリのルートの場所を使用する必要があります。
-r, --runtime [python2.7 / nodejs6.10 / ruby2.5 / java8 / python3.7 / nodejs8.10 / dotnetcore2.0 / nodejs10.x / dotnetcore2.1 / dotnetcore1.0 / python3.6 / go1.x] アプリケーションのLambdaランタイム。このパラメータは、--no-interactiveが指定され、--locationが指定されていない場合に必要です。
-d, --dependency-manager [gradle / mod / maven / bundler / npm / cli-package / pip] Lambdaランタイムの依存関係マネージャ
-o, --output-dir PATH 初期化されたアプリケーションが出力される場所。
-n, --name TEXT フォルダとして生成されるプロジェクトの名前。このパラメータは、--no-interactiveが指定され、--locationが指定されていない場合に必要です。
--app-template TEXT 使用するマネージドアプリケーションテンプレートの識別子。不明な場合は、対話型ワークフローのオプションを指定せずに「sam init」を呼び出します。このパラメータは、--no-interactiveが指定され、--locationが指定されていない場合に必要です。このパラメータは、SAM CLIバージョン0.30.0以降でのみ使用できます。以前のバージョンでこのパラメータを指定すると、エラーが発生します。
--no-input Cookiecutterのプロンプトを無効にし、テンプレート設定で定義されているデフォルト値を受け入れます。

sam build

このコマンドを使用して、Lambdaソースコードを構築し、Lambdaの実行環境をターゲットとするデプロイアーティファクトを生成します。これにより、ローカルで構築する関数は、AWSクラウド内の同様の環境で実行されます。
sam buildコマンドは、アプリケーション内の関数を反復処理し、依存関係を含むマニフェストファイル (requirements.txtなど) を検索し、sam packageおよびsam deployコマンドを使用してLambdaにデプロイできるデプロイアーティファクトを自動的に作成します。
またsam buildsam local invokeのような他のコマンドと組み合わせて使用して、アプリケーションをローカルでテストすることができます。

構文

sam build [OPTIONS] [RESOURCE_LOGICAL_ID]

オプション

Option Description
-b, --build-dir DIRECTORY 構築されたアーティファクトが格納されるフォルダへのパス。このオプションを使用すると、このディレクトリとそのすべてのコンテンツが削除されます。
-s, --base-dir DIRECTORY このフォルダに関する関数のソースコードへの相対パスを解決します。AWS SAM テンプレートとソースコードが同じ囲みフォルダにない場合は、これを使用します。デフォルトでは、相対パスはテンプレートの場所に関して解決されます。
-u, --use-container 関数がネイティブにコンパイルされた依存関係を持つパッケージに依存する場合、このフラグを使用してLambdaに似たDockerコンテナ内で関数を構築します。
-m, --manifest PATH デフォルトの依存関係マニフェストの代わりに使用するカスタム依存関係マニフェスト (例:package.json) へのパス。
-t, --template PATH SAM テンプレートファイル [デフォルト: template.[yaml / yml]]。
--parameter-overrides 省略可能。キーと値のペアとしてエンコードされた、AWS CloudFormation パラメータオーバーライドを含む文字列。AWS CLI と同じ形式を使用します — 例:「ParameterKey=KeyPairName、ParameterValue=MyKey ParameterKey=InstanceType、ParameterValue=t1.micro」。
--skip-pull-image コマンドがLambdaランタイムの最新のDockerイメージのプルダウンをスキップするかどうかを指定します。
--docker-network TEXT Lambda Dockerコンテナに接続する既存のDockerネットワークの名前またはIDを、デフォルトのブリッジネットワークとともに指定します。指定しない場合、Lambdaコンテナはデフォルトのブリッジ Docker ネットワークにのみ接続します。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

sam local invoke

ローカル Lambda 関数を一度呼び出し、呼び出しが完了した後に終了します。
これは、非同期イベント(S3またはKinesisイベントなど)を処理するサーバーレス関数を開発する場合に便利で、テストケースのスクリプトを作成する場合にも便利です。
イベント本体は、stdin(デフォルト)によって、または--eventパラメータを使用して渡すことができます。ランタイム出力 (ログなど)はstderrに出力され、Lambda関数の結果はstdoutに出力されます。

構文

sam local invoke [OPTIONS] [FUNCTION_IDENTIFIER]

オプション

Option Description
-e, --event PATH 呼び出されたときにLambda関数に渡されるイベントデータを含むJSONファイル。このオプションを指定しない場合、イベントは想定されません。stdinからJSONを入力するには、値「-」を渡す必要があります。
--no-event 空のイベントを使用して関数を呼び出します。
-t, --template PATH SAM テンプレートファイル [デフォルト: template.[yaml / yml]]。
-n, --env-vars PATH Lambda関数の環境変数の値を含むJSONファイル。環境変数ファイルの詳細については、「環境変数ファイル」を参照してください。
--parameter-overrides 省略可能。キーと値のペアとしてエンコードされたCloudFormation パラメータオーバーライドを含む文字列。AWS CLIと同じ形式を使用します — 例: 「ParameterKey=KeyPairName, ParameterValue=MyKey ParameterKey=InstanceType,ParameterValue=t1.micro」。
-d, --debug-port TEXT 指定すると、Lambda関数コンテナをデバッグモードで起動し、このポートをローカルホストに公開します。
--debugger-path TEXT Lambdaコンテナにマウントされるデバッガーへのホストパス。
--debug-args TEXT デバッガーに渡される追加の引数。
-v, --docker-volume-basedir TEXT SAMファイルが存在するベースディレクトリの場所。Dockerがリモートマシンで実行されている場合は、Dockerマシン上に AWS SAMファイルが存在するパスをマウントし、この値をリモートマシンと一致するように変更する必要があります。
--docker-network TEXT Lambda Dockerコンテナが接続する必要のある既存のDockerネットワークの名前またはID、およびデフォルトのブリッジネットワークです。これを指定しない場合、LambdaコンテナはデフォルトのブリッジDockerネットワークにのみ接続します。
-l, --log-file TEXT ランタイムログを送信するログファイル。
--layer-cache-basedir DIRECTORY テンプレートで使用するレイヤーがダウンロードされる場所 basedirを指定します。
--skip-pull-image CLIがLambdaランタイムの最新のDockerイメージのプルダウンをスキップするかどうかを指定します。
--force-image-build CLIがレイヤーを使用して関数を呼び出すために使用されるイメージを再構築するかどうかを指定します。
--profile TEXT 使用するAWS認証情報プロファイル。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

sam local generate-event

S3、API Gateway、SNS などのさまざまなイベントソースからサンプルペイロードを生成します。
これらのペイロードには、イベントソースがLambda関数に送信する情報が含まれています。

構文

sam local generate-event COMMAND [ARGS]...

COMMANDに指定できるものは以下の通りです。

  • alexa-skills-kit
  • alexa-smart-home
  • apigateway
  • batch
  • cloudformation
  • cloudfront
  • cloudwatch
  • codecommit
  • codepipeline
  • cognito
  • config
  • dynamodb
  • kinesis
  • lex
  • rekognition
  • s3
  • ses
  • sns
  • sqs
  • stepfunctions

sam local start-lambda

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

構文

sam local start-lambda [OPTIONS]

オプション

Option Description
--host TEXT バインド先のローカルホスト名または IPアドレス(デフォルト:「127.0.0.1」)。
-p, --port INTEGER リッスンするローカルポート番号(デフォルト:「3001」)。
-t, --template PATH SAMテンプレートファイル [デフォルト: template.[yaml / yml]]。
-n, --env-vars PATH Lambda関数の環境変数の値を含むJSONファイル。
--parameter-overrides 省略可能。キーと値のペアとしてエンコードされたCloudFormation パラメータオーバーライドを含む文字列。AWS CLIと同じ形式を使用します — 例: 「ParameterKey=KeyPairName、ParameterValue=MyKey ParameterKey=InstanceType、ParameterValue=t1.micro」。
-d, --debug-port TEXT 指定すると、Lambda関数コンテナをデバッグモードで起動し、このポートをローカルホストに公開します。
--debugger-path TEXT Lambdaコンテナにマウントされるデバッガーへのホストパス。
--debug-args TEXT デバッガーに渡される追加の引数。
-v, --docker-volume-basedir TEXT SAMファイルが存在するベースディレクトリの場所。Dockerがリモートマシンで実行されている場合は、Dockerマシン上にSAMファイルが存在するパスをマウントし、この値をリモートマシンと一致するように変更する必要があります。
--docker-network TEXT Lambda Dockerコンテナが接続する必要のある既存のDockerネットワークの名前またはID、およびデフォルトのブリッジネットワークです。これを指定しない場合、LambdaコンテナはデフォルトのブリッジDockerネットワークにのみ接続します。
-l, --log-file TEXT ランタイムログを送信するログファイル。
--layer-cache-basedir DIRECTORY テンプレートが使用するレイヤーがダウンロードされる場所basedirを指定します。
--skip-pull-image CLIがLambdaランタイムの最新のDockerイメージのプルダウンをスキップするかどうかを指定します。
--force-image-build CLIがレイヤーを使用して関数を呼び出すために使用されるイメージを再構築するかどうかを指定します。
--profile TEXT 使用するAWS認証情報プロファイル。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

sam local start-api

サーバーレスアプリケーションをローカルで実行して、開発とテストを迅速に行うことができます。
サーバーレス関数とSAMテンプレートを含むディレクトリでこのコマンドを実行すると、すべての関数をホストするローカルHTTPサーバーが作成されます。
(ブラウザ、CLIなどを介して)アクセスされると、Dockerコンテナをローカルで起動して関数を呼び出します。AWS::Serverless::FunctionリソースのCodeUriプロパティを読み取り、Lambda関数コードを含むファイルシステム内のパスを検索します。これは、Node.jsやPythonなどの解釈された言語用のプロジェクトのルートディレクトリ、またはコンパイルされたアーティファクトやJavaアーカイブ(JAR)ファイルを格納するビルドディレクトリです。
解釈された言語を使用している場合は、すべての呼び出しでローカルの変更をDockerコンテナですぐに使用できます。さらにコンパイルされた言語や複雑なパッキングサポートを必要とするプロジェクトについては、独自のビルドソリューションを実行し、SAMをポイントして、ビルドアーティファクトを含むディレクトリまたはファイルを指定することを推奨しています。

構文

sam local start-api [OPTIONS]

オプション

Option Description
--host TEXT バインド先のローカルホスト名または IPアドレス(デフォルト:「127.0.0.1」)。
-p, --port INTEGER リッスンするローカルポート番号(デフォルト:「3000」)。
-s, --static-dir TEXT このディレクトリにある静的アセット(CSS / JavaScript / HTML など)ファイルは、/ に表示されます。
-t, --template PATH SAM テンプレートファイル [デフォルト: template.[yaml / yml]]。
-n, --env-vars PATH Lambda関数の環境変数の値を含むJSONファイル。
--parameter-overrides 省略可能。キーと値のペアとしてエンコードされたCloudFormation パラメータオーバーライドを含む文字列。AWS CLIと同じ形式を使用します — 例: 「ParameterKey=KeyPairName、ParameterValue=MyKey ParameterKey=InstanceType、ParameterValue=t1.micro」。
-d, --debug-port TEXT 指定すると、Lambda関数コンテナをデバッグモードで起動し、このポートをローカルホストに公開します。
--debugger-path TEXT Lambdaコンテナにマウントされるデバッガーへのホストパス。
--debug-args TEXT デバッガーに渡される追加の引数。
-v, --docker-volume-basedir TEXT SAMファイルが存在するベースディレクトリの場所。Dockerがリモートマシンで実行されている場合は、Dockerマシン上にSAMファイルが存在するパスをマウントし、この値をリモートマシンと一致するように変更する必要があります。
--docker-network TEXT Lambda Dockerコンテナが接続する必要のある既存のDockerネットワークの名前またはID、およびデフォルトのブリッジネットワークです。これを指定しない場合、LambdaコンテナはデフォルトのブリッジDockerネットワークにのみ接続します。
-l, --log-file TEXT ランタイムログを送信するログファイル。
--layer-cache-basedir DIRECTORY テンプレートが使用するレイヤーがダウンロードされる場所basedirを指定します。
--skip-pull-image CLIがLambdaランタイムの最新のDockerイメージのプルダウンをスキップするかどうかを指定します。
--force-image-build CLIがレイヤーを使用して関数を呼び出すために使用されるイメージを再構築するかどうかを指定します。
--profile TEXT 使用するAWS認証情報プロファイル。
--region TEXT サービスのAWS リージョン(us-east-1など)を設定します。

sam validate

SAMテンプレートを検証します。

構文

sam validate [OPTIONS]

オプション

Option Description
-t, --template PATH SAMテンプレートファイル [デフォルト: template.[yaml / yml]]。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

デプロイ

sam deploy

SAMアプリケーションをデプロイします。
ガイド付きインタラクティブモード(--guidedパラメータを指定することで有効にできる)では、デプロイに必要なパラメータが順番に示され、デフォルトのオプションが提供され、これらのオプションがプロジェクトフォルダの設定ファイルに保存されます。
sam deployを実行するだけで、アプリケーションの後続のデプロイを実行でき、必要なパラメータが SAM CLI設定ファイルから取得されます。
CloudFormationを使用してLambda関数をデプロイするには、Lambdaデプロイパッケージ用のS3バケットが必要です。SAM CLIは、このS3バケットを作成して管理します。

構文

sam deploy [OPTIONS] [ARGS]...

オプション

Option Description
-g, --guided このフラグを指定して、SAMでガイド付きプロンプトを使用してデプロイをガイドできるようにします。このパラメータの指定時に、必要に応じて保存される設定の詳細については、「SAM CLI設定」を参照してください。
--template-file PATH SAM テンプレートが配置されているパス。デフォルト: template.[yaml / yml]。
--stack-name TEXT デプロイ先のCloudFormation スタックの名前。既存のスタックを指定すると、コマンドはスタックを更新します。新しいスタックを指定すると、コマンドはスタックを作成します。必須。
--s3-bucket TEXT テンプレートで参照されるアーティファクトがある S3バケットの名前。これは、51,200バイトを超えるサイズのテンプレートをデプロイする場合に必要です。
--s3-prefix TEXT S3バケットにアップロードされるアーティファクト名に追加されたプレフィックス。プレフィックス名は、S3バケットのパス名 (フォルダ名) です。
--capabilities LIST CloudFormationが特定のスタックを作成できるように指定する必要がある機能の一覧。一部のスタックテンプレートには、新しいIAMユーザーを作成する場合などで、AWSアカウントのアクセス権限に影響を与える可能性のあるリソースが含まれている場合があります。このようなスタックの場合は、このパラメータを指定して、それらの機能を明示的に認識する必要があります。有効な値は、CAPABILITY_IAMとCAPABILITY_NAMED_IAMのみです。IAMリソースがある場合、どちらの機能でも指定できます。カスタム名を持つIAMリソースがある場合は、CAPABILITY_NAMED_IAMを指定する必要があります。このパラメータを指定しない場合、このアクションはInsufficientCapabilitiesエラーを返します。
--region TEXT デプロイ先の AWS リージョン(us-east-1など)。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--kms-key-id TEXT S3バケットに保存されているアーティファクトを暗号化するために使用される AWS KMSキーのID。
--force-upload S3バケット内の既存のファイルを上書きします。S3バケット内の既存のアーティファクトと一致する場合でも、アーティファクトをアップロードするには、このフラグを指定します。
--no-execute-changeset 変更セットを実行するかどうかを示します。変更セットを実行する前にスタックの変更を表示する場合は、このフラグを指定します。このコマンドは、CloudFormation変更セットを作成し、変更セットを実行せずに終了します。変更セットを実行する場合は、このフラグを指定せずに同じコマンドを実行することで、スタックの変更を行うことができます。
--role-arn TEXT 変更セットの実行時にCloudFormationが引き受けるIAMロールのAmazon リソースネーム (ARN)。
--fail-on-empty-changeset / --no-fail-on-empty-changeset スタックに変更を加えていない場合に0以外の終了コードを返すかどうかを指定します。デフォルトの動作では、ゼロ以外の終了コードが返されます。
--confirm-changeset 計算された変更セットをデプロイする前に確認を求めます。
--use-json CloudFormationテンプレートのJSONを出力します。デフォルトでYAMLが使用されます。
--metadata テンプレートで参照されているすべてのアーティファクトに添付するメタデータのマップ。省略可能。
--notification-arns LIST CloudFormationがスタックに関連付けるSNSトピックAmazon リソースネーム (ARN)。
--tags 作成または更新されたスタックに関連付けるタグの一覧。CloudFormationでは、リソースがスタックをサポートしている場合、これらのタグをスタックのリソースにも伝達します。
--parameter-overrides key=value のペアとしてエンコードされたCloudFormationパラメータオーバーライドを含む文字列。AWS CLIと同じ形式を使用します。たとえば、ParameterKey=KeyPairName, ParameterValue=MyKey ParameterKey=InstanceTy pe,ParameterValue=t1.microと指定します。

sam package

SAMアプリケーションをパッケージします。
コードと依存関係のZIPファイルを作成し、S3にアップロードを行います。
次に、SAMテンプレートのコピーを返し、ローカルのアーティファクトへの参照を、コマンドがアーティファクトをアップロードしたS3の場所に置き換えます。
sam deployを実行する場合は、暗黙的にsam packageが呼びだされます。

構文

sam package [OPTIONS] [ARGS]...

オプション

Option Description
--template-file PATH SAM テンプレートが置かれているパス。デフォルト: template.[yaml / yml]。
--s3-bucket TEXT このコマンドがテンプレートで参照されるアーティファクトをアップロードするS3バケットの名前。必須。
--s3-prefix TEXT S3バケットにアップロードされるアーティファクト名に追加されたプレフィックス。プレフィックス名は、S3バケットのパス名 (フォルダ名) です。
--kms-key-id TEXT S3バケットに保管されているアーティファクトを暗号化するために使用される AWS KMSキーのID。
--output-template-file PATH コマンドがパッケージ化されたテンプレートを書き込むファイルへのパス。パスを指定しない場合、コマンドはテンプレートを標準出力に書き込みます。
--use-json CloudFormationテンプレートのJSONを出力します。デフォルトでは、YAMLが使用されます。
--force-upload S3バケット内の既存のファイルを上書きします。S3バケット内の既存のアーティファクトと一致する場合でも、アーティファクトをアップロードするには、このフラグを指定します。
--metadata テンプレートで参照されているすべてのアーティファクトにアタッチするメタデータのマップ。省略可能。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

sam publish

SAMアプリケーションServerless Application Repositoryに公開します。
このコマンドは、パッケージ化されたSAMテンプレートを受け取り、指定されたリージョンにアプリケーションの公開を行います。
このコマンドは、SAMテンプレートに、公開に必要なアプリケーションメタデータを含むMetadataが含まれていることを想定してます。さらに、これらのプロパティには、LicenseUrlおよびReadmeUrlの値のS3バケットへのリファレンスを含め、ローカルファイルへのリファレンスは含まれていない必要があります。
SAMテンプレートのMetadataセクションの詳細については、「AWS SAM CLI を使用してサーバーレスアプリケーションを公開する」を参照してください。

構文

sam publish [OPTIONS]

オプション

Option Description
-t, --template PATH SAM テンプレートファイル [デフォルト: template.[yaml / yml]]。
--semantic-version TEXT 省略可能。このパラメータによって提供されるアプリケーションのセマンティックバージョンは、テンプレートファイルのMetadataセクションのSemanticVersionをオーバーライドします。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--region TEXT サービスのAWSリージョン(us-east-1など) を設定します。

その他

sam logs

Lambda関数によって生成されたログを取得します。
関数がCloudFormationスタックの一部である場合、スタック名を指定するときに、関数の論理IDを使用してログを取得することができます。

構文

sam logs [OPTIONS]

オプション

Option Description
-n、--name TEXT Lambda関数の名前。この関数がCloudFormationスタックの一部である場合、CloudFormation/SAMテンプレート内の関数リソースの論理IDになります。[必須]
--stack-name TEXT 関数が一部であるCloudFormation スタックの名前。
--filter TEXT 式を指定して、ログイベントの用語、フレーズ、または値に一致するログをすばやく検索できます。これは、単純なキーワード (「error」など) またはCloudWatch Logsでサポートされるパターンです。構文については、「CloudWatch Logsのドキュメント」を参照してください。
-s、--start-time TEXT この時刻からログを取得します。時刻には、「5分前」、「昨日」などの相対的な値、または「2018-01-01 10:10:10」のような形式のタイムスタンプを指定できます。デフォルトは「10分前」です。
-e、--end-time TEXT この時刻までのログを取得します。時刻には、「5分前」、「明日」などの相対的な値、または「2018-01-01 10:10:10」のような形式のタイムスタンプを指定できます。
-t、--tail ログ出力の末尾を表示します。これにより、終了時間引数は無視され、ログが使用可能になった時点で引き続き取得されます。
--profile TEXT 認証情報ファイルから特定のプロファイルを選択して、AWS認証情報を取得します。
--region TEXT サービスのAWSリージョン(us-east-1など)を設定します。

その他の便利な機能

線形デプロイとカナリアリリース

Resources:
  DemoFunction:
    Type: AWS::Serverless::Function
    Properties:
      AutoPublishAlias: live
      DeploymentPreference:
        Type: Linear10PercentEvery1Minute

DeploymentPreferenceのTypeに指定可能なのは以下の文字列で、それぞれデプロイ戦略を指定することができます。

  • Linear10PercentEvery1Minute
  • Linear10PercentEvery2Minute
  • Linear10PercentEvery3Minute
  • Linear10PercentEvery10Minute
  • Canary10Percent5Minutes
  • Canary10Percent10Minutes
  • Canary10Percent15Minutes
  • Canary10Percent30Minutes
  • AllAtOnce

Linear10PercentEvery*Minute

Lambda関数の実行のうち、10%を最新のバージョンで実行し、*分毎に10%ずつ最新のバージョンで実行される範囲を増加していく方式です。

Canary10Percent*Minutes

Lambda関数の実行のうち、10%は最新のバージョンで実行し、*分後にすべてが最新のバージョンで実行されるようにする方式です。

AllAtOnce

すべてのLambda関数の実行を最新のバージョンで行う方式です。

まとめ

今回は、機能の説明や、コマンドラインのリファレンスなどまでとします。
実際にコマンドを使ってのサンプルの解説は、別の投稿にてまとめたいと思います。
実践編は「[AWS] Serverless Application Model (SAM) でAPI Gateway + Lambda + DynamoDBなサンプルを作成してみる」を参照ください。

14
12
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
14
12