node.js - 如何使用无服务器框架通过 AWS Lambda 函数环境变量访问 SSM 参数存储值?
问题描述
所以我已经像这样配置了我的 lambda 函数的 .yaml 文件:
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
NewUser:
Type: 'AWS::Serverless::Function'
Properties:
Handler: NewUser/index.handler
Runtime: nodejs8.10
Environment:
Variables:
database_encrypt: ${ssm:databaseEncrypt}
database_password: ${ssm:databasePassword}
database_server: '8.8.8.8'
database_user: ${ssm:databaseUser}
database_version: ${ssm:databaseVersion}
Description: ''
MemorySize: 128
Timeout: 15
Role: 'arn:aws:iam::663404525923:role/LambdaRole'
Events:
LambdaMicroservice:
Type: Api
Properties:
Path: /User/NewUser
Method: ANY
我的 lambda 函数如下所示:
var config = {
user: process.env.database_user,
password: process.env.database_password,
server: process.env.database_server,
database: process.env.database_version,
options: {encrypt: true}
};
class UserService {
constructor(){
console.log(config);
console.log("test test test");
this.connectionPool = new sql.connect(config);
}
}
我可以很好地访问硬编码的database_server值,但是${ssm: [myParam] }命令被解释为字符串,而不是遵循路径并访问存储在 SSM 参数存储中的值。
我看到的大多数示例都有很长的复杂路径来指向它们的 SSM 参数,但我只是想表明以这种方式访问 SSM 参数是可能的,我试图让它尽可能简单。我还假设${ssm: [] }命令根本没有转义,因为如果在定义的路径中找不到 SSM 参数,我希望返回一个未定义的值。
解决方案
SAM 是 CloudFormation 的超集,因此 CloudFormation 命令应该可以工作
Environment:
Variables:
database_encrypt: '{{resolve:ssm-secure:databaseEncrypt:1}}'
database_password: '{{resolve:ssm-secure:databasePassword:1}}'
请参阅https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
推荐阅读
- android - 从 onPostExecute 获取 JSON 字符串到 OnCreateView
- php - Uncaught ReferenceError: $ is not defined - Laravel 5.5 + Laravel Mix
- react-native - 如何升级 react-native gradle 版本
- javascript - 无法动态创建 div 内容
- proxy - Node.js 中的 Google GAX / gRPC 不适用于 HTTP/S 代理
- javascript - 如何将点分隔字符串中的每个第一个单词大写?
- c - C:如何获取操作系统名称(Ubuntu、Debian、Centos、..)以及如果定义操作系统名称 = ubuntu
- jenkins - 如何在 Jenkins Blue Ocean 阶段为 Github 状态检查指定自定义 url?
- mysql - 插入目标表时跳过mysql中的重复值
- python-2.7 - MySQLdb 导入从命令行工作,但在 PyCharm 中崩溃