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
Topik
AWS SAM CLI Terraform prasyarat
Lengkapi semua prasyarat untuk mulai menggunakan AWS SAM CLI dengan Anda Terraform proyek.
-
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
-
Menginstal Terraform
Untuk memeriksa apakah Anda memiliki Terraform diinstal, jalankan yang berikut ini:
$
terraform -version
Untuk menginstal Terraform, lihat Instal Terraform
di Terraform registri. -
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:
-
Menginstal Python 3.8 atau yang lebih baru
-
Instal Make alat.
-
Tentukan artefak Lambda Anda membangun logika di dalam Terraform proyek.
-
Tentukan sumber
sam metadata
daya untuk menginformasikan AWS SAM CLI dari logika build Anda. -
Gunakan AWS SAM CLI
sam build
perintah 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
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
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 metadata
Sumber daya adalah null_resource
Terraform jenis sumber daya yang menyediakan AWS SAM CLI dengan informasi yang dibutuhkan untuk menemukan artefak Lambda Anda. sam metadata
Sumber daya unik diperlukan untuk setiap fungsi atau lapisan Lambda dalam proyek Anda. Untuk mempelajari lebih lanjut tentang jenis sumber daya ini, lihat null_resource
Untuk mendefinisikan a sam metadata sumber daya
-
Beri nama sumber daya Anda dimulai dengan
sam_metadata_
untuk mengidentifikasi sumber daya sebagai sam metadata sumber daya. -
Tentukan properti artefak Lambda Anda di dalam
triggers
blok sumber daya Anda. -
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 build
perintah untuk membangun artefak Lambda Anda. Ketika Anda berlarisam build
, AWS SAM CLI melakukan hal berikut:
-
Mencari
sam metadata
sumber daya di Anda Terraform proyek untuk mempelajari dan menemukan sumber daya Lambda Anda. -
Memulai logika build Lambda Anda untuk membangun artefak Lambda Anda.
-
Membuat
.aws-sam
direktori yang mengatur Terraform proyek untuk digunakan dengan AWS SAM CLIsam local
perintah.
Untuk membangun dengan sam build
-
Dari direktori yang berisi Terraform modul root, jalankan yang berikut ini:
$
sam build --hook-name terraform
-
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 build
perintah, 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
-
Buat sebuah
Dockerfile
yang berisi Terraform, Python, dan Make alat. Anda juga harus menyertakan runtime fungsi Lambda Anda.Berikut ini adalah contoh
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"]
-
Gunakan docker build
untuk membangun Docker gambar. Berikut adalah contohnya:
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
Jalankan AWS SAM CLI
sam build
perintah 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.
-
Konfigurasikan token API — Jenis token akan bergantung pada tingkat akses Anda. Untuk mempelajari selengkapnya, lihat Token API
di Terraform Cloud dokumentasi. -
Tetapkan variabel lingkungan token API Anda - Berikut ini adalah contoh dari baris perintah:
$
export TOKEN="<api-token-value>
" -
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.
-
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
Langkah selanjutnya
Untuk mulai menggunakan AWS SAM CLI dengan Terraform Cloud, lihat Menggunakan AWS SAM CLI dengan Terraform untuk debugging dan pengujian lokal.