Aws lambda 计划AWS Lambda函数的运行时配置

Aws lambda 计划AWS Lambda函数的运行时配置,aws-lambda,Aws Lambda,我有一个AWS Lambda函数,计划每小时运行一次(如本文所述) 函数ftps从数据提供程序中复制文件并将其复制到S3 我有一个测试环境和一个生产环境。对于每个环境,ftp地址和凭据都是不同的 如何配置lambda函数,以便它能够知道它在哪个环境中运行,并相应地获得ftp配置 PS:我知道这个问题:,但它对我没有帮助,因为我正在使用一个计划的lamdba,使用2015年10月8日推出的新的计划lambda函数功能,我看不到将配置引入事件的方法。我找到了一种方法。对于函数的测试版本,我将其命名为

我有一个AWS Lambda函数,计划每小时运行一次(如本文所述)

函数ftps从数据提供程序中复制文件并将其复制到S3

我有一个测试环境和一个生产环境。对于每个环境,ftp地址和凭据都是不同的

如何配置lambda函数,以便它能够知道它在哪个环境中运行,并相应地获得ftp配置


PS:我知道这个问题:,但它对我没有帮助,因为我正在使用一个计划的lamdba,使用2015年10月8日推出的新的计划lambda函数功能,我看不到将配置引入事件的方法。

我找到了一种方法。对于函数的测试版本,我将其命名为
test-CopyFtpFilesToS3
,对于函数的生产版本,我将其命名为
production-CopyFtpFilesToS3
。这允许我使用正则表达式提取环境名称

然后我将
config/test.json
config/production.json
存储在zip文件中,作为函数的代码上传。当函数运行时,此zip文件将被解压缩到目录
process.env.LAMBDA\u TASK\u ROOT
。这样我就可以加载该文件并获得所需的配置

有些人不喜欢将配置存储在代码zip文件中,这很好——您可以从S3加载一个文件,或者使用任何您喜欢的策略

从zip文件读取文件的代码:

const readConfiguration = () => {
  return new Promise((resolve, reject) => {
    let environment = /^(.*?)-.*/.exec(process.env.AWS_LAMBDA_FUNCTION_NAME)[1].toLowerCase();
    console.log(`environment is ${environment}`);

    fs.readFile(`${process.env.LAMBDA_TASK_ROOT}/config/${environment}.json`, 'utf8', function (err,data) {
      if (err) {
        reject(err);
      } else {
        var config = JSON.parse(data);
        console.log(`configuration is ${data}`);
        resolve(config);
      }
    });
  });
};