の開始方法 Terraform のサポート AWS SAM CLI - AWS Serverless Application Model

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

の開始方法 Terraform のサポート AWS SAM CLI

このトピックでは、 AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) と Terraform.

フィードバックを提供し、機能リクエストを送信するには、 GitHub 問題

AWS SAM CLI Terraform 前提条件

の使用を開始するには、すべての前提条件を完了します。 AWS SAM CLI と Terraform プロジェクト。

  1. のインストールまたはアップグレード AWS SAM CLI

    があるかどうかを確認するには AWS SAM CLI をインストールし、以下を実行します。

    $ sam --version

    が AWS SAM CLI は既にインストールされています。出力にはバージョンが表示されます。最新バージョンにアップグレードするには、「AWS SAM CLI のアップグレード」 を参照してください。

    のインストール手順については、 AWS SAM CLI とそのすべての前提条件については、「」を参照してくださいAWS SAM CLI のインストール

  2. インストール Terraform

    次のものがあるかどうかを確認するには Terraform をインストールし、以下を実行します。

    $ terraform -version

    をインストールするには Terraform「インストール」を参照してください。Terraform ()Terraform レジストリ

  3. インストール 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 プロジェクトでは、以下を実行する必要があります。

  1. インストール Python 3.8 以降

  2.   のインストール Make ツール。

  3. 内で Lambda アーティファクトビルドロジックを定義する Terraform プロジェクト。

  4. に通知するsam metadataリソースを定義する AWS SAM CLI ビルドロジックの 。

  5. を使用する 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 のダウンロード) を参照してください。

次を実行して、Python 3.8 以降がマシンのパスに追加されていることを確認します。

$ python --version

出力に 3.8 以降のバージョンの Python が表示される必要があります。

  のインストール Make tool

GNU Make は、プロジェクトの実行可能ファイルやその他のソース以外のファイルの生成を制御するツールです。の AWS SAM CLI makefiles は、Lambda アーティファクトを構築するためにこのツールに依存する を作成します。

を持っていない場合は、Make をローカルマシンにインストールし、先に進む前にインストールします。

Windows の場合は、Chocolatey を使用してインストールできます。Chocolatey を使用してインストールするには、「Windows で Make をインストールして使用する方法」の「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」を参照してください。 Terraform レジストリ

を定義するには sam metadata リソース
  1. から始まるリソースに名前sam_metadata_を付けて、リソースを として識別します。sam metadata リソース。

  2. リソースの triggers ブロック内で Lambda アーティファクトプロパティを定義します。

  3. Lambda ビルドロジックを含む null_resourcedepends_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 は以下を実行します。

  1. sam metadataリソースを検索します Terraform Lambda リソースについて学び、見つけるためのプロジェクト。

  2. Lambda ビルドロジックを開始して Lambda アーティファクトを構築します。

  3. を整理する.aws-samディレクトリを作成します Terraform で使用するプロジェクト AWS SAM CLI sam local コマンド。

サムビルドでビルドするには
  1. を含む ディレクトリから Terraform ルートモジュールで、以下を実行します。

    $ sam build --hook-name terraform
  2. 特定の 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 を参照してください。

コンテナを使用してビルドするには
  1. 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"]
  2. を使用します。docker build をビルドするには Docker イメージ。

    以下に例を示します。

    $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
  3. を実行する 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」を参照してください。

  1. API トークンの設定 – トークンのタイプはアクセスレベルによって異なります。詳細については、「 のAPIトークン」を参照してください。 Terraform Cloud ドキュメント

  2. API トークン環境変数を設定する – コマンドラインの例を次に示します。

    $ export TOKEN="<api-token-value>"
  3. 実行 ID の取得 – から Terraform Cloud コンソールで、 の実行 ID を見つけます。Terraform で使用する の実行 AWS SAM CLI.

    実行 ID は実行のブレッドクラムパスにあります。

    のブレッドクラムパス Terraform Cloud は実行 ID を表示します。
  4. プランファイルを取得する – 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」を参照してください。GitHub リポジトリ

次のステップ

の使用を開始するには AWS SAM CLI with Terraform Cloud「の使用 AWS SAM CLI with Terraform ローカルデバッグとテスト用」を参照してください。