sam build - AWS Serverless Application Model

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

sam build

サーバーレスアプリケーションを構築し、ローカルでアプリケーションのテストや AWS クラウドへのデプロイなど、ワークフローの以降のステップ用に準備します。を指定するとRESOURCE_LOGICAL_ID、 はそのリソースのみをAWS SAMビルドします。ネストされたアプリケーションまたはスタックのリソースを構築するには、 形式を使用して、アプリケーションまたはスタックの論理 ID をリソース論理 ID とともに提供できますStackLogicalId/ResourceLogicalId

sam build コマンドは、AWS SAMテンプレートファイル、アプリケーションコード、および適用可能な言語固有のファイルと依存関係を処理します。コマンドは、ワークフローの以降のステップで予想される形式と場所でビルドアーティファクトもコピーします。アプリケーションに含めるマニフェストファイルで依存関係を指定します (Python 関数requirements.txtの場合は 、Node.js 関数package.jsonの場合は など)。

アプリケーションのビルドアーティファクトの形式は、パッケージタイプによって異なります。AWS Lambda 関数のパッケージタイプを PackageType プロパティで指定します。オプションは以下のとおりです。

  • Zip – アプリケーションコードとその依存関係を含む .zip ファイルアーカイブ。コードを .zip ファイルアーカイブとしてパッケージ化する場合は、関数のLambdaランタイムを指定する必要があります。

  • Image – コンテナイメージ。アプリケーションコードとその依存関係に加えて、基本オペレーティングシステム、ランタイム、拡張機能が含まれます。

Lambda パッケージタイプの詳細については、の「Lambdaデプロイパッケージ」を参照してくださいAWS Lambda Developer Guide

リソースに Metadata エントリを含むBuildMethodリソース属性が含まれている場合、 はsam buildエントリの値に従ってそのリソースBuildMethodを構築します。の有効な値はBuildMethod、1) Lambda ランタイムの識別子の 1 つ、または 2) makefile 識別子です。

  • Lambda ランタイム識別子 – ランタイムに対してリソースをLambdaビルドします。サポートされているランタイム識別子のリストについては、『』の「 Lambda ランタイム」を参照してくださいAWS Lambda Developer Guide

  • makefile identifier リソースのビルドターゲットのコマンド–を実行します。この場合、makefile は という名前Makefileで、 という名前のビルドターゲットを含める必要がありますbuild-resource-logical-id

レイヤーとカスタムランタイムを構築するには、 Metadata エントリで BuildMethod リソース属性を使用することもできます。レイヤーの構築については、「」レイヤーのビルドを参照してください。カスタムランタイムの構築については、「」カスタムランタイムのビルドを参照してください。

Image パッケージタイプを持つサーバーレス 関数リソースの場合Metadata、リソース属性 を使用して、コンテナイメージの構築に必要な Docker イメージ設定を設定します。コンテナイメージの構築の詳細については、「」コンテナイメージの構築を参照してください。

ローカルテストや AWS クラウドへのデプロイなど、このコマンドを使用する完全な例についてはチュートリアル: Hello World アプリケーションのデプロイ、「」を参照してください。sam build コマンドは の一部ですステップ 2: アプリケーションを構築する

使用:

sam build [OPTIONS] [RESOURCE_LOGICAL_ID]

例:

To use these commands, update your SAM template to specify the path to your function's source code in the resource's Code or CodeUri property. To build on your workstation, run this command in the directory containing your SAM template. Built artifacts are written to the .aws-sam/build directory. $ sam build To build inside a Lambda-like Docker container $ sam build --use-container To build with environment variables passed to the build container from the command line $ sam build --use-container --container-env-var Function1.GITHUB_TOKEN=<token1> --container-env-var GLOBAL_ENV_VAR=<global-token> To build with environment variables passed to the build container from a file $ sam build --use-container --container-env-var-file <env-file.json> To build and run your functions locally $ sam build && sam local invoke To build and package for deployment $ sam build && sam package --s3-bucket <bucketname> To build the 'MyFunction' resource $ sam build MyFunction To build the 'MyFunction' resource of the 'MyNestedStack' nested stack $ sam build MyNestedStack/MyFunction

オプション:

オプション 説明
-b, --build-dir DIRECTORY 構築されたアーティファクトが保存されているディレクトリへのパス。このディレクトリとそのすべてのコンテンツは、このオプションで削除されます。
-s, --base-dir DIRECTORY このディレクトリに関するLambda関数のソースコードへの相対パスを解決します。AWS SAM テンプレートとソースコードが同じディレクトリにない場合は、このオプションを使用します。デフォルトでは、相対パスはテンプレートの場所に関して解決されます。
-u, --use-container 関数がネイティブにコンパイルされた依存関係を持つパッケージに依存する場合は、このオプションを使用して、 Lambdaのような Docker コンテナ内に関数を構築します。
-e, --container-env-var TEXT ビルドコンテナに渡す環境変数。このオプションは複数回指定できます。このオプションの各インスタンスはキーと値のペアを取ります。キーはリソースと環境変数、値は環境変数の値です。例: --container-env-var Function1.GITHUB_TOKEN=TOKEN1 --container-env-var Function2.GITHUB_TOKEN=TOKEN2
-ef, --container-env-var-file PATH コンテナの環境変数の値を含む JSON ファイルのパスとファイル名。コンテナ環境変数ファイルの詳細については、「」コンテナ環境変数ファイルを参照してください。
-m, --manifest PATH デフォルトの代わりに使用するカスタム依存関係マニフェストファイル (package.json など) へのパス。
-t, --template-file, --template PATH AWS SAM テンプレートファイル のパスとファイル名[default: template.[yaml|yml]]
--parameter-overrides (オプション) キーと値のペアとしてエンコードされたAWS CloudFormationパラメータオーバーライドを含む文字列。AWS Command Line Interface (AWS CLI) と同じ形式を使用します。例: 'ParameterKey=KeyPairName, ParameterValueMyKey ParameterKey=, InstanceType=, ParameterValue t1.micro='。
--skip-pull-image コマンドがLambdaランタイムの最新の Docker イメージのプルダウンをスキップするかどうかを指定します。
--docker-network TEXT Lambda Docker コンテナが接続する必要のある既存の Docker ネットワークの名前または ID を、デフォルトのブリッジネットワークとともに指定します。指定しない場合、Lambda コンテナはデフォルトのブリッジ Docker ネットワークにのみ接続します。
--parallel 並列ビルドを有効にします。このオプションを使用して、AWS SAMテンプレートの関数とレイヤーを並行して構築します。デフォルトでは、関数とレイヤーはシーケンスで組み込まれています。
--cached キャッシュされたビルドを有効にします。このオプションを使用して、以前のビルドから変更されていないビルドアーティファクトを再利用します。 は、プロジェクトディレクトリ内のファイルを変更したかどうかAWS SAMを評価します。注意: AWS SAM では、特定のバージョンを指定していない、プロジェクトが依存するサードパーティーのモジュールが変更されたかどうかを評価しません。たとえば、Python 関数にエントリ を含むrequirements.txtファイルが含まれrequests=1.xていて、最新のリクエストモジュールのバージョンが から 1.1 に変更された場合1.2、 AWS SAM はキャッシュされていないビルドを実行するまで最新バージョンを取得しません。
--cache-dir --cached が指定されている場合、キャッシュアーティファクトが保存されるディレクトリ。デフォルトのキャッシュディレクトリは です.aws-sam/cache
--profile TEXT 認証情報を取得するAWS認証情報ファイルからの特定のプロファイル。
--region TEXT デプロイ先のAWSリージョン。たとえば、us-east-1 です。
--config-file PATH 使用するデフォルトのパラメータ値を含む設定ファイルのパスとファイル名。デフォルト値は、プロジェクトディレクトリのルートにある「samconfig.toml」です。設定ファイルについて詳しくは、AWS SAM CLI 設定ファイル を参照してください。
--config-env TEXT 使用する設定ファイルのデフォルトパラメータ値を指定する環境名。デフォルト値は「default」です。設定ファイルについて詳しくは、AWS SAM CLI 設定ファイル を参照してください。
--debug デバッグログをオンにしてAWS SAM、CLI が生成するデバッグメッセージを出力し、タイムスタンプを表示します。
--help このメッセージを表示して終了します。

Examples

Lambda ランタイム識別子を使用したリソースの構築

AWS SAM ランタイム識別子を使用してリソースを構築する方法を示すLambdaテンプレートの例を次に示します。

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.6 Metadata: BuildMethod: python3.6

このテンプレートでは、次のコマンドは Python 3.6 ランタイム環境に対して MyLayer リソースを構築します。

sam build MyLayer

makefile 識別子を使用したリソースの構築

AWS SAM 識別子を使用してリソースを構築する方法の例を次makefileに示します。

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile

これは、関連付けられた makefile の例です。ファイルは という名前でMakefile、実行するコマンドにビルドターゲットを含める必要があります。

build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"

このテンプレートと makefile では、次のコマンドによってbuild-MyLayerターゲットのコマンドが実行されます。

sam build MyLayer

ビルドコンテナに環境変数を渡す

ファイルを使用してビルドコンテナに環境変数を渡す方法の例を次に示します。

まず、次の内容env.jsonで という名前のファイルを作成します。

{ "MyFunction1": { "GITHUB_TOKEN": "TOKEN1" }, "MyFunction2": { "GITHUB_TOKEN": "TOKEN2" } }

次に、以下のコマンドを実行します。

sam build --use-container --container-env-var-file env.json

コンテナ環境変数ファイルの詳細については、「」コンテナ環境変数ファイルを参照してください。