

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 SAMCLI
<a name="gs-terraform-support"></a>

Topik ini mencakup cara memulai dengan menggunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) denganTerraform.

Untuk memberikan umpan balik dan mengirimkan permintaan fitur, buat [GitHubMasalah](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform).

**Topics**
+ [AWS SAMCLITerraformprasyarat](#gs-terraform-support-prerequisites)
+ [Menggunakan AWS SAMCLI perintah dengan Terraform](#gs-terraform-support-using)
+ [Siapkan untuk Terraform proyek](#gs-terraform-support-projects)
+ [Siapkan untuk Terraform Cloud](#gs-terraform-support-cloud)

## AWS SAMCLITerraformprasyarat
<a name="gs-terraform-support-prerequisites"></a>

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

1. 

**Instal atau tingkatkan AWS SAMCLI**

   Untuk memeriksa apakah Anda telah AWS SAMCLI menginstal, jalankan yang berikut ini:

   ```
   $ sam --version
   ```

   Jika AWS SAMCLI sudah diinstal, output akan menampilkan versi. Untuk meng-upgrade ke versi terbaru, lihat[Upgrade AWS SAMCLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

   Untuk petunjuk tentang menginstal AWS SAMCLI bersama dengan semua prasyaratnya, lihat. [Instal AWS SAMCLI](install-sam-cli.md)

1. 

**Instal Terraform**

   Untuk memeriksa apakah Anda telah Terraform menginstal, jalankan yang berikut ini:

   ```
   $ terraform -version
   ```

   Untuk menginstalTerraform, lihat [Instal Terraform](https://developer.hashicorp.com/terraform/downloads) di *Terraformregistri*.

1. 

**Instal Docker untuk pengujian lokal**

    AWS SAMCLIDockerKebutuhan untuk pengujian lokal. Untuk menginstalDocker, lihat[Menginstal Docker untuk digunakan dengan AWS SAMCLI](install-docker.md).

## Menggunakan AWS SAMCLI perintah dengan Terraform
<a name="gs-terraform-support-using"></a>

Saat Anda menjalankan AWS SAMCLI perintah yang didukung, gunakan `--hook-name` opsi dan berikan `terraform` nilainya. Berikut ini adalah contohnya:

```
$ sam local invoke --hook-name terraform
```

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

```
hook_name = "terraform"
```

## Siapkan untuk Terraform proyek
<a name="gs-terraform-support-projects"></a>

Lengkapi langkah-langkah dalam topik ini untuk menggunakan Terraform proyek AWS SAMCLI with.

Tidak diperlukan pengaturan tambahan jika Anda membangun AWS Lambda artefak di luar Terraform proyek Anda. Lihat [Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal](using-samcli-terraform.md) untuk mulai menggunakan AWS SAMCLI.

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

1. Instal Python 3.8 atau yang lebih baru

1. Instal Make alat.

1. Tentukan artefak Lambda membangun logika dalam proyek Anda. Terraform

1. Tentukan `sam metadata` sumber daya untuk menginformasikan logika build Anda. AWS SAMCLI

1. Gunakan AWS SAMCLI `sam build` perintah untuk membangun artefak Lambda Anda.

### Instal Python 3.8 atau yang lebih baru
<a name="gs-terraform-support-projects-python"></a>

Python3.8 atau yang lebih baru diperlukan untuk digunakan dengan. AWS SAMCLI Saat Anda menjalankan`sam build`, AWS SAMCLI kreasi `makefiles` yang berisi Python perintah untuk membangun artefak Lambda Anda.

*Untuk petunjuk penginstalan, lihat [Mengunduh Python di Panduan](https://wiki.python.org/moin/BeginnersGuide/Download) 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
<a name="gs-terraform-support-projects-make"></a>

GNU[Make](https://www.gnu.org/software/make/)adalah alat yang mengontrol pembuatan file yang dapat dieksekusi dan file non-sumber lainnya untuk proyek Anda. AWS SAMCLICiptaan `makefiles` yang mengandalkan alat ini untuk membangun artefak Lambda Anda.

Jika Anda belum Make menginstal pada mesin lokal Anda, instal sebelum bergerak maju.

Untuk Windows, Anda dapat menginstal menggunakan [Chocolatey](https://chocolatey.org/). Untuk petunjuk, lihat [Menggunakan Chocolatey](https://www.technewstoday.com/install-and-use-make-in-windows/#using-chocolatey) di *Cara Menginstal dan Menggunakan “Make”* di Windows

### Tentukan logika membangun artefak Lambda
<a name="gs-terraform-support-projects-logic"></a>

Gunakan jenis `null_resource` Terraform 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 sumber sam metadata daya
<a name="gs-terraform-support-projects-metadata"></a>

`sam metadata`Sumber daya adalah jenis `null_resource` Terraform sumber daya yang menyediakan informasi AWS SAMCLI 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\$1resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) di registri. Terraform*

**Untuk mendefinisikan sumber sam metadata daya**

1. Beri nama sumber daya Anda mulai dengan `sam_metadata_` untuk mengidentifikasi sumber daya sebagai sam metadata sumber daya.

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

1. 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, lihat[sumber daya metadata sam](terraform-sam-metadata.md).

Ketika Anda mengkonfigurasi `sam metadata` sumber daya dan menggunakan AWS SAMCLI perintah yang didukung, AWS SAMCLI akan menghasilkan file metadata sebelum menjalankan perintah. AWS SAMCLI Setelah Anda membuat file ini, Anda dapat menggunakan `--skip-prepare-infra` opsi dengan AWS SAMCLI perintah future 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 SAMCLI untuk membangun artefak Lambda Anda
<a name="gs-terraform-support-projects-build"></a>

Gunakan AWS SAMCLI `sam build` perintah untuk membangun artefak Lambda Anda. Ketika Anda menjalankan`sam build`, AWS SAMCLI melakukan hal berikut:

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

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

1. Membuat `.aws-sam` direktori yang mengatur Terraform proyek Anda untuk digunakan dengan AWS SAMCLI `sam local` perintah.

**Untuk membangun dengan sam build**

1. Dari direktori yang berisi modul Terraform root Anda, jalankan yang berikut ini:

   ```
   $ sam build --hook-name terraform
   ```

1. Untuk membangun fungsi atau layer Lambda tertentu, jalankan yang berikut ini

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

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

Jika kode sumber fungsi Anda atau file Terraform konfigurasi lainnya terletak di luar direktori yang berisi modul Terraform root Anda, 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 ini adalah contohnya:

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

#### Bangun menggunakan wadah
<a name="gs-terraform-support-projects-build-container"></a>

Saat menjalankan AWS SAMCLI `sam build` perintah, Anda dapat mengonfigurasi AWS SAMCLI untuk membangun aplikasi Anda menggunakan Docker wadah lokal.

**catatan**  
Anda harus Docker menginstal dan mengkonfigurasi. Untuk petunjuk, lihat [Menginstal Docker untuk digunakan dengan AWS SAMCLI](install-docker.md).

**Untuk membangun menggunakan wadah**

1. Buat `Dockerfile` yang berisiTerraform,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"]
   ```

1. Gunakan [https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/)untuk membangun Docker citra Anda.

   Berikut ini adalah contohnya:

   ```
   $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
   ```

1. Jalankan AWS SAMCLI `sam build` perintah dengan `--build-image` opsi `--use-container` dan.

   Berikut ini adalah contohnya:

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

### Langkah selanjutnya
<a name="gs-terraform-support-projects-next"></a>

Untuk mulai menggunakan AWS SAMCLI dengan Terraform proyek Anda, lihat[Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal](using-samcli-terraform.md).

## Siapkan untuk Terraform Cloud
<a name="gs-terraform-support-cloud"></a>

Kami menyarankan Anda menggunakan Terraform v1.6.0 atau yang lebih baru. Jika Anda menggunakan versi yang lebih lama, Anda harus membuat file Terraform paket secara lokal. File rencana lokal menyediakan informasi AWS SAM CLI 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 withTerraform Cloud, lihat[Menggunakan AWS SAMCLI dengan Terraform](using-samcli-terraform.md).

1. **Konfigurasikan token API** — Jenis token akan tergantung pada tingkat akses Anda. Untuk mempelajari selengkapnya, lihat [Token API](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens) dalam *Terraform Clouddokumentasi*.

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

   ```
   $ export TOKEN="<api-token-value>"
   ```

1. **Dapatkan ID run Anda** — Dari Terraform Cloud konsol, cari ID Terraform run untuk proses yang ingin Anda gunakan dengan AWS SAMCLI.

   ID run terletak di jalur breadcrumb run Anda.  
![\[Jalur Breadcrumb Terraform Cloud yang menampilkan run ID.\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/images/terraform-01.png)

1. **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 SAMCLI denganTerraform Cloud. Saat menggunakan AWS SAMCLI perintah yang didukung, gunakan `--terraform-plan-file` opsi untuk menentukan nama dan jalur file paket lokal Anda. Berikut ini 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\$1gateway\$1v2\$1tf\$1cloud](https://github.com/aws-samples/aws-sam-terraform-examples/tree/main/ga/api_gateway_v2_tf_cloud) di repositori aws-samples. GitHub*

### Langkah selanjutnya
<a name="gs-terraform-support-cloud-next"></a>

Untuk mulai menggunakan AWS SAMCLI withTerraform Cloud, lihat[Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal](using-samcli-terraform.md).