我有一个需要连接到远程TCP服务的AWS Lambda函数.将Lambda函数部署到AWS后,有没有办法使用远程服务的IP地址配置Lambda函数?或者我必须在部署之前将配置烘焙到打包的Lambda函数中?
我找到了一种用于支持测试环境和生产环境的方法,可以为您提供帮助。
对于函数的测试版本,我调用它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)
| 归档时间: |
|
| 查看次数: |
3933 次 |
| 最近记录: |