Итак, я настроил файл .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
и моя лямбда-функция выглядит следующим образом:
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: []} просто не экранируется вообще, потому что я ожидаю, что будет возвращено значение undefined , если в SSM не будет найдено Param SSM. определенный путь.