AWS Lambda函数的运行时配置

pal*_*tor 12 aws-lambda

我有一个需要连接到远程TCP服务的AWS Lambda函数.将Lambda函数部署到AWS后,有没有办法使用远程服务的IP地址配置Lambda函数?或者我必须在部署之前将配置烘焙到打包的Lambda函数中?

Mik*_*gan 5

我找到了一种用于支持测试环境和生产环境的方法,可以为您提供帮助。

对于函数的测试版本,我调用它TEST-ConnectToRemoteTcpService,对于函数的生产版本,我将函数命名为PRODUCTION-ConnectToRemoteTcpService. 这允许我使用正则表达式提取环境名称。

然后我将存储config/test.json并保存config/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);
      }
    });
  });
};
Run Code Online (Sandbox Code Playgroud)


kix*_*orz 1

您可以通过 SNS 主题订阅调用 Lambda 函数,并让它从 SNS 事件内的负载进行自身配置。

以下是有关如何通过 SNS 调用 Lambda 的官方指南。