如何使用Lambda函数环境变量访问AWS Parameter Store值?

时间:2019-10-23 00:46:44

标签: amazon-web-services aws-lambda aws-sdk aws-cloud9 aws-parameter-store

因此,正如标题所述,我试图在lambda函数中使用环境变量来指向我的AWS Parameter Store变量。

我的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);
        this.connectionPool = new sql.connect(config);
    }
}

和.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'
    Custom:
      Settings:
        database_encrypt: ${ssm:databaseEncrypt}
        database_password: ${ssm:databasePassword}
        database_server: '8.8.8.8'
        database_user: ${ssm:databaseUser}
        database_version: ${ssm:databaseVersion}
    Provider:
      Environment: ${self.Custom.Settings}
    Properties:
      Handler: NewUser/index.handler
      Runtime: nodejs8.10
      Description: ''
      MemorySize: 128
      Timeout: 15
      Role: 'arn:aws:iam::663404525923:role/LambdaRole'
      Events:
        LambdaMicroservice:
          Type: Api
          Properties:
            Path: /User/NewUser
            Method: ANY

当对config参数进行硬编码时,sql.connect()函数按预期工作,并且我已经能够使用promise和ssm.GetParameter()方法在代码内部捕获参数存储变量,但是我试图使我在 this video中发现的一些内容适应自己的用途。

现在,构造函数中的console.log()将为所有变量返回Undefined,甚至包括我在.yaml中作为测试硬编码的database_server变量。这对我说,尝试访问Custom.Settings路径时发生错误,但是我不确定到底是哪里出了问题或如何解决。

0 个答案:

没有答案