直接 Lambda 解析器 (VTL) - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

直接 Lambda 解析器 (VTL)

使用直接 Lambda 解析器,您可以在使用Amazon Lambda数据源时规避使用 VTL 映射模板。Amazon AppSync 可以为您的 Lambda 函数提供默认负载,以及从 Lambda 函数对 GraphQL 类型的响应的默认转换。您可以选择提供请求模板或响应模板,或者两者都不提供,Amazon AppSync 并将相应地进行处理。

要详细了解所Amazon AppSync 提供的默认请求负载和响应转换,请参阅 D irect Lambda 解析器参考资料。有关设置Amazon Lambda数据源和设置 IAM 信任策略的更多信息,请参阅附加数据源

配置直接 Lambda 解析器

以下部分将向您展示如何附加 Lambda 数据源以及如何将 Lambda 解析器添加到您的字段。

添加 Lambda 数据源

在激活直接 Lambda 解析器之前,您必须添加 Lambda 数据源。

Console
  1. 登录 Amazon Web Services Management Console并打开 AppSync 控制台

    1. API 控制面板中,选择你的 GraphQL API。

    2. 边栏中,选择 “数据源”。

  2. 选择 Create data source

    1. 数据源名称中,输入数据源的名称,例如myFunction

    2. 对于数据源类型,选择Amazon 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. 选择 “创建” 按钮。

API
  1. 通过调用 CreateDataSourceAPI 创建数据源对象。

  2. 要更新数据源的属性,请调用 UpdateDataSourceAPI。

CLI
  1. 通过运行create-data-source命令创建数据源对象。

    你需要为这个特定命令输入 4 个参数:

    1. api-id的 API 的。

    2. 您的数据源的。name在控制台示例中,这是数据源名称

    3. 数据type源的。在控制台示例中,这是Amazon 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 数据源并设置了允许Amazon AppSync 调用该函数的相应 IAM 角色后,您可以将其链接到解析器或管道函数。

Console
  1. 登录 Amazon Web Services Management Console并打开 AppSync 控制台

    1. API 控制面板中,选择你的 GraphQL API。

    2. 在边中,选择架构

  2. 在 “解析器” 窗口中,选择字段或操作,然后选择 “附加” 按钮。

  3. 创建新的解析器页面中,从下拉列表中选择 Lambda 函数。

  4. 要利用直接 Lambda 解析器,请在 “配置映射模板” 部分中确认请求和响应映射模板已禁用。

  5. 选择 “保存解析器” 按钮。

API
  • 通过调用 CreateResolverAPI 创建解析器对象。

    要使用直接 Lambda 解析器,需要设置几个重要的参数选项:

    1. dataSourceName将指向您的 Lambda 函数。

    2. requestMappingTemplate应该为空值 (" "),因为我们正在禁用此功能。

    3. responseMappingTemplate应该为空值 (" "),因为我们正在禁用此功能。

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" } }

禁用映射模板时,还会出现以下几种其他行为Amazon AppSync: