直接 Lambda 解析器 (VTL) - AWS AppSync

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

直接 Lambda 解析器 (VTL)

注意

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

使用直接 Lambda 解析器,您可以在使用資料來源時規避 VTL 對應範本的使用。AWS LambdaAWS AppSync 可以為 Lambda 函數提供預設承載,以及 Lambda 函數對 GraphQL 類型回應的預設轉譯。您可以選擇提供請求模板,響應模板或兩者都不提供,並且AWS AppSync 將相應地處理它。

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

設定直接 Lambda 解析器

以下各節將說明如何連接 Lambda 資料來源,以及如何將 Lambda 解析器新增至欄位。

新增 Lambda 資料來源

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

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

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

    2. 側邊欄中,選擇資料來源

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

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

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

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

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

    5. 建立新的 IAM 角色 (建議使用) 或選擇具有 lambda:invokeFunction IAM 權限的現有角色。現有角色需要信任原則,如附加資料來源一節所述。

      以下是具有對資源執行操作所需許可的 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的應用程式介面。

    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. API 儀表板中,選擇您的 GraphQL API。

    2. 側邊欄中,選擇結構描述

  2. 在 [解析器] 視窗中,選擇欄位或作業,然後選取 [附加] 按鈕。

  3. 在「建立新解析器」頁面中,從下拉式清單中選擇 Lambda 函數。

  4. 若要利用直接 Lambda 解析器,請在 [設定對應範本] 區段中確認請求和回應對應範本已停用。

  5. 選擇「儲存解析器」按鈕。

CLI
  • 透過執行指令建立解析程式。create-resolver

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

    1. api-id的應用程式介面。

    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:

  • 透過停用對應範本,即表示您接受 Direct Lambda 解析器參考中指定的預設資料轉換。AWS AppSync

  • 藉由停用請求對應範本,您的 Lambda 資料來源將收到由整個 Context 物件組成的承載。

  • 透過停用回應對應範本,系統會根據請求對應範本的版本或請求對應範本是否也停用轉譯 Lambda 叫用的結果。