【问题标题】:Runtime Configuration for scheduled AWS Lambda function计划的 AWS Lambda 函数的运行时配置
【发布时间】:2015-10-30 08:37:29
【问题描述】:

我有一个计划每小时运行一次的 AWS Lambda 函数(如此处所述http://docs.aws.amazon.com/lambda/latest/dg/getting-started-scheduled-events.html)。

函数 ftps 来自数据提供者的文件并将它们复制到 S3。

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

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

PS:我知道这个问题:runtime configuration for AWS Lambda function,但这对我没有帮助,因为我正在使用 2015 年 10 月 8 日推出的新的预定 lambda 函数功能使用预定的 lamdba,我看不到获得配置到事件中。

【问题讨论】:

    标签: aws-lambda


    【解决方案1】:

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

    然后我将config/test.jsonconfig/production.json 存储在我作为函数代码上传的zip 文件中。该 zip 文件将在函数运行时解压缩到目录 process.env.LAMBDA_TASK_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);
          }
        });
      });
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 2021-06-11
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2020-11-10
      相关资源
      最近更新 更多