Deaktivieren von VTL Mapping-Vorlagen mit direkten Lambda-Resolvern () VTL - AWS AppSync

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.

Deaktivieren von VTL Mapping-Vorlagen mit direkten Lambda-Resolvern () VTL

Anmerkung

Wir unterstützen jetzt hauptsächlich die APPSYNC _JS-Laufzeit und ihre Dokumentation. Bitte erwägen Sie, die APPSYNC _JS-Laufzeit und ihre Anleitungen hier zu verwenden.

Mit direkten Lambda-Resolvern können Sie die Verwendung von VTL Mapping-Vorlagen bei der Verwendung von Datenquellen umgehen. AWS Lambda AWS AppSync kann eine Standardnutzlast für Ihre Lambda-Funktion sowie eine Standardübersetzung aus der Antwort einer Lambda-Funktion auf einen GraphQL-Typ bereitstellen. Sie können wählen, ob Sie eine Anforderungsvorlage, eine Antwortvorlage oder beides bereitstellen möchten, und AWS AppSync werden diese entsprechend behandeln.

Weitere Informationen über die standardmäßige Anforderungsnutzlast und die damit AWS AppSync verbundene Antwortübersetzung finden Sie in der Direct Lambda Resolver-Referenz. Weitere Informationen zum Einrichten einer AWS Lambda Datenquelle und zum Einrichten einer IAM Vertrauensrichtlinie finden Sie unter Eine Datenquelle anhängen.

Direkte Lambda-Resolver konfigurieren

In den folgenden Abschnitten erfahren Sie, wie Sie Lambda-Datenquellen anhängen und Lambda-Resolver zu Ihren Feldern hinzufügen.

Fügen Sie eine Lambda-Datenquelle hinzu

Bevor Sie direkte Lambda-Resolver aktivieren können, müssen Sie eine Lambda-Datenquelle hinzufügen.

Console
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Konsole. AppSync

    1. Wählen Sie im APIsDashboard Ihr GraphQL API aus.

    2. Wählen Sie in der Seitenleiste Datenquellen aus.

  2. Klicken Sie auf Create data source.

    1. Geben Sie unter Datenquellenname einen Namen für Ihre Datenquelle ein, z. B. myFunction

    2. Wählen Sie als Datenquellentyp die Option AWS Lambda Funktion aus.

    3. Wählen Sie für Region die entsprechende Region aus.

    4. Wählen Sie für Function ARN die Lambda-Funktion aus der Drop-down-Liste aus. Sie können nach dem Funktionsnamen suchen oder den Namen ARN der Funktion, die Sie verwenden möchten, manuell eingeben.

    5. Erstellen Sie eine neue IAM Rolle (empfohlen) oder wählen Sie eine vorhandene Rolle aus, die über die lambda:invokeFunction IAM entsprechende Berechtigung verfügt. Für bestehende Rollen ist eine Vertrauensrichtlinie erforderlich, wie im Abschnitt Anhängen einer Datenquelle erläutert.

      Im Folgenden finden Sie ein Beispiel IAM für eine Richtlinie, die über die erforderlichen Berechtigungen für die Ausführung von Vorgängen an der Ressource verfügt:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:invokeFunction" ], "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:myFunction", "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" ] } ] }
  3. Wählen Sie die Schaltfläche Erstellen aus.

CLI
  1. Erstellen Sie ein Datenquellenobjekt, indem create-data-sourceSie den Befehl ausführen.

    Für diesen speziellen Befehl müssen Sie 4 Parameter eingeben:

    1. Der api-id von dirAPI.

    2. Die name Ihrer Datenquelle. Im Konsolenbeispiel ist dies der Name der Datenquelle.

    3. Der type Wert der Datenquelle. Im Konsolenbeispiel ist dies eine AWS Lambda Funktion.

    4. Dielambda-config, was die Funktion ARN im Konsolenbeispiel ist.

    Anmerkung

    Es gibt andere Parameter wie diesenRegion, die konfiguriert werden müssen, aber normalerweise werden standardmäßig Ihre CLI Konfigurationswerte verwendet.

    Ein Beispielbefehl könnte wie folgt aussehen:

    aws appsync create-data-source --api-id abcdefghijklmnopqrstuvwxyz --name myFunction --type AWS_LAMBDA --lambda-config lambdaFunctionArn=arn:aws:lambda:us-west-2:102847592837:function:appsync-lambda-example

    Eine Ausgabe wird in der zurückgegebenCLI. Ein Beispiel:

    { "dataSource": { "dataSourceArn": "arn:aws:appsync:us-west-2:102847592837:apis/abcdefghijklmnopqrstuvwxyz/datasources/myFunction", "type": "AWS_LAMBDA", "name": "myFunction", "lambdaConfig": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:102847592837:function:appsync-lambda-example" } } }
  2. Um die Attribute einer Datenquelle zu ändern, führen Sie den update-data-sourceBefehl aus.

    Mit Ausnahme des api-id Parameters werden die im create-data-source Befehl verwendeten Parameter durch die neuen Werte aus dem update-data-source Befehl überschrieben.

Direkte Lambda-Resolver aktivieren

Nachdem Sie eine Lambda-Datenquelle erstellt und die entsprechende IAM Rolle eingerichtet haben, um die Funktion aufrufen AWS AppSync zu können, können Sie sie mit einer Resolver- oder Pipelinefunktion verknüpfen.

Console
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Konsole. AppSync

    1. Wählen Sie im APIsDashboard Ihr GraphQL API aus.

    2. Wählen Sie in der Seitenleiste Schema aus.

  2. Wählen Sie im Resolver-Fenster ein Feld oder eine Operation aus und klicken Sie dann auf die Schaltfläche „Anhängen“.

  3. Wählen Sie auf der Seite Neuen Resolver erstellen die Lambda-Funktion aus der Dropdownliste aus.

  4. Um direkte Lambda-Resolver zu nutzen, stellen Sie sicher, dass Vorlagen für die Anfrage- und Antwortzuordnung im Abschnitt Zuordnungsvorlagen konfigurieren deaktiviert sind.

  5. Wählen Sie die Schaltfläche „Resolver speichern“.

CLI
  • Erstellen Sie einen Resolver, indem Sie den create-resolverBefehl ausführen.

    Für diesen speziellen Befehl müssen Sie 6 Parameter eingeben:

    1. Der api-id von dirAPI.

    2. Der type-name Typ in Ihrem Schema.

    3. Der field-name des Felds in Ihrem Schema.

    4. Der data-source-name oder der Name Ihrer Lambda-Funktion.

    5. Derrequest-mapping-template, welcher der Hauptteil der Anfrage ist. Im Konsolenbeispiel wurde dies deaktiviert:

      " "
    6. Dasresponse-mapping-template, was der Hauptteil der Antwort ist. Im Konsolenbeispiel wurde dies ebenfalls deaktiviert:

      " "

    Ein Beispielbefehl könnte so aussehen:

    aws appsync create-resolver --api-id abcdefghijklmnopqrstuvwxyz --type-name Subscription --field-name onCreateTodo --data-source-name LambdaTest --request-mapping-template " " --response-mapping-template " "

    Eine Ausgabe wird in der zurückgegebenCLI. Ein Beispiel:

    { "resolver": { "resolverArn": "arn:aws:appsync:us-west-2:102847592837:apis/abcdefghijklmnopqrstuvwxyz/types/Subscription/resolvers/onCreateTodo", "typeName": "Subscription", "kind": "UNIT", "fieldName": "onCreateTodo", "dataSourceName": "LambdaTest" } }

Wenn Sie Ihre Mapping-Vorlagen deaktivieren, treten mehrere zusätzliche Verhaltensweisen auf in AWS AppSync: