首页 > 解决方案 > 在无服务器框架中的多个 lambda 函数之间共享一些数据(如 dynamodb 表的文件名)的最佳方式是什么?

问题描述

我想要一个地方存放多个 lambda 函数需要的所有数据。这样我就可以自由地修改/更改/添加数据而没有任何副作用。在使用无服务器框架构建无服务器应用程序时,如何实现此要求?

标签: aws-lambdaserverless-frameworkserverless

解决方案


“最佳”是一个相对术语,但一种方法是使用系统管理器参数存储。您没有指定您的编程语言,但我在 Java 中的一些代码看起来像:

AWSSimpleSystemsManagement ssmClient = AWSSimpleSystemsManagementClientBuilder.standard().build();

GetParameterRequest getParameterRequest = new GetParameterRequest()
                .withName("/path/to/creds/cred1")
                .withWithDecryption(Boolean.TRUE);

String parameterValue = getParameterRequest.getParameter().getValue();

省略了空检查之类的东西。

这有两件事。首先,它创建了一个地方来存储诸如凭据(或表名)之类的通用内容,这样您就不需要将它们存储在其他地方。其次,它允许您创建参数层次结构,例如,您可以在一个地方为您的开发、登台和生产环境提供参数。此外,您可以为每个环境授予参数权限,例如,开发 IAM 角色无法看到生产参数。

我用加密的字符串显示它——如果你不想要,那就不需要了。

其他方式可能是 DynamoDB 或其他持久性存储,如 RDS。


推荐阅读