Memulai dengan Terraform dukungan untuk AWS SAM CLI - AWS Serverless Application Model

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai dengan Terraform dukungan untuk AWS SAM CLI

Topik ini mencakup cara memulai menggunakan Antarmuka Baris AWS Serverless Application Model Perintah (AWS SAM CLI) dengan Terraform.

Untuk memberikan umpan balik dan mengirimkan permintaan fitur, buat GitHub Masalah.

AWS SAM CLI Terraform prasyarat

Lengkapi semua prasyarat untuk mulai menggunakan AWS SAM CLI dengan Anda Terraform proyek.

  1. Instal atau tingkatkan AWS SAM CLI

    Untuk memeriksa apakah Anda memiliki AWS SAM CLI diinstal, jalankan yang berikut ini:

    $ sam --version

    Jika AWS SAM CLI sudah diinstal, output akan menampilkan versi. Untuk meng-upgrade ke versi terbaru, lihatUpgrade AWS SAMCLI.

    Untuk petunjuk tentang menginstal AWS SAM CLI bersama dengan semua prasyaratnya, lihat. Instal AWS SAM CLI

  2. Menginstal Terraform

    Untuk memeriksa apakah Anda memiliki Terraform diinstal, jalankan yang berikut ini:

    $ terraform -version

    Untuk menginstal Terraform, lihat Instal Terraformdi Terraform registri.

  3. Menginstal Docker untuk pengujian lokal

    The AWS SAM CLI memerlukan Docker untuk pengujian lokal. Untuk menginstal Docker, lihat Menginstal Docker untuk digunakan dengan AWS SAM CLI.

Menggunakan AWS SAM CLI perintah dengan Terraform

Saat Anda menjalankan dukungan AWS SAM CLI perintah, gunakan --hook-name opsi dan berikan terraform nilainya. Berikut adalah contohnya:

$ sam local invoke --hook-name terraform

Anda dapat mengonfigurasi opsi ini di AWS SAM CLI file konfigurasi dengan yang berikut ini:

hook_name = "terraform"

Siapkan untuk Terraform memproyeksikan

Lengkapi langkah-langkah dalam topik ini untuk menggunakan AWS SAM CLI dengan Terraform proyek.

Tidak ada pengaturan tambahan yang diperlukan jika Anda membangun AWS Lambda artefak di luar Terraform proyek. Lihat Menggunakan AWS SAM CLI dengan Terraform untuk debugging dan pengujian lokal untuk mulai menggunakan AWS SAM CLI.

Jika Anda membangun artefak Lambda Anda di dalam Terraform proyek, Anda harus melakukan hal berikut:

  1. Menginstal Python 3.8 atau yang lebih baru

  2. Instal Make alat.

  3. Tentukan artefak Lambda Anda membangun logika di dalam Terraform proyek.

  4. Tentukan sumber sam metadata daya untuk menginformasikan AWS SAM CLI dari logika build Anda.

  5. Gunakan AWS SAM CLI sam buildperintah untuk membangun artefak Lambda Anda.

Menginstal Python 3.8 atau yang lebih baru

Python 3.8 atau yang lebih baru diperlukan untuk digunakan dengan AWS SAM CLI. Ketika Anda berlarisam build, AWS SAM CLI menciptakan makefiles yang mengandung Python perintah untuk membangun artefak Lambda Anda.

Untuk petunjuk penginstalan, lihat Mengunduh Python di Panduan Pemula Python.

Verifikasi bahwa Python 3.8 atau yang lebih baru ditambahkan ke jalur mesin Anda dengan menjalankan:

$ python --version

Output harus menampilkan versi Python yang 3.8 atau lebih baru.

Instal Make alat

GNU Membuat adalah alat yang mengontrol pembuatan file yang dapat dieksekusi dan file non-sumber lainnya untuk proyek Anda. The AWS SAM CLI menciptakan makefiles yang mengandalkan alat ini untuk membangun artefak Lambda Anda.

Jika Anda tidak memiliki Make diinstal pada mesin lokal Anda, instal sebelum bergerak maju.

Untuk Windows, Anda dapat menginstal menggunakan Chocolatey. Untuk petunjuk, lihat Menggunakan Chocolatey di Cara Menginstal dan Menggunakan “Make” di Windows

Tentukan logika membangun artefak Lambda

Gunakan null_resource Terraform tipe sumber daya untuk menentukan logika build Lambda Anda. Berikut ini adalah contoh yang menggunakan skrip build khusus untuk membangun fungsi 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" } }

Tentukan sam metadata sumber daya

sam metadataSumber daya adalah null_resource Terraform jenis sumber daya yang menyediakan AWS SAM CLI dengan informasi yang dibutuhkan untuk menemukan artefak Lambda Anda. sam metadataSumber daya unik diperlukan untuk setiap fungsi atau lapisan Lambda dalam proyek Anda. Untuk mempelajari lebih lanjut tentang jenis sumber daya ini, lihat null_resource di Terraform registri.

Untuk mendefinisikan a sam metadata sumber daya
  1. Beri nama sumber daya Anda dimulai dengan sam_metadata_ untuk mengidentifikasi sumber daya sebagai sam metadata sumber daya.

  2. Tentukan properti artefak Lambda Anda di dalam triggers blok sumber daya Anda.

  3. Tentukan null_resource yang berisi logika build Lambda Anda dengan argumen. depends_on

    Berikut ini adalah contoh template:

    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 ] }

    Berikut ini adalah sumber sam metadata daya contoh:

    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 ] }

Isi sam metadata sumber daya Anda akan bervariasi berdasarkan jenis sumber daya Lambda (fungsi atau lapisan), dan jenis kemasan (ZIP atau gambar). Untuk informasi lebih lanjut, bersama dengan contoh, lihatsumber daya metadata sam.

Saat Anda mengonfigurasi sam metadata sumber daya dan menggunakan yang didukung AWS SAM CLI perintah, AWS SAM CLI akan menghasilkan file metadata sebelum menjalankan AWS SAM CLI perintah. Setelah Anda membuat file ini, Anda dapat menggunakan --skip-prepare-infra opsi dengan future AWS SAM CLI perintah untuk melewati proses pembuatan metadata dan menghemat waktu. Opsi ini hanya boleh digunakan jika Anda belum membuat perubahan infrastruktur apa pun, seperti membuat fungsi Lambda baru atau titik akhir API baru.

Gunakan AWS SAM CLI untuk membangun artefak Lambda Anda

Gunakan AWS SAM CLI sam buildperintah untuk membangun artefak Lambda Anda. Ketika Anda berlarisam build, AWS SAM CLI melakukan hal berikut:

  1. Mencari sam metadata sumber daya di Anda Terraform proyek untuk mempelajari dan menemukan sumber daya Lambda Anda.

  2. Memulai logika build Lambda Anda untuk membangun artefak Lambda Anda.

  3. Membuat .aws-sam direktori yang mengatur Terraform proyek untuk digunakan dengan AWS SAM CLI sam localperintah.

Untuk membangun dengan sam build
  1. Dari direktori yang berisi Terraform modul root, jalankan yang berikut ini:

    $ sam build --hook-name terraform
  2. Untuk membangun fungsi atau layer Lambda tertentu, jalankan yang berikut

    $ sam build --hook-name terraform lambda-resource-id

    ID sumber daya Lambda dapat berupa nama fungsi Lambda atau lengkap Terraform alamat sumber daya, seperti aws_lambda_function.list_books ataumodule.list_book_function.aws_lambda_function.this[0].

Jika kode sumber fungsi Anda atau lainnya Terraform file konfigurasi terletak di luar direktori yang berisi Terraform modul root, Anda perlu menentukan lokasi. Gunakan --terraform-project-root-path opsi untuk menentukan jalur absolut atau relatif ke direktori tingkat atas yang berisi file-file ini. Berikut adalah contohnya:

$ sam build --hook-name terraform --terraform-project-root-path ~/projects/terraform/demo

Bangun menggunakan wadah

Saat menjalankan AWS SAM CLI sam buildperintah, Anda dapat mengkonfigurasi AWS SAM CLI untuk membangun aplikasi Anda menggunakan lokal Docker kontainer.

catatan

Anda harus memiliki Docker diinstal dan dikonfigurasi. Untuk petunjuk, silakan lihat Menginstal Docker untuk digunakan dengan AWS SAM CLI.

Untuk membangun menggunakan wadah
  1. Buat sebuah Dockerfile yang berisi Terraform, Python, dan Make alat. Anda juga harus menyertakan runtime fungsi Lambda Anda.

    Berikut ini adalah contohDockerfile:

    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. Gunakan docker builduntuk membangun Docker gambar.

    Berikut adalah contohnya:

    $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
  3. Jalankan AWS SAM CLI sam buildperintah dengan --build-image opsi --use-container dan.

    Berikut adalah contohnya:

    $ sam build --use-container --build-image terraform-build:v1

Langkah selanjutnya

Untuk mulai menggunakan AWS SAM CLI dengan Anda Terraform proyek, lihatMenggunakan AWS SAM CLI dengan Terraform untuk debugging dan pengujian lokal.

Siapkan untuk Terraform Cloud

Kami menyarankan Anda menggunakan Terraform v1.6.0 atau yang lebih baru. Jika Anda menggunakan versi yang lebih lama, Anda harus menghasilkan Terraform rencanakan file secara lokal. File paket lokal menyediakan AWS SAM CLI dengan informasi yang dibutuhkan untuk melakukan pengujian dan debugging lokal.

Untuk menghasilkan file paket lokal
catatan

Langkah-langkah ini tidak diperlukan untuk Terraform v1.6.0 atau yang lebih baru. Untuk mulai menggunakan AWS SAM CLI dengan Terraform Cloud, lihat Menggunakan AWS SAM CLI dengan Terraform.

  1. Konfigurasikan token API — Jenis token akan bergantung pada tingkat akses Anda. Untuk mempelajari selengkapnya, lihat Token API di Terraform Cloud dokumentasi.

  2. Tetapkan variabel lingkungan token API Anda - Berikut ini adalah contoh dari baris perintah:

    $ export TOKEN="<api-token-value>"
  3. Dapatkan ID run Anda — Dari Terraform Cloud konsol, cari ID run untuk Terraform jalankan yang ingin Anda gunakan dengan AWS SAM CLI.

    ID run terletak di jalur breadcrumb run Anda.

    Jalur Breadcrumb di Terraform Cloud yang menampilkan ID run.
  4. Ambil file paket — Menggunakan token API Anda, dapatkan file paket lokal Anda. Berikut ini adalah contoh dari baris perintah:

    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

Anda sekarang siap untuk menggunakan AWS SAM CLI dengan Terraform Cloud. Saat menggunakan dukungan AWS SAM CLI perintah, gunakan --terraform-plan-file opsi untuk menentukan nama dan jalur file paket lokal Anda. Berikut adalah contohnya:

$ sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json

Berikut ini adalah contoh, menggunakan sam local start-api perintah:

$ sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json

Untuk contoh aplikasi yang dapat Anda gunakan dengan contoh ini, lihat api_gateway_v2_tf_cloud di aws-samples GitHub repositori.

Langkah selanjutnya

Untuk mulai menggunakan AWS SAM CLI dengan Terraform Cloud, lihat Menggunakan AWS SAM CLI dengan Terraform untuk debugging dan pengujian lokal.