

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

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