Как получить доступ к значениям хранилища параметров SSM через переменные среды лямбда-функции AWS с помощью Serverless Framework? - PullRequest
0 голосов
/ 24 октября 2019

Итак, я настроил файл .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. определенный путь.

1 Ответ

0 голосов
/ 24 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...