sam deploy - AWS Serverless Application Model

sam deploy

AWS SAM アプリケーションをデプロイします。

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

AWS SAM CLI のデフォルトの動作を上書きするには、--template オプションを指定します。このオプションを指定すると、AWS SAM CLI は、AWS SAM テンプレートと、それがポイントするローカルリソースのみをデプロイします。

ガイド付きインタラクティブモードを有効にするには、--guided オプションを指定します。このモードでは、デプロイに必要なパラメータが示され、デフォルトのオプションが提供されます。また、これらのオプションをプロジェクトディレクトリの設定ファイルに保存することもできます。sam deploy を使用してアプリケーションの後続デプロイメントを実行すると、AWS SAM CLI が必要なパラメータを設定ファイルから取得します。

Parameters テンプレートファイルの AWS SAM セクションで宣言されたオブジェクトは、追加のインタラクティブモードプロンプトとして表示され、AWS SAM CLI で各パラメータの値を入力します。これらのオブジェクトと対応するプロンプトの例については、このトピックの後半にある「」セクションを参照してください。

コード署名を使用して設定するサーバーレスアプリケーションは、より多くのインタラクティブモードプロンプトを生成し、コードに署名するかどうかを尋ねるプロンプトが AWS SAM CLI に表示されます。署名する場合は、署名プロファイルの名前と所有者の入力が求められます。これらのプロンプトの例については、このトピックの後半にある「」セクションを参照してください。

--guided オプションを指定する際に AWS SAM CLI で格納することのできる設定の詳細については、「AWS SAM CLI の設定ファイル」を参照してください。

AWS CloudFormation 経由で AWS Lambda 関数をデプロイするには、Lambda デプロイパッケージ用の Amazon Simple Storage Service (Amazon S3) バケットが必要です。AWS SAM CLI は、この Amazon S3 バケットを作成して管理します。AWS SAM は Amazon S3 に保存されているすべてのファイルの暗号化を有効にします。

PackageType: Image で宣言された関数またはレイヤーリソースがアプリケーションに含まれる場合、AWS SAM CLI を使用して、必要な Amazon Elastic Container Registry (Amazon ECR) リポジトリを自動的に作成することができます。このリポジトリを AWS SAM CLI で作成するには、--resolve-image-repos オプションまたは --guided オプションのいずれかを使用して、その後のプロンプトに Y で応答します。

使用:

sam deploy [OPTIONS] [ARGS]...

オプション:

オプション 説明
-g, --guided

このオプションを指定して、デプロイ全体で AWS SAM CLI によるプロンプトを用いたガイドを有効にします。

-t, --template-file, --template PATH AWS SAM テンプレートが置かれているパスとファイルの名前です。

注意: このオプションを指定すると、AWS SAM は、テンプレートと、それがポイントするローカルリソースのみをデプロイします。

--stack-name TEXT (必須) デプロイ先の AWS CloudFormation スタックの名前です。既存のスタックを指定すると、コマンドはスタックを更新します。新しいスタックを指定すると、コマンドはスタックを作成します。
--s3-bucket TEXT このコマンドが AWS CloudFormation テンプレートをアップロードする Amazon S3 バケットの名前です。テンプレートが 51,200 バイトより大きい場合は、--s3-bucket オプションまたは --resolve-s3 オプションは必須です。--s3-bucket--resolve-s3 の両方のオプションを指定するとエラーが発生します。
--s3-prefix TEXT Amazon S3 バケットにアップロードされるアーティファクト名に追加されたプレフィックスです。プレフィックス名は、Amazon S3 バケットのパス名 (フォルダ名) です。
--image-repository TEXT このコマンドが関数のイメージをアップロードする Amazon ECR リポジトリの名前です。このオプションは、Image パッケージタイプで宣言された関数に必要です。
--signing-profiles LIST デプロイパッケージに署名するための署名プロファイルのリストです。このオプションはキーバリューペアのリストを使用します。このペアのキーは署名する関数またはレイヤーの名前、値は署名プロファイルで、オプションのプロファイル所有者は : で区切られます。例えば、FunctionNameToSign=SigningProfileName1 LayerNameToSign=SigningProfileName2:SigningProfileOwner です。
--capabilities LIST AWS CloudFormation が特定のスタックを作成できるように指定する必要がある機能のリストです。一部のスタックテンプレートには、新しい AWS Identity and Access Management (IAM) ユーザーを作成することなどによって AWS アカウントのアクセス許可に影響するリソースが含まれている場合があります。このようなスタックについては、このパラメータを指定することによって、それらの機能を明示的に承認する必要があります。有効な値は、CAPABILITY_IAMCAPABILITY_NAMED_IAM のみです。IAM リソースがある場合、どちらの機能でも指定できます。カスタム名を持つ IAM リソースがある場合は、CAPABILITY_NAMED_IAM を指定する必要があります。このオプションを指定しない場合は、オペレーションが InsufficientCapabilities エラーを返します。
--region TEXT デプロイ先の AWS リージョン です。例えば、us-east-1 などです。
--profile TEXT AWS 認証情報を取得する、認証情報ファイルから特定のプロファイルです。
--kms-key-id TEXT Amazon S3 バケットに保管されているアーティファクトの暗号化に使用される AWS Key Management Service (AWS KMS) キーの ID です。このオプションを指定しない場合、AWS SAM は Amazon S3 マネージド暗号化キーを使用します。
--force-upload このオプションを指定して、アーティファクトが Amazon S3 バケット内の既存のアーティファクトと一致する場合でも、それらをアップロードします。一致するアーティファクトは上書きされます。
--no-execute-changeset 変更セットを適用するかどうかを示します。このオプションは、変更セットを適用する前にスタックの変更を表示したい場合に指定します。このコマンドは、AWS CloudFormation 変更セットを作成してから、その変更セットを適用せずに終了します。変更セットを適用するには、このオプションを指定せずに同じコマンドを実行します。
--role-arn TEXT 変更セットの適用時に AWS CloudFormation が引き受ける IAM ロールの Amazon リソースネーム (ARN) です。
--fail-on-empty-changeset | --no-fail-on-empty-changeset スタックに対して行う変更がない場合に 0 以外の終了コードを返すかどうかを指定します。デフォルトの動作では、ゼロ以外の終了コードが返されます。
--confirm-changeset | --no-confirm-changeset AWS SAM CLI が計算された変更セットをデプロイするかどうかの確認を求めます。
--use-json AWS CloudFormation テンプレートの JSON を出力します。デフォルトの出力は YAML です。
--resolve-s3 ガイドなしデプロイのパッケージ化とデプロイに使用する Amazon S3 バケットを自動的に作成します。--guided オプションを指定すると、AWS SAM CLI は --resolve-s3 を無視します。--s3-bucket--resolve-s3 の両方のオプションを指定するとエラーが発生します。
--resolve-image-repos ガイドなしデプロイのパッケージ化およびデプロイに使用する Amazon ECR リポジトリを自動的に作成します。このオプションは、PackageType: Image が指定された関数とレイヤーにのみ適用されます。--guided オプションを指定すると、AWS SAM CLI は --resolve-image-repos を無視します。注意: このオプションで関数またはレイヤーの Amazon ECR リポジトリが AWS SAM によって自動的に作成された後、これらの関数またはレイヤーを AWS SAM テンプレートから削除すると、対応する Amazon ECR リポジトリが自動的に削除されます。
--metadata テンプレートで参照されるすべてのアーティファクトにアタッチするメタデータのマップです。
--notification-arns LIST AWS CloudFormation がスタックに関連付ける Amazon Simple Notification Service (Amazon SNS) トピック ARN のリストです。
--tags LIST 作成または更新されたスタックに関連付けるタグのリストです。AWS CloudFormation は、このリストをサポートするスタック内のリソースにもこれらのタグを伝播します。
--parameter-overrides キーバリューペアとしてエンコードされた AWS CloudFormation パラメータオーバーライドが含まれる文字列です。AWS Command Line Interface (AWS CLI) と同じ形式を使用します。例えば、ParameterKey=ParameterValue InstanceType=t1.micro です。
--disable-rollback | --no-disable-rollback デプロイ中にエラーが発生した場合、AWS CloudFormation スタックをロールバックするかどうかを指定します。デフォルトでは、デプロイ中にエラーが発生した場合、AWS CloudFormation スタックは最後の安定状態にロールバックします。--disable-rollback を指定した状態でデプロイ中にエラーが発生した場合、エラーが発生する前に作成または更新されたリソースはロールバックされません。
--on-failure [ROLLBACK | DELETE | DO_NOTHING]

スタックの作成が失敗されたときに実行するアクションを指定します。

以下のオプションが利用できます。

  • ROLLBACK — スタックを以前の既知の正常な状態にロールバックします。

  • DELETE — 以前の既知の正常な状態が存在する場合、スタックを以前の既知の状態にロールバックします。以前の既知の正常な状態が存在しない場合は、スタックを削除します。

  • DO_NOTHING — スタックのロールバックおよび削除を行いません。この結果は --disable-rollback の結果と同じです。

デフォルトの動作は ROLLBACK です。

注意: --disable-rollback オプションまたは --on-failure オプションを指定できますが、両方を指定することはできません。

--config-file PATH 使用するデフォルトのパラメータ値が含まれる設定ファイルのパスとファイル名です。デフォルト値は、プロジェクトディレクトリのルートにある samconfig.toml です。設定ファイルの詳細については、「AWS SAM CLI の設定ファイル」を参照してください。
--config-env TEXT 使用する設定ファイル内のデフォルトパラメータ値を指定する環境名です。デフォルト値は default です。設定ファイルの詳細については、「AWS SAM CLI の設定ファイル」を参照してください。
--no-progressbar Amazon S3 へのアーティファクトのアップロード時に、進行状況バーを表示しません。
--debug デバッグロギングを有効にして、AWS SAM CLI が生成するデバッグメッセージを出力表示し、タイムスタンプを表示します。
--help このメッセージを表示して終了します。

環境変数:

環境変数 説明
SAM_CLI_POLL_DELAY

DescribeStack API コール間の遅延を秒単位で指定します。

パラメータ

以下は、Parameters セクションで宣言されたオブジェクトの例と、sam deploy --guided の使用時に表示される対応するプロンプトです。

AWS SAM テンプレート

Parameters: MyPar: Type: String Default: MyParVal

対応する sam deploy --guided プロンプト:

Parameter MyPar [MyParVal]:

コード署名

以下は、コード署名で設定された関数の例です。

AWS SAM テンプレート

Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: arn:aws:lambda:us-east-1:111122223333:code-signing-config:csc-12e12345db1234567

対応する sam deploy --guided プロンプト:

#Found code signing configurations in your function definitions Do you want to sign your code? [Y/n]: #Please provide signing profile details for the following functions & layers #Signing profile details for function 'HelloWorld' Signing Profile Name: Signing Profile Owner Account ID (optional): #Signing profile details for layer 'MyLayer', which is used by functions {'HelloWorld'} Signing Profile Name: Signing Profile Owner Account ID (optional):

SAM_CLI_POLL_DELAY

以下は DescribeStack API コール間で 5 秒間の遅延を設定する SAM_CLI_POLL_DELAY 変数を使用した sam deploy コールの例です。

SAM_CLI_POLL_DELAY=5 sam deploy