

Pemberitahuan akhir dukungan: Pada 15 September 2025, AWS akan menghentikan dukungan untuk Amazon Lex V1. Setelah 15 September 2025, Anda tidak lagi dapat mengakses konsol Amazon Lex V1 atau sumber daya Amazon Lex V1. Jika Anda menggunakan Amazon Lex V2, lihat [panduan Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) sebagai gantinya. 

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

# Latihan 3: Tambahkan Fungsi Lambda ()AWS CLI
<a name="gs-cli-update-lambda"></a>

Tambahkan fungsi Lambda yang memvalidasi input pengguna dan memenuhi maksud pengguna ke bot.

Menambahkan ekspresi Lambda adalah proses lima langkah.

1. [Gunakan [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)fungsi Lambda untuk mengaktifkan `OrderFlowers` intent untuk memanggil operasi Lambda Invoke.](https://docs.aws.amazon.com/lambda/latest/dg/lambda-api-permissions-ref.html)

1. Gunakan [GetIntent](API_GetIntent.md) operasi untuk mendapatkan maksud dari Amazon Lex.

1. Perbarui maksud untuk menambahkan fungsi Lambda.

1. Gunakan [PutIntent](API_PutIntent.md) operasi untuk mengirim intent yang diperbarui kembali ke Amazon Lex.

1. Gunakan [GetBot](API_GetBot.md) dan [PutBot](API_PutBot.md) operasi untuk membangun kembali bot apa pun yang menggunakan intent.

Untuk menjalankan perintah dalam latihan ini, Anda perlu mengetahui wilayah di mana perintah akan dijalankan. Untuk daftar wilayah, lihat[Kuota Bangunan Model](gl-limits.md#gl-limits-model-building).

Jika Anda menambahkan fungsi Lambda ke intent sebelum menambahkan `InvokeFunction` izin, Anda mendapatkan pesan galat berikut:

```
            An error occurred (BadRequestException) when calling the 
            PutIntent operation: Lex is unable to access the Lambda 
            function Lambda function ARN in the context of intent 
            intent ARN.  Please check the resource-based policy on 
            the function.
```

Respons dari `GetIntent` operasi berisi bidang yang disebut `checksum` yang mengidentifikasi revisi spesifik dari maksud. Saat Anda menggunakan [PutIntent](API_PutIntent.md) operasi untuk memperbarui maksud, Anda harus memberikan nilai checksum. Jika tidak, Anda mendapatkan pesan galat berikut:

```
            An error occurred (PreconditionFailedException) when calling 
            the PutIntent operation: Intent intent name already exists. 
            If you are trying to update intent name you must specify the 
            checksum.
```

Latihan ini menggunakan fungsi Lambda dari. [Latihan 1: Membuat Bot Amazon Lex Menggunakan Blueprint (Konsol)](gs-bp.md) Untuk instruksi untuk membuat fungsi Lambda, lihat. [Langkah 3: Buat Fungsi Lambda (Konsol)](gs-bp-create-lambda-function.md)

**catatan**  
 AWS CLI Contoh berikut diformat untuk Unix, Linux, dan macOS. Untuk Windows, ubah `"\$LATEST"` ke`$LATEST`.

**Untuk menambahkan fungsi Lambda ke intent**

1. Di AWS CLI, tambahkan `InvokeFunction` izin untuk `OrderFlowers` maksud:

   ```
   aws lambda add-permission \
       --region region \
       --function-name OrderFlowersCodeHook \
       --statement-id LexGettingStarted-OrderFlowersBot \
       --action lambda:InvokeFunction \
       --principal lex.amazonaws.com \
       --source-arn "arn:aws:lex:region:account ID:intent:OrderFlowers:*"
       --source-account account ID
   ```

   Lambda mengirimkan tanggapan berikut:

   ```
   {
       "Statement": "{\"Sid\":\"LexGettingStarted-OrderFlowersBot\",
         \"Resource\":\"arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook\",
         \"Effect\":\"Allow\",
         \"Principal\":{\"Service\":\"lex.amazonaws.com\"},
         \"Action\":[\"lambda:InvokeFunction\"],
         \"Condition\":{\"StringEquals\":
           {\"AWS:SourceAccount\": \"account ID\"},
           {\"AWS:SourceArn\":
             \"arn:aws:lex:region:account ID:intent:OrderFlowers:*\"}}}"
   }
   ```

1. Dapatkan niat dari Amazon Lex. Amazon Lex mengirimkan output ke file bernama**OrderFlowers-V3.json**.

   ```
   aws lex-models get-intent \
       --region region \
       --name OrderFlowers \
       --intent-version "\$LATEST" > OrderFlowers-V3.json
   ```

1. Dalam editor teks, buka file**OrderFlowers-V3.json**.

   1. Temukan dan hapus`createdDate`,`lastUpdatedDate`, dan `version` bidang.

   1. Perbarui `fulfillmentActivity` bidang:

      ```
          "fulfillmentActivity": {
              "type": "CodeHook",
              "codeHook": {
                  "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook",
                  "messageVersion": "1.0"
              }
          }
      ```

   1. Simpan file tersebut.

1. Di AWS CLI, kirim maksud yang diperbarui ke Amazon Lex:

   ```
   aws lex-models put-intent \
       --region region \
       --name OrderFlowers \
       --cli-input-json file://OrderFlowers-V3.json
   ```

Sekarang setelah Anda memperbarui intent, bangun kembali bot. 

**Untuk membangun kembali bot `OrderFlowersBot`**

1. Di AWS CLI, dapatkan definisi `OrderFlowersBot` bot dan simpan ke file:

   ```
   aws lex-models get-bot \
       --region region \
       --name OrderFlowersBot \
       --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json
   ```

1. Dalam editor teks, buka**OrderFlowersBot-V3.json**. Hapus`createdDate`,`lastUpdatedDate`,`status`, dan `version` bidang.

1. Di editor teks, tambahkan baris berikut ke definisi bot:

   ```
   "processBehavior": "BUILD",
   ```

1. Di AWS CLI, buat revisi baru bot:

   ```
   aws lex-models put-bot \
       --region region \
       --name OrderFlowersBot \
       --cli-input-json file://OrderFlowersBot-V3.json
   ```

   Tanggapan dari server adalah:

## Langkah Selanjutnya
<a name="gs-cli-next-exercise-4"></a>

[Latihan 4: Publikasikan Versi (AWS CLI)](gs-cli-publish.md)