

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

# AWS SAMCLITerraformdukungan
<a name="terraform-support"></a>

Bagian ini mencakup penggunaan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) dengan Terraform proyek dan Terraform Cloud Anda.

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

**Topics**
+ [Memulai dengan Terraform dukungan untuk AWS SAMCLI](gs-terraform-support.md)
+ [Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal](using-samcli-terraform.md)
+ [Menggunakan AWS SAMCLI with ServerLess.tf untuk debugging dan pengujian lokal](using-samcli-serverlesstf.md)
+ [AWS SAMCLIdengan Terraform referensi](terraform-reference.md)
+ [Untuk apa AWS SAMCLI dukunganTerraform?](#what-is-terraform-support)

# 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).

# Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal
<a name="using-samcli-terraform"></a>

Topik ini mencakup cara menggunakan AWS Serverless Application Model perintah Command Line Interface (AWS SAMCLI) yang didukung dengan Terraform proyek Anda danTerraform Cloud.

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

**Topics**
+ [Pengujian lokal dengan sam local invoke](#using-samcli-terraform-local-invoke)
+ [Pengujian lokal dengan sam local start-api](#using-samcli-terraform-local-start-api)
+ [Pengujian lokal dengan sam local start-lambda](#using-samcli-terraform-local-start-lambda)
+ [Batasan Terraform](#using-samcli-terraform-unsupported)

## Pengujian lokal dengan sam local invoke
<a name="using-samcli-terraform-local-invoke"></a>

**catatan**  
Untuk menggunakan AWS SAMCLI to test secara lokal, Anda harus memiliki Docker diinstal dan dikonfigurasi. Untuk petunjuk, lihat [Menginstal Docker untuk digunakan dengan AWS SAMCLI](install-docker.md).

Berikut ini adalah contoh pengujian fungsi Lambda Anda secara lokal dengan meneruskan suatu peristiwa:

```
$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -
```

Untuk mempelajari lebih lanjut tentang menggunakan perintah ini, lihat[Pengantar pengujian dengan sam local invoke](using-sam-cli-local-invoke.md).

## Pengujian lokal dengan sam local start-api
<a name="using-samcli-terraform-local-start-api"></a>

Untuk menggunakannya `sam local start-api`Terraform, jalankan yang berikut ini:

```
$ sam local start-api --hook-name terraform
```

Berikut ini adalah contohnya:

```
$ sam local start-api --hook-name terraform                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                          
Running Prepare Hook to prepare the current application                                                                                                                                                   
Executing prepare hook of hook "terraform"                                                                                                                                                                
Initializing Terraform application                                                                                                                                                                        
...
Creating terraform plan and getting JSON output                                                                                                                                                           
....
Generating metadata file                                                                                                                                                                                  
                                                                                                                                                                                                          
Unresolvable attributes discovered in project, run terraform apply to resolve them.                                                                                                                       
                                                                                                                                                                                                          
Finished generating metadata file. Storing in...
Prepare hook completed and metadata file generated at: ...    
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]                                                                                                                                          
Mounting None at http://127.0.0.1:3000/hello [POST]                                                                                                                                                       
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you  
used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template                     
2023-06-26 13:21:20  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Untuk mempelajari lebih lanjut tentang perintah ini, lihat[Pengantar pengujian dengan sam local start-api](using-sam-cli-local-start-api.md).

### Fungsi Lambda yang menggunakan otorisasi Lambda
<a name="using-sam-cli-terraform-local-start-api-authorizers"></a>

Untuk fungsi Lambda yang dikonfigurasi untuk menggunakan otorisasi Lambda, Lambda akan AWS SAMCLI secara otomatis memanggil otorisasi Lambda Anda sebelum menjalankan titik akhir fungsi Lambda Anda.
+ Untuk mempelajari lebih lanjut tentang fitur ini di AWS SAMCLI, lihat[Fungsi Lambda yang menggunakan otorisasi Lambda](using-sam-cli-local-start-api.md#using-sam-cli-local-start-api-authorizers).
+ *Untuk informasi selengkapnya tentang penggunaan otorisasi Lambda diTerraform, lihat [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage)di registri. Terraform*

## Pengujian lokal dengan sam local start-lambda
<a name="using-samcli-terraform-local-start-lambda"></a>

Berikut ini adalah contoh pengujian fungsi Lambda Anda secara lokal dengan (): AWS Command Line Interface AWS CLI

1. Gunakan AWS SAMCLI untuk membuat lingkungan pengujian lokal:

   ```
   $ sam local start-lambda --hook-name terraform hello_world_function
   ```

1. Gunakan tombol AWS CLI untuk menjalankan fungsi Anda secara lokal:

   ```
   $ aws lambda invoke --function-name hello_world_function --endpoint-url http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json
   ```

Untuk mempelajari lebih lanjut tentang perintah ini, lihat[Pengantar pengujian dengan sam local start-lambda](using-sam-cli-local-start-lambda.md).

## Batasan Terraform
<a name="using-samcli-terraform-unsupported"></a>

Berikut ini adalah batasan saat menggunakan AWS SAMCLI withTerraform:
+ Fungsi Lambda ditautkan ke beberapa lapisan.
+ Terraformvariabel lokal yang mendefinisikan hubungan antar sumber daya.
+ Mereferensikan fungsi Lambda yang belum dibuat. Ini termasuk fungsi yang didefinisikan dalam atribut body dari sumber daya REST API.

Untuk menghindari keterbatasan ini, Anda dapat menjalankan `terraform apply` ketika sumber daya baru ditambahkan.

# Menggunakan AWS SAMCLI with ServerLess.tf untuk debugging dan pengujian lokal
<a name="using-samcli-serverlesstf"></a>

 AWS Serverless Application Model Command Line Interface (AWS SAMCLI) dapat digunakan dengan modul ServerLess.tf untuk debugging lokal dan pengujian fungsi dan lapisan Anda. AWS Lambda AWS SAMCLIPerintah berikut didukung:
+ `sam build`
+ `sam local invoke`
+ `sam local start-api`
+ `sam local start-lambda`

**catatan**  
ServerLess.tf versi 4.6.0 dan yang lebih baru mendukung integrasi. AWS SAMCLI

Untuk mulai menggunakan modul AWS SAMCLI dengan ServerLess.tf Anda, perbarui ke versi terbaru ServerLess.tf dan file. AWS SAMCLI

Mulai dari **serverless.tf versi 6.0.0**, Anda harus mengatur parameter sebagai. `create_sam_metadata` `true` Ini menghasilkan sumber daya metadata yang dibutuhkan AWS SAMCLI `sam build` perintah.

Untuk mempelajari selengkapnya tentang Serverless.tf, lihat [terraform-aws-lambda-module](https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest).

# AWS SAMCLIdengan Terraform referensi
<a name="terraform-reference"></a>

Bagian ini adalah referensi untuk menggunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) dengan Terraform untuk debugging dan pengujian lokal.

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

## AWS SAM referensi fitur yang didukung
<a name="terraform-reference-sam"></a>

Dokumentasi referensi untuk AWS SAMCLI fitur yang didukung untuk digunakan dengan Terraform dapat ditemukan di sini:
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Terraformreferensi khusus
<a name="terraform-reference-specific"></a>

Dokumentasi referensi khusus untuk digunakan AWS SAMCLI dengan Terraform dapat ditemukan di sini:
+ [sumber daya metadata sam](terraform-sam-metadata.md)

# sumber daya metadata sam
<a name="terraform-sam-metadata"></a>

Halaman ini berisi informasi referensi untuk jenis **sam metadata resource** sumber daya yang digunakan dengan Terraform proyek.
+ Untuk pengenalan menggunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) denganTerraform, lihat[Untuk apa AWS SAMCLI dukunganTerraform?](terraform-support.md#what-is-terraform-support).
+ Untuk menggunakan AWS SAMCLI denganTerraform, lihat[Menggunakan AWS SAMCLI with Terraform untuk debugging dan pengujian lokal](using-samcli-terraform.md).

**Topics**
+ [Argumen](#terraform-sam-metadata-arguments)
+ [Contoh](#terraform-sam-metadata-examples)

## Argumen
<a name="terraform-sam-metadata-arguments"></a>


****  

| Pendapat | Deskripsi | 
| --- | --- | 
| built\$1output\$1path | Jalan menuju artefak yang dibangun AWS Lambda fungsi Anda. | 
| docker\$1build\$1args | String decoded dari objek JSON argumen build Docker. Argumen ini opsional. | 
| docker\$1context | Jalur ke direktori yang berisi konteks build image Docker. | 
| docker\$1file |  Jalur ke file Docker. Jalan ini relatif terhadap `docker_context` jalan. Argumen ini opsional. Nilai default-nya adalah `Dockerfile`.  | 
| docker\$1tag | Nilai tag gambar Docker yang dibuat. Nilai ini bersifat opsional. | 
| depends\$1on | Jalur ke sumber daya bangunan untuk fungsi atau lapisan Lambda Anda. Untuk mempelajari lebih lanjut, lihat [**depends\$1on**Argumen](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on) dalam Terraformregistri. | 
| original\$1source\$1code |  Jalur ke tempat fungsi Lambda Anda ditentukan. Nilai ini bisa berupa string, array string, atau objek JSON decoded sebagai string. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | Nama fungsi Lambda. | 
| resource\$1type |  Format jenis paket fungsi Lambda Anda. Nilai yang diterima adalah: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | Jalur ke kode sumber daya Lambda di objek JSON. Tentukan properti ini ketika original\$1source\$1code adalah objek JSON. | 

## Contoh
<a name="terraform-sam-metadata-examples"></a>

### sumber daya metadata sam yang mereferensikan fungsi Lambda menggunakan jenis paket ZIP
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### sumber daya metadata sam yang mereferensikan fungsi Lambda menggunakan jenis paket gambar
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### sumber daya metadata sam yang mereferensikan lapisan Lambda
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```

## Untuk apa AWS SAMCLI dukunganTerraform?
<a name="what-is-terraform-support"></a>

Gunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) dengan Terraform proyek Anda atau Terraform Cloud untuk melakukan debugging lokal dan pengujian:
+ AWS Lambda fungsi dan lapisan.
+ Amazon API Gateway APIs.

Untuk pengantarTerraform, lihat [Apa ituTerraform?](https://developer.hashicorp.com/terraform/intro) di situs *HashiCorpTerraformweb*.

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

**catatan**  
Sebagai bagian dari langkah penguraian integrasi, AWS SAMCLI proses perintah pengguna menghasilkan file proyek dan data. AWS SAMCLI Output perintah harus tetap tidak berubah, tetapi di lingkungan tertentu, lingkungan atau pelari dapat menyuntikkan log atau informasi tambahan dalam output.

**Topics**
+ [Apa itu AWS SAMCLI?](#what-is-terraform-support-sam-cli)
+ [Bagaimana cara menggunakan AWS SAMCLI denganTerraform?](#what-is-terraform-support-how)
+ [Langkah selanjutnya](#what-is-terraform-support-next)

### Apa itu AWS SAMCLI?
<a name="what-is-terraform-support-sam-cli"></a>

 AWS SAMCLIIni adalah alat baris perintah yang dapat Anda gunakan dengan AWS SAM templat dan integrasi pihak ketiga yang didukung, sepertiTerraform, untuk membangun dan menjalankan aplikasi tanpa server Anda. Untuk pengantar AWS SAMCLI, lihat[Apa itu AWS SAMCLI?](what-is-sam-overview.md#what-is-sam-cli).

 AWS SAMCLIMendukung perintah berikut untukTerraform:
+ `sam local invoke`— Memulai pemanggilan satu kali dari sumber daya fungsi secara lokal. AWS Lambda Untuk mempelajari lebih lanjut tentang perintah ini, lihat[Pengantar pengujian dengan sam local invoke](using-sam-cli-local-invoke.md).
+ `sam local start-api`— Jalankan sumber daya Lambda Anda secara lokal dan uji melalui host server HTTP lokal. Jenis pengujian ini berguna untuk fungsi Lambda yang dipanggil oleh titik akhir API Gateway. Untuk mempelajari lebih lanjut tentang perintah ini, lihat[Pengantar pengujian dengan sam local start-api](using-sam-cli-local-start-api.md).
+ `sam local start-lambda`— Mulai titik akhir lokal untuk fungsi Lambda Anda untuk memanggil fungsi Anda secara lokal AWS Command Line Interface menggunakan () atau.AWS CLI SDKs Untuk mempelajari lebih lanjut tentang perintah ini, lihat[Pengantar pengujian dengan sam local start-lambda](using-sam-cli-local-start-lambda.md).

### Bagaimana cara menggunakan AWS SAMCLI denganTerraform?
<a name="what-is-terraform-support-how"></a>

[TerraformAlur kerja inti](https://developer.hashicorp.com/terraform/intro/core-workflow) terdiri dari tiga tahap: **Tulis**, **Rencana**, dan **Terapkan**. Dengan AWS SAMCLI dukungan untukTerraform, Anda dapat memanfaatkan AWS SAMCLI `sam local` serangkaian perintah sambil terus menggunakan Terraform alur kerja Anda untuk mengelola aplikasi Anda. AWS Secara umum, ini berarti sebagai berikut:
+ **Tulis** — Buat infrastruktur Anda sebagai kode menggunakanTerraform.
+ **Uji dan debug** — Gunakan AWS SAMCLI untuk menguji dan men-debug aplikasi Anda secara lokal.
+ **Rencana** - Pratinjau perubahan sebelum mendaftar.
+ **Terapkan** — Menyediakan infrastruktur Anda.

Untuk contoh menggunakan AWS SAMCLI withTerraform, lihat [Better together: AWS SAMCLI dan HashiCorp Terraform](https://aws.amazon.com/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform/) di *AWS Compute Blog*.

### Langkah selanjutnya
<a name="what-is-terraform-support-next"></a>

Untuk menyelesaikan semua prasyarat dan mengatur, lihat. Terraform [Memulai dengan Terraform dukungan untuk AWS SAMCLI](gs-terraform-support.md)