翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の開始方法 Terraform のサポート AWS SAM CLI
このトピックでは、 AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) と Terraform.
フィードバックを提供し、機能リクエストを送信するには、 GitHub 問題
トピック
AWS SAM CLI Terraform 前提条件
の使用を開始するには、すべての前提条件を完了します。 AWS SAM CLI と Terraform プロジェクト。
-
のインストールまたはアップグレード AWS SAM CLI
があるかどうかを確認するには AWS SAM CLI をインストールし、以下を実行します。
$
sam --version
が AWS SAM CLI は既にインストールされています。出力にはバージョンが表示されます。最新バージョンにアップグレードするには、「AWS SAM CLI のアップグレード」 を参照してください。
のインストール手順については、 AWS SAM CLI とそのすべての前提条件については、「」を参照してくださいAWS SAM CLI のインストール。
-
インストール Terraform
次のものがあるかどうかを確認するには Terraform をインストールし、以下を実行します。
$
terraform -version
をインストールするには Terraform「インストール」を参照してください。Terraform
()Terraform レジストリ 。 -
インストール Docker ローカルテスト用
の AWS SAM CLI には が必要です Docker ローカルテスト用。をインストールするには Docker「で使用する Docker のインストール AWS SAM CLI」を参照してください。
の使用 AWS SAM CLI を使用した コマンド Terraform
サポートされている を実行する場合 AWS SAM CLI コマンドで、 --hook-name
オプションを使用してterraform
値を指定します。以下に例を示します。
$
sam local invoke --hook-name terraform
このオプションは、 AWS SAM CLI 設定ファイル。
hook_name = "terraform"
のセットアップ Terraform プロジェクト
このトピックのステップを完了して、 AWS SAM CLI with Terraform プロジェクト。
アー AWS Lambda ティファクトを の外部に構築する場合、追加のセットアップは必要ありません。Terraform プロジェクト。の使用を開始するの使用 AWS SAM CLI with Terraform ローカルデバッグとテスト用には、「」を参照してください。 AWS SAM CLI.
で Lambda アーティファクトを構築する場合 Terraform プロジェクトでは、以下を実行する必要があります。
-
インストール Python 3.8 以降
-
のインストール Make ツール。
-
内で Lambda アーティファクトビルドロジックを定義する Terraform プロジェクト。
-
に通知する
sam metadata
リソースを定義する AWS SAM CLI ビルドロジックの 。 -
を使用する AWS SAM CLI
sam build
コマンドを使用して Lambda アーティファクトを構築します。
インストール Python 3.8 以降
Python で使用するには 3.8 以降が必要です AWS SAM CLI。 を実行するとsam build
、 AWS SAM CLI はmakefiles
、 を含む を作成します。Python Lambda アーティファクトを構築するための コマンド。
インストール手順については、Python の初心者ガイドにある「Downloading Python
次を実行して、Python 3.8 以降がマシンのパスに追加されていることを確認します。
$
python --version
出力に 3.8 以降のバージョンの Python が表示される必要があります。
のインストール Make tool
GNU Make は、プロジェクトの実行可能ファイルやその他のソース以外のファイルの生成を制御するツールです。の AWS SAM CLI makefiles
は、Lambda アーティファクトを構築するためにこのツールに依存する を作成します。
を持っていない場合は、Make をローカルマシンにインストールし、先に進む前にインストールします。
Windows の場合は、Chocolatey
Lambda アーティファクトのビルドロジックを定義する
null_resource
を使用する Terraform Lambda ビルドロジックを定義するリソースタイプ。以下は、カスタムビルドスクリプトを使用して Lambda 関数を構築する例です。
resource "null_resource" "build_lambda_function" { triggers = { build_number = "${timestamp()}" } provisioner "local-exec" { command = substr(pathexpand("~"), 0, 1) == "/"? "./py_build.sh \"${local.lambda_src_path}\" \"${local.building_path}\" \"${local.lambda_code_filename}\" Function" : "powershell.exe -File .\\PyBuild.ps1 ${local.lambda_src_path} ${local.building_path} ${local.lambda_code_filename} Function" } }
を定義する sam metadata リソース
sam metadata
リソースは null_resource
Terraform を提供するリソースタイプ AWS SAM CLI Lambda アーティファクトを見つけるために必要な情報。プロジェクト内の Lambda 関数またはレイヤーごとに固有の sam metadata
リソースが必要です。このリソースタイプの詳細については、「」の「null_resource
を定義するには sam metadata リソース
-
から始まるリソースに名前
sam_metadata_
を付けて、リソースを として識別します。sam metadata リソース。 -
リソースの
triggers
ブロック内で Lambda アーティファクトプロパティを定義します。 -
Lambda ビルドロジックを含む
null_resource
をdepends_on
引数で指定します。以下はテンプレートの例です。
resource "null_resource" "sam_metadata_
...
" { triggers = { resource_name =resource_name
resource_type =resource_type
original_source_code =original_source_code
built_output_path =built_output_path
} depends_on = [ null_resource.build_lambda_function
# ref to your build logic ] }以下に、
sam metadata
リソースの例を示します。resource "null_resource" "sam_metadata_aws_lambda_function_publish_book_review" { triggers = { resource_name = "aws_lambda_function.publish_book_review" resource_type = "ZIP_LAMBDA_FUNCTION" original_source_code = "${local.lambda_src_path}" built_output_path = "${local.building_path}/${local.lambda_code_filename}" } depends_on = [ null_resource.build_lambda_function ] }
sam metadata
リソースの内容は、Lambda リソースタイプ (関数またはレイヤー) とパッケージングタイプ (ZIP またはイメージ) によって異なります。SSML の詳細と例については、「sam metadata resource」を参照してください。
sam metadata
リソースを設定し、サポートされている を使用する場合 AWS SAM CLI コマンド AWS SAM CLI は、 を実行する前にメタデータファイルを生成します。 AWS SAM CLI コマンド。このファイルを生成したら、将来の で --skip-prepare-infra
オプションを使用できます。 AWS SAM CLI メタデータ生成プロセスをスキップし、時間を節約するための コマンド。このオプションは、新しい Lambda 関数や新しいAPIエンドポイントの作成など、インフラストラクチャの変更を行っていない場合にのみ使用してください。
を使用する AWS SAM CLI Lambda アーティファクトを構築するには
を使用する AWS SAM CLI sam build
コマンドを使用して Lambda アーティファクトを構築します。を実行するとsam build
、 AWS SAM CLI は以下を実行します。
-
の
sam metadata
リソースを検索します Terraform Lambda リソースについて学び、見つけるためのプロジェクト。 -
Lambda ビルドロジックを開始して Lambda アーティファクトを構築します。
-
を整理する
.aws-sam
ディレクトリを作成します Terraform で使用するプロジェクト AWS SAM CLIsam local
コマンド。
サムビルドでビルドするには
-
を含む ディレクトリから Terraform ルートモジュールで、以下を実行します。
$
sam build --hook-name terraform
-
特定の Lambda 関数または Layer を構築するには、以下を実行します。
$
sam build --hook-name terraform
lambda-resource-id
Lambda リソース ID は、Lambda 関数名またはフルにすることができます。Terraform
aws_lambda_function.list_books
や などのリソースアドレスmodule.list_book_function.aws_lambda_function.this[0]
。
関数のソースコードやその他の Terraform 設定ファイルは、Terraform ルートモジュールの場合は、場所を指定する必要があります。--terraform-project-root-path
オプションを使用して、これらのファイルを含む最上位ディレクトリへの絶対パスまたは相対パスを指定します。以下に例を示します。
$
sam build --hook-name terraform --terraform-project-root-path
~/projects/terraform/demo
コンテナを使用したビルド
を実行する場合 AWS SAM CLI sam build
コマンドでは、 AWS SAM CLI ローカルを使用してアプリケーションを構築するには Docker コンテナ。
注記
必要なもの Docker をインストールして設定します。手順については、で使用する Docker のインストール AWS SAM CLI を参照してください。
コンテナを使用してビルドするには
-
Dockerfile
を含む を作成する Terraform, Python および Make ツール。Lambda 関数ランタイムも含める必要があります。次に
Dockerfile
の例を示します。FROM public.ecr.aws/amazonlinux/amazonlinux:2 RUN yum -y update \ && yum install -y unzip tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \ less libcurl-devel openssl openssl-devel readline-devel xz-devel \ zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \ && rm -rf /var/cache/yum RUN yum -y install make \ && yum -y install zip RUN yum install -y yum-utils \ && yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo \ && yum -y install terraform \ && terraform --version # AWS Lambda Builders RUN amazon-linux-extras enable python3.8 RUN yum clean metadata && yum -y install python3.8 RUN curl -L get-pip.io | python3.8 RUN pip3 install aws-lambda-builders RUN ln -s /usr/bin/python3.8 /usr/bin/python3 RUN python3 --version VOLUME /project WORKDIR /project ENTRYPOINT ["sh"]
-
を使用します。docker build
をビルドするには Docker イメージ。 以下に例を示します。
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
を実行する AWS SAM CLI
sam build
--use-container
および--build-image
オプションを含む コマンド。以下に例を示します。
$
sam build --use-container --build-image
terraform-build:v1
次のステップ
の使用を開始するには AWS SAM CLI と Terraform プロジェクトについては、「」を参照してくださいの使用 AWS SAM CLI with Terraform ローカルデバッグとテスト用。
のセットアップ Terraform Cloud
を使用することをお勧めします。Terraform v1.6.0 以降。古いバージョンを使用している場合は、Terraform ローカルでファイルを計画します。ローカルプランファイルには、 AWS SAM CLI ローカルテストとデバッグを実行するために必要な情報を提供します。
ローカルプランファイルを生成するには
注記
これらのステップは、Terraform v1.6.0 以降。の使用を開始するには AWS SAM CLI with Terraform Cloud「の使用 AWS SAM CLI with Terraform」を参照してください。
-
API トークンの設定 – トークンのタイプはアクセスレベルによって異なります。詳細については、「 のAPIトークン
」を参照してください。 Terraform Cloud ドキュメント 。 -
API トークン環境変数を設定する – コマンドラインの例を次に示します。
$
export TOKEN="<api-token-value>
" -
実行 ID の取得 – から Terraform Cloud コンソールで、 の実行 ID を見つけます。Terraform で使用する の実行 AWS SAM CLI.
実行 ID は実行のブレッドクラムパスにあります。
-
プランファイルを取得する – APIトークンを使用してローカルプランファイルを取得します。コマンドからの出力例を次に示します。
curl \ --header "Authorization: Bearer $TOKEN" \ --header "Content-Type: application/vnd.api+json" \ --location \ https://app.terraform.io/api/v2/runs/
<run ID>
/plan/json-output \ > custom_plan.json
これで、 AWS SAM CLI with Terraform Cloud。 サポートされている を使用する場合 AWS SAM CLI コマンド、 --terraform-plan-file
オプションを使用してローカルプランファイルの名前とパスを指定します。以下に例を示します。
$
sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
以下は sam local start-api
を使用したコマンドの例です。
$
sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
これらの例で使用できるサンプルアプリケーションについては、aws-samples の「api_gateway_v2_tf_cloud
次のステップ
の使用を開始するには AWS SAM CLI with Terraform Cloud「の使用 AWS SAM CLI with Terraform ローカルデバッグとテスト用」を参照してください。