如何使用放大框架/cli配置dynamodb-to-lambda触发器

问题描述

放大坞 here 表示我们可以通过运行 **amplify add function** 并选择“Lambda 触发器”选项来将 lambda 函数配置为 dynamodb 触发器,但是当我运行时"amplify add api" 我没有得到 lambda 触发器选项,我只得到“无服务器函数”和“lambda 层”选项。

请帮助我解决此问题以访问该功能

文档快照 - 显示 4 个选项

enter image description here

我的 CLI 快照 - 仅显示 2 个选项

enter image description here

解决方法

只需使用 amplify CLI 版本 4.50.2 执行这些步骤。

要创建由对 DynamoDB 表的更改触发的 lambda 函数,您可以使用以下命令行操作,输入以下命令后,这些操作将在 CLI 内部进行演练:

amplify add function

选择您要添加的功能:

  • ❯ Lambda 函数(无服务器函数)

提供 AWS Lambda 函数名称:

选择您要使用的运行时:

  • > NodeJS # 重要提示:现在必须是 NodeJS,您可以稍后通过手动编辑函数目录中的 ...-cloudformation-template.json 文件进行更改

选择要使用的函数模板

  • > Lambda 触发器

您想将什么事件源与 lambda 触发器关联

  • > Amazon DynamoDB 流

选择 DynamoDB 事件源选项

  • >在当前 Amplify 项目中使用 API 类别 graphql @model 后端 DynamoDB 表

选择graphql @model(s)

是否要触发高级设置

  • Y # 重要提示:如果您使用的是基于由 graphql 架构定义的表的 dynamodb 事件源,您将需要授予此函数对包含的 api 资源的读取访问权限定义驱动事件的表的 graphql 模式

您想从您的 Lambda 函数访问此项目中的其他资源吗?

  • y # 如上所示,选择包含数据模型的 api,并确保该函数至少具有读取权限。

在此之后,其他选项(层、呼叫调度)由您决定。

通过上述 CLI 选项创建函数后,您可以更改函数目录中 -cloudformation-template.json 文件中的 "Runtime" 字段,例如,如果您想要一个 python lambda 函数,请将运行时更改为“python3 .8"。您还需要在具有 index.py 函数的函数目录中创建一个名为 handler(event,context) 的文件。请参见下面的示例:

import json

def handler(event,context):
    print("Triggered via DynamoDB")
    print(event)
    return json.dumps({'status_code': 200,"message": "Received from DynamoDB"})

进行这些编辑后,您可以运行 amplify push,如果您在管理控制台中在线打开您的 fxn,它应该会显示一个附加的 dynamoDB 流。

,

在 CLI 代码库中似乎不再可用 - 请参阅已删除 Supported-service.json 并替换为 supported-services.ts

https://github.com/aws-amplify/amplify-cli/commit/607ae21287941805f44ea8a9b78dd12d16d71f85#diff-a0fd8c5607fd81977cb4745b9af3af2c6649ded748991bf9968a7d782b000c6b

https://github.com/aws-amplify/amplify-cli/commits/4e974007d95c894ab4108a2dff8d5996e7e3ce25/packages/amplify-category-function/src/provider-utils/supported-services.ts

,

选择nodejs,即可查看lambda触发器