sam build - AWS Serverless Application Model

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

sam build

サーバーレスアプリケーションを構築し、ワークフロー内の後続のステップ (アプリケーションのローカルテストやAWSクラウド化。あなたが提供する場合RESOURCE_LOGICAL_ID、次にAWS SAMは、そのリソースのみを構築します。ネストされたアプリケーションまたはスタックのリソースを構築するには、アプリケーションまたはスタックの論理 ID とリソースの論理 ID をStackLogicalId/ResourceLogicalId

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

アプリケーションのビルド成果物の形式は、パッケージの種類によって異なります。指定されている場合、AWS Lambda関数のパッケージ型をPackageTypeプロパティ。オプションは以下のとおりです。

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

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

Lambda パッケージタイプの詳細については、「」を参照してください。Lambda デプロイパッケージ()AWS Lambda開発者ガイド

リソースにMetadataリソース属性をBuildMethodエントリ、sam buildの値に従ってリソースを構築します。BuildMethodエントリに追加します。有効な値BuildMethodは、1)Lambda ランタイムの識別子の1つ、または2)makefile識別子。

  • Lambda ランタイム ID— Lambda ランタイムに対してリソースを構築する サポートされているランタイム識別子のリストについては、「」を参照してください。Lambda ランタイム()AWS Lambda開発者ガイド

  • makefileidentifier — リソースのビルドターゲットのコマンドを実行します。この場合、makefile の名前はMakefileという名前のビルドターゲットを含めますbuild-resource-logical-id

Layer とカスタムランタイムを構築するには、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> Build a Node.js 12 application using a container image pulled from DockerHub $ sam build --use-container --build-image amazon/aws-sam-cli-build-image-nodejs12.x Build a function resource using using the Python 3.8 container image pulled from DockerHub $ sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8 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

引数:

引数 説明
RESOURCE_LOGICAL_ID オプション。InstructsAWS SAMで宣言された単一のリソースを構築するにはAWS SAMテンプレートに追加します。指定されたリソースのビルドアーティファクトは、ワークフロー内の後続のコマンドで使用できる唯一のものになります。sam packageおよびsam deploy

オプション:

オプション 説明
-b, --build-dir DIRECTORY 構築されたアーティファクトが格納されるディレクトリへのパス。このオプションを使用すると、このディレクトリとそのすべてのコンテンツが削除されます。
-s, --base-dir DIRECTORY このディレクトリに関する関数またはレイヤーのソースコードへの相対パスを解決します。このオプションは、ソースコードフォルダーへの相対パスを解決する方法を変更する場合に使用します。デフォルトでは、相対パスはAWS SAMテンプレートの場所を指定します。

このオプションは、構築するルートアプリケーションまたはスタックのリソースに加えて、ネストされたアプリケーションまたはスタックも適用されます。

このオプションは、次のリソースタイプとプロパティに適用されます。

  • リソースタイプ:AWS::Serverless::Function プロパティ:CodeUri

  • リソースタイプ:AWS::Serverless::Function リソース属性:Metadata エントリ:DockerContext

  • リソースタイプ:AWS::Serverless::LayerVersion プロパティ:ContentUri

  • リソースタイプ:AWS::Lambda::Function プロパティ:Code

  • リソースタイプ:AWS::Lambda::LayerVersion プロパティ:Content

-u, --use-container 関数がネイティブにコンパイルされた依存関係を持つパッケージに依存する場合は、このオプションを使用して Lambda に似た Docker コンテナ内で関数を構築します。
-e, --container-env-var TEXT ビルドコンテナに渡す環境変数。このオプションは複数回指定できます。このオプションの各インスタンスは、キーと値のペアを取ります。キーはリソース変数と環境変数、値は環境変数の値です。例: --container-env-var Function1.GITHUB_TOKEN=TOKEN1 --container-env-var Function2.GITHUB_TOKEN=TOKEN2

このオプションが適用されるのは、--use-containerオプションを指定すると、エラーが発生します。

-ef, --container-env-var-file PATH コンテナの環境変数の値を含む JSON ファイルのパスとファイル名。コンテナ環境変数ファイルの詳細については、「」を参照してください。コンテナ環境変数ファイル

このオプションが適用されるのは、--use-containerオプションを指定すると、エラーが発生します。

--build-image TEXT

ビルド用にプルするコンテナイメージの URI。デフォルトでは、AWS SAMAmazon ECR パブリックからコンテナイメージをプルします。このオプションを使用して、別の場所からイメージをプルします。

このオプションは複数回指定できます。このオプションの各インスタンスは、文字列またはキーと値のペアを取ることができます。文字列を指定すると、アプリケーション内のすべてのリソースに使用するコンテナーイメージの URI になります。たとえば、sam build --use-container --build-image amazon/aws-sam-cli-build-image-python3.8 と指定します。キーと値のペアを指定した場合、キーはリソース名であり、値はそのリソースに使用するコンテナイメージの URI です。例 sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8. キーと値のペアを使用すると、リソースごとに異なるコンテナーイメージを指定できます。

このオプションが適用されるのは、--use-containerオプションを指定すると、エラーが発生します。

-m, --manifest PATH デフォルトの代わりに使用するカスタム依存関係マニフェストファイル (package.json など) へのパス。
-t, --template-file, --template PATH パスとファイル名。AWS SAM[ template file] (&SAM; テンプレートファイル)[default: template.[yaml|yml]]
--parameter-overrides (オプション) 以下の文字列です。AWS CloudFormationパラメータは、キーと値のペアとしてエンコードされたオーバーライドします。と同じ形式を使用します。AWS Command Line Interface(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 ネットワークにのみ接続します。
--parallel 並列ビルドを有効にしました。このオプションを使用して、AWS SAMテンプレートの関数とレイヤーを並行して作成します。デフォルトでは、関数とレイヤーは順番に構築されます。
--cached キャッシュされたビルドを有効にします。以前のビルドから変更されていないビルドアーティファクトを再利用するには、このオプションを使用します。AWS SAMプロジェクトディレクトリにあるファイルが変更されたかどうかを評価します。注意: AWS SAMは、プロジェクトが依存するサードパーティのモジュールを変更したかどうか、特定のバージョンを提供していないかどうかを評価しません。たとえば、Python 関数にrequirements.txtファイルにrequests=1.xから変更され、最新の要求モジュールのバージョンが1.11.2、次にAWS SAMは、キャッシュされていないビルドを実行するまで最新バージョンを取得しません。
--cache-dir キャッシュアーティファクトが格納されるディレクトリ--cachedが指定されている場合、デフォルトのキャッシュディレクトリはです。.aws-sam/cache
--profile TEXT 認証情報ファイルから特定のプロファイルで、AWS認証情報。
--region TEXT -AWSデプロイ先リージョン。たとえば、us-east-1 です。
--config-file PATH 使用するデフォルトのパラメータ値が含まれている設定ファイルのパスとファイル名。デフォルト値はです。samconfig.tomlプロジェクトディレクトリのルートにあります。設定ファイルについて詳しくは、AWS SAMCLI 設定ファイル を参照してください。
--config-env TEXT 使用する設定ファイル内のデフォルトのパラメータ値を指定する環境名。デフォルト値はです。設定ファイルについて詳しくは、AWS SAMCLI 設定ファイル を参照してください。
--debug デバッグログをオンにして、AWS SAMCLI が生成し、タイムスタンプを表示します。
--help このメッセージを表示して終了します。

Examples

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

たとえば、のようにします。AWS SAMテンプレートで、Lambda ランタイム識別子を使用してリソースを構築する方法を示します。

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

このテンプレートを使用すると、次のコマンドはMyLayerリソースを Python 3.6 ランタイム環境に対して実行する必要があります。

sam build MyLayer

を使用してリソースを構築するmakefileID

たとえば、のようにします。AWS SAMを使用してリソースを構築する方法を示すmakefile識別子:

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: 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

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