使用直接 Lambda 解析程式停用VTL映射範本 (VTL) - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用直接 Lambda 解析程式停用VTL映射範本 (VTL)

注意

我們現在主要支援 APPSYNC_JS 執行期及其文件。請考慮在此處使用 APPSYNC_JS 執行期及其指南

透過直接 Lambda 解析程式,您可以在使用 AWS Lambda 資料來源時避免使用VTL映射範本。 AWS AppSync 可以為 Lambda 函數提供預設承載,以及從 Lambda 函數對 GraphQL 類型的回應進行預設轉譯。您可以選擇提供請求範本、回應範本或兩者皆不提供, AWS AppSync 會相應處理。

若要進一步了解 AWS AppSync 提供的預設請求承載和回應轉譯,請參閱 Direct Lambda 解析器參考 。如需設定 AWS Lambda 資料來源和設定IAM信任政策的詳細資訊,請參閱連接資料來源

設定直接 Lambda 解析程式

下列各節將示範如何連接 Lambda 資料來源,以及將 Lambda 解析程式新增至 欄位。

新增 Lambda 資料來源

您必須先新增 Lambda 資料來源,才能啟用直接 Lambda 解析程式。

Console
  1. 登入 AWS Management Console 並開啟AppSync主控台

    1. APIs儀表板 中,選擇您的 GraphQL API。

    2. Sidebar 中,選擇資料來源

  2. 選擇 Create data source (建立資料來源)

    1. 針對資料來源名稱 ,輸入資料來源的名稱,例如 myFunction

    2. 針對資料來源類型 ,選擇AWS Lambda 函數

    3. 針對區域 ,選擇適當的區域。

    4. 對於函數 ARN,從下拉式清單中選擇 Lambda 函數。您可以搜尋函數名稱,或手動輸入您要使用的函數ARN的 。

    5. 建立新的IAM角色 (建議) 或選擇具有 lambda:invokeFunctionIAM許可的現有角色。現有角色需要信任政策,如連接資料來源一節所述。

      以下是具有對資源執行操作所需許可的範例IAM政策:

      { "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. 選擇建立按鈕。

CLI
  1. 執行 create-data-source命令來建立資料來源物件。

    您需要為此特定命令輸入 4 個參數:

    1. api-id的 API。

    2. 資料來源name的 。在主控台範例中,這是資料來源名稱

    3. 資料來源type的 。在主控台範例中,這是AWS Lambda 函數

    4. lambda-config,這是主控台範例中的函數ARN

    注意

    還有其他參數,例如必須設定 Region ,但通常會預設為您的CLI組態值。

    範例命令可能如下所示:

    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

    輸出會在 中傳回CLI。範例如下:

    { "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. 若要修改資料來源的屬性,請執行 update-data-source命令。

    除了 api-id 參數之外, create-data-source命令中使用的參數會被來自 update-data-source 命令的新值覆寫。

啟用直接 Lambda 解析程式

建立 Lambda 資料來源並設定適當的IAM角色 AWS AppSync 以允許調用函數後,您可以將其連結至解析器或管道函數。

Console
  1. 登入 AWS Management Console 並開啟AppSync主控台

    1. APIs儀表板 中,選擇您的 GraphQL API。

    2. Sidebar 中,選擇結構描述

  2. 解析程式視窗中,選擇欄位或操作,然後選擇連接按鈕。

  3. 建立新的解析程式頁面中,從下拉式清單中選擇 Lambda 函數。

  4. 為了利用直接 Lambda 解析程式,請確認在設定映射範本區段中已停用請求和回應映射範本

  5. 選擇儲存解析程式按鈕。

CLI
  • 執行 create-resolver命令來建立解析程式。

    您需要為此特定命令輸入 6 個參數:

    1. api-id的 API。

    2. 您結構描述中 type-name類型的 。

    3. 您結構描述中 欄位field-name的 。

    4. data-source-name或 Lambda 函數的名稱。

    5. request-mapping-template,這是請求的內文。在主控台範例中,已停用:

      " "
    6. response-mapping-template,這是回應的內文。在主控台範例中,也停用了此功能:

      " "

    範例命令可能如下所示:

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

    輸出會在 中傳回CLI。範例如下:

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

當您停用映射範本時,在 中會發生一些其他行為 AWS AppSync:

  • 透過停用映射範本,您將向 發出訊號 AWS AppSync ,表示您接受 Direct Lambda 解析器參考 中指定的預設資料轉譯。

  • 透過停用請求映射範本,您的 Lambda 資料來源將收到包含整個內容物件的承載。

  • 透過停用回應映射範本,您的 Lambda 調用結果會根據請求映射範本的版本或請求映射範本是否也停用而翻譯。