通过 Amazon AppSync 事件数据源集成增强实时应用程序

作者: Micah Walter |

今天,我们宣布,Amazon AppSync Events 现在支持频道命名空间的数据源集成,使开发者能够创建更复杂的实时应用程序。借助这项新功能,您可以将 Amazon Lambda 函数、Amazon DynamoDB 表、Amazon Aurora 数据库和其他数据源与频道命名空间处理程序关联起来。借助 Amazon AppSync Events,您可以构建具有数据验证、事件转换和事件永久存储等功能的丰富的实时应用程序。

借助这些新功能,开发人员可以通过使用 Lambda 函数转换和筛选事件来创建复杂的事件处理工作流程,或者使用新的 AppSync_JS 批处理实用程序将批量事件保存到 DynamoDB。该集成支持复杂的交互流程,同时减少了开发时间和运营开销。例如,您现在可以自动将事件保存到数据库,而无需编写复杂的集成代码。

首先看一下数据源集成

让我们来看看如何使用亚马逊云科技管理控制台设置数据源集成。首先,我将在控制台中导航到 Amazon AppSync,然后选择我的事件 API(或创建一个新的 API)。

亚马逊云科技控制台的屏幕截图

将事件数据直接保存到 DynamoDB

有多种数据源集成可供选择。在第一个示例中,我将创建一个 DynamoDB 表作为数据源。我首先需要一个 DynamoDB 表,所以我前往控制台中的 DynamoDB 并创建一个名为 event-messages 的新表。对于这个例子,我需要做的就是使用名为 id 的分区键创建表。在这里,我可以单击"创建表"并接受默认表格配置,然后再返回控制台中的 AppSync。

适用于 DynamoDB 的亚马逊云科技控制台屏幕截图

返回 AppSync 控制台,我返回到之前设置的事件 API,从选项卡式导航面板中选择"数据源",然后单击"创建数据源"按钮。

亚马逊云科技控制台的屏幕截图

为我的数据源命名后,我从"数据源"下拉菜单中选择 Amazon DynamoDB。这将显示 DynamoDB 的配置选项。

亚马逊云科技控制台的屏幕截图

配置好数据源后,我就可以实现处理器逻辑了。以下是将事件保存到 DynamoDB 的发布处理程序示例:

import * as ddb from '@aws-appsync/utils/dynamodb'
import { util } from '@aws-appsync/utils'

const TABLE = 'events-messages'

export const onPublish = {
  request(ctx) {
    const channel = ctx.info.channel.path
    const timestamp = util.time.nowISO8601()
    return ddb.batchPut({
      tables: {
        [TABLE]: ctx.events.map(({id, payload}) => ({
          channel, id, timestamp, ...payload,
        })),
      },
    })
  },
  response(ctx) {
    return ctx.result.data[TABLE].map(({ id, ...payload }) => ({ id, payload }))
  },
}

要添加处理程序代码,我进入命名空间的选项卡式导航,在那里我找到了已经为我创建了一个新的默认命名空间。如果我点击打开默认命名空间,我会在配置详细信息下方找到允许我添加事件处理程序的按钮。

亚马逊云科技控制台的屏幕截图

单击"创建事件处理程序"将带我进入一个新对话框,在该对话框中我选择"以数据源为配置的代码",然后选择 DynamoDB 数据源作为我的发布配置。

亚马逊云科技控制台的屏幕截图

保存处理程序后,我可以使用控制台中的内置测试工具测试集成。这里的默认值应该可以正常工作,正如你在下面看到的,我已经成功地向我的 DynamoDB 表写入了两个事件。

亚马逊云科技控制台的屏幕截图

以下是我在 DynamoDB 中捕获的所有消息!

亚马逊云科技控制台的屏幕截图

错误处理和安全

新的数据源集成包括全面的错误处理功能。对于同步操作,您可以返回将记录到 Amazon CloudWatch 的特定错误消息,同时通过不向客户暴露敏感的后端信息来维护安全。对于授权方案,您可以使用 Lambda 函数实现自定义验证逻辑来控制对特定通道或消息类型的访问。

现已上市

Amazon AppSync Events 数据源集成现已在所有提供 Amazon AppSync 的亚马逊云科技区域中可用。您可以通过 Amazon AppSync 控制台、亚马逊云科技命令行接口 (CLI) 或亚马逊云科技开发工具包开始使用这些新功能。使用数据源集成无需额外费用——您只需为使用的基础资源(例如 Lambda 调用或 DynamoDB 操作)和现有 AppSync 事件使用量付费。

要了解有关 Amazon AppSync 事件和数据源集成的更多信息,请访问 Amazon AppSync 事件文档,立即开始构建更强大的实时应用程序。

— Micah

新闻博客怎么样?参加这个 1 分钟的调查!

(本调查由外部公司主办。亚马逊云科技按照亚马逊云科技隐私声明中的描述处理您的信息。亚马逊云科技将拥有通过本次调查收集的数据,不会与调查受访者共享收集的信息。)



米卡·沃尔特

Micah Walter

Micah Walter 是一名高级解决方案架构师,为纽约市地区及其他地区的企业客户提供支持。他为高管、工程师和架构师在云之旅的每一步提供建议,重点关注可持续性和实用设计。在业余时间,Micah 喜欢户外活动、摄影和在家里追逐孩子。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。