首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调度AWS Lambda函数的运行时配置

调度AWS Lambda函数的运行时配置
EN

Stack Overflow用户
提问于 2015-10-30 08:37:29
回答 1查看 481关注 0票数 1

我有一个AWS函数,计划每小时运行一次(如这里所描述的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,而且我看不到将配置引入到事件中的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 11:13:30

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

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

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

从zip读取文件的代码:

代码语言:javascript
运行
复制
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);
      }
    });
  });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33431699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档