Amazon DynamoDB 事件驱动架构:细粒度时间调度方案

来源: InfoQ - 后端

原文

亚马逊云科技宣布"将LocalStack"集成到Visual Studio Code的亚马逊云科技 Toolkit"中,解决了无服务器开发中一项长期存在的挑战,即开发者需要使用多个工具和复杂的配置来在本地测试事件驱动应用程序。

该集成在AWS Toolkit for VS Code版本3.74.0中可用,允许开发者直接从他们的IDE连接到LocalStack端点。这就消除了之前测试涉及多个亚马逊云科技服务(如Amazon SQS、EventBridge和DynamoDB)的无服务器应用程序时,手动配置端点和在不同开发工具之间切换上下文的需求。

虽然AWS SAM CLI为单个Lambda函数提供了高效的本地测试,但涉及多个亚马逊云科技服务的事件驱动架构的开发者会面临显著的摩擦。尽管LocalStack提供了亚马逊云科技服务的本地模拟,但开发者以前必须将其作为独立工具来管理,这需要复杂的配置和频繁在多个界面之间切换上下文,结果拖累了开发周期。

新的集成将LocalStack管理直接嵌入到VS Code界面中,从而转变了这种体验。开发者现在可以通过引导式向导安装LocalStack,将无服务器应用程序部署到模拟环境中,并在不离开IDE的情况下本地测试函数。

AWS SAM的标准输出以及LocalStack

LocalStack集成是对亚马逊云科技最近推出的控制台到IDE集成和远程调试功能的补充,它们共同组成了该公司所描述的分层测试方法。在早期开发阶段,开发者可以使用LocalStack进行快速迭代,而无需处理IAM权限、VPC配置或服务边界复杂性。当需要验证实际亚马逊云科技服务行为时,他们可以无缝过渡到使用远程调试功能的,基于云的测试。

这种方法允许开发者在初始开发期间专注于业务逻辑,同时保持在需要时测试真实亚马逊云科技环境的灵活性。集成支持使用熟悉的AWS SAM CLI命令进行部署,开发者可以运行sam deploy --guided --profile localstack将他们的堆栈部署到本地环境。

设置过程已大大简化。通过VS Code中的应用程序构建器向导,开发者可以一键安装LocalStack,自动安装LocalStack扩展并配置必要的连接。配置完成后,LocalStack会作为其他亚马逊云科技配置旁边的可选配置文件出现,使在本地和云部署之间可以无缝切换。

该功能在所有亚马逊云科技商业区域中均可用,除了亚马逊云科技GovCloud(美国)区域。使用集成功能不会从亚马逊云科技产生额外费用。开发者可以从免费的LocalStack版本开始,用于核心亚马逊云科技服务模拟,还有额外的层级可用于扩展服务覆盖和高级功能。

这种集成是亚马逊云科技使VS Code成为无服务器应用程序首选开发环境的更广泛战略的一部分。结合之前在2025年初推出的控制台到IDE集成和远程调试功能等增强功能,这些工具创造了一个更连贯的开发体验,满足了应用程序生命周期中不同的测试需求。

此举也反映了本地开发环境在无服务器工作流中日益增长的重要性,其中快速迭代和调试能力对开发者生产力至关重要。通过减少管理独立模拟工具的操作开销,亚马逊云科技正在解决历史上减缓无服务器开发周期的关键摩擦点之一。

LocalStack有几个替代品,每个都针对不同的测试和开发需求。Moto"是最流行的之一,提供了一个Python库,在SDK层面模拟了许多亚马逊云科技服务。Moto不是模拟完整的亚马逊云科技环境,而是拦截对亚马逊云科技 SDK的请求并返回模拟响应,使其成为轻量级且适用于单元和集成测试的工具。然而,由于它不重新创建服务端点或网络,因此不太适合需要现实亚马逊云科技行为的端到端或系统测试。

另一个强有力的选择是AWSSAM CLI",它允许开发者在本地构建和测试无服务器应用程序。它特别适用于Lambda和API Gateway工作流,为团队提供了一种模拟部署和使用模拟事件触发函数的方法。虽然它仅限于无服务器堆栈,并且不支持许多亚马逊云科技服务,但它提供了Lambda执行的近似模拟。

对于更细粒度的控制,Testcontainers"提供了灵活性。Testcontainers允许开发者在短暂的容器中启动Docker化的单个服务版本,如DynamoDB Local或类似S3的存储,以进行可重复的集成测试。这些替代品一起说明了,虽然LocalStack提供了最全面的“亚马逊云科技 in a box”方法,但有针对性、通常更轻量级的解决方案,可能更适合项目的规模。

原文链接:

亚马逊云科技 Integrates LocalStack with VS-Code Toolkit to Streamline Serverless Development"