

Hinweis zum Ende des Supports: Am 15. September 2025 AWS wird der Support für Amazon Lex V1 eingestellt. Nach dem 15. September 2025 können Sie nicht mehr auf die Amazon-Lex-V1-Konsole oder die Amazon-Lex-V1-Ressourcen zugreifen. Wenn Sie Amazon Lex V2 verwenden, lesen Sie stattdessen das [Amazon Lex V2-Handbuch](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Übung 3: Hinzufügen einer Lambda-Funktion ()AWS CLI
<a name="gs-cli-update-lambda"></a>

Fügen Sie eine Lambda-Funktion hinzu, die Benutzereingaben validiert und die Absicht des Benutzers gegenüber dem Bot erfüllt.

Das Hinzufügen eines Lambda-Ausdrucks erfolgt in fünf Schritten.

1. Verwenden Sie die [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)Lambda-Funktion, um die `OrderFlowers` Absicht zu aktivieren, den Lambda Invoke-Vorgang [aufzurufen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-api-permissions-ref.html).

1. Verwenden Sie den [GetIntent](API_GetIntent.md) Vorgang, um die Absicht von Amazon Lex zu erhalten.

1. Aktualisieren Sie die Absicht, die Lambda-Funktion hinzuzufügen.

1. Verwenden Sie den [PutIntent](API_PutIntent.md) Vorgang, um die aktualisierte Absicht zurück an Amazon Lex zu senden.

1. Verwenden Sie die Operationen [GetBot](API_GetBot.md) und [PutBot](API_PutBot.md), um einen Bot wiederherzustellen, der die Absicht verwendet.

Um die Befehle in dieser Übung auszuführen, müssen Sie wissen, in welcher Region die Befehle ausgeführt werden. Eine Liste der Regionen finden Sie unter [Kontingente des Modellbaus](gl-limits.md#gl-limits-model-building).

Wenn Sie einer Absicht eine Lambda-Funktion hinzufügen, bevor Sie die `InvokeFunction` Berechtigung hinzufügen, erhalten Sie die folgende Fehlermeldung:

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

Die Antwort der Operation `GetIntent` enthält ein Feld namens `checksum`, das die spezifische Version der Absicht angibt. Wenn Sie die Operation [PutIntent](API_PutIntent.md) zum Aktualisieren einer Absicht verwenden, müssen Sie den Prüfsummenwert angeben. Wenn Sie dies nicht tun, wird die folgende Fehlermeldung angezeigt:

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

In dieser Übung wird die Lambda-Funktion von [Übung 1: Erstellen eines Amazon Lex Lex-Bot mithilfe eines Blueprints (Konsole)](gs-bp.md) verwendet. Anweisungen zum Erstellen der Lambda-Funktion finden Sie unter[Schritt 3: Lambda-Funktion erstellen (Konsole)](gs-bp-create-lambda-function.md).

**Anmerkung**  
Das folgende AWS CLI Beispiel ist für Unix, Linux und macOS formatiert. Ändern Sie unter Windows `"\$LATEST"` in `$LATEST`.

**Um einer Absicht eine Lambda-Funktion hinzuzufügen**

1. Fügen Sie im AWS CLI die `InvokeFunction` Berechtigung für die `OrderFlowers` Absicht hinzu:

   ```
   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 sendet die folgende Antwort:

   ```
   {
       "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. Holen Sie sich die Absicht von Amazon Lex. Amazon Lex sendet die Ausgabe an eine Datei mit dem Namen**OrderFlowers-V3.json**.

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

1. Öffnen Sie **OrderFlowers-V3.json** in einem Text-Editor.

   1. Suchen und löschen Sie `createdDate`, `lastUpdatedDate` und `version`.

   1. Aktualisieren Sie das Feld `fulfillmentActivity`:

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

   1. Speichern Sie die Datei.

1. Senden Sie in der AWS CLI die aktualisierte Absicht an Amazon Lex:

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

Erstellen Sie den Bot neu, nachdem die Absicht aktualisiert wurde. 

**So erstellen Sie den Bot `OrderFlowersBot`**

1. Rufen Sie im die AWS CLI Definition des `OrderFlowersBot` Bots ab und speichern Sie sie in einer Datei:

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

1. Öffnen Sie **OrderFlowersBot-V3.json** in einem Texteditor. Entfernen Sie die Felder `createdDate`, `lastUpdatedDate`, `status` und `version`.

1. Fügen Sie im Texteditor die folgende Zeile in die Bot-Definition ein:

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

1. Erstellen Sie im AWS CLI eine neue Version des Bots:

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

   Die Antwort des Servers:

## Nächster Schritt
<a name="gs-cli-next-exercise-4"></a>

[Übung 4: Veröffentlichen einer Version (AWS CLI)](gs-cli-publish.md)