我使用Api Gateway,AWS Lambda和AWS RDS构建API。 我的Lambda功能代码是Java。 当前,我正在成功使用AWS Systems Manager参数存储连接到我的数据库。 因此,我创建了一个名为“ connection”的参数,该参数的类型为String并保存了完整的连接URL。 在Lambda函数中,我可以通过以下方式成功访问此参数:
GetParameterRequest parameterRequest = new GetParameterRequest().withName("connection").withWithDecryption(false);
AWSSimpleSystemsManagement ssmclient = AWSSimpleSystemsManagementClientBuilder.defaultClient();
GetParameterResult parameterResult = ssmclient.getParameter(parameterRequest);
String url = parameterResult.getParameter().getValue();
现在我的问题是: 在其他lambda函数中,我想发送邮件。为此,我要保存 SMTP服务器和用户名和密码和默认发件人邮件,等等上。
是否可以将该信息另存为StringList类型(如键/值对(映射))? 这样的事情是可能的:
//Get StringList
GetParameterRequest parameterRequest = new GetParameterRequest().withName("mailInfo").withWithDecryption(false);
AWSSimpleSystemsManagement ssmclient = AWSSimpleSystemsManagementClientBuilder.defaultClient();
GetParameterResult parameterResult = ssmclient.getParameter(parameterRequest);
//Get values from the list
String smtp_server = parameterResult.getParameter("smtp").getValue();
String to_mail = parameterResult.getParameter("defaultToMail").getValue();
...
谢谢。
答案 0 :(得分:1)
从根本上说,SSM参数始终是字符串(docs)。无论是 字符串,还是加密的字符串,或者是“列表”,它实际上是一个您同意使用逗号作为项目分隔符的字符串。
幸运的是,字符串非常灵活,其窍门是将数据与字符串表示形式进行封送处理。
最明显的可能是使用SSM StringList
类型,并要求对字符串列表进行排序,例如mailInfo = smpt,username,password,defaultToMail
。此时,您可以进行自己的编组:
GetParameterRequest parameterRequest = new GetParameterRequest().withName("mailInfo").withWithDecryption(false);
AWSSimpleSystemsManagement ssmclient = AWSSimpleSystemsManagementClientBuilder.defaultClient();
GetParameterResult parameterResult = ssmclient.getParameter(parameterRequest);
String mailInfo = parameterResult.getParameter().getValue();
String[] params = mailInfo.split(",");
String stmp = params[0];
String username = params[1];
String password = params[2];
String defaultToMail = params[3];
与其他选项(例如序列化一个类并保存结果)相比,将StringList编组可能是更可取的,因为它在界面中是用户可编辑的。但是,您可能希望扩展格式,使其在排序方面更为明确,例如smtp=smtp_value,username=username_value...
,然后将每个列表项除以=
并进行相应分配。