我将报告生成移动到aws lambda以从主应用程序中移除此负载,但我还需要管理不同的执行环境,开发,阶段和生产。为此目的,我管理一组环境变量,其中定义了Mysql,Redis,AWS S3凭证,存储桶等URL,具体取决于我的需求。
我可以从lambda控制台配置这些环境变量,但要实现一组测试环境,我需要有3个配置的功能,一个用于开发,另一个用于舞台,另外一个用于生产。
我想要实现的是我的项目可以从配置的环境变量中读取并在启动时设置值,这样我就不用担心从aws控制台维护它了。我的代码库是使用spring的java,我猜测有一些java API来管理aws lambda。
我一直在寻找这个,但到目前为止没有运气,我也愿意接受建议。
答案 0 :(得分:2)
您需要使用aws-sdk
中的updateFunctionConfiguration
函数动态更新lambda配置。
但是,更好的方法是使用lambda versioning and aliases。对于相同的功能,您可以为您拥有的每个环境创建一个版本,然后为其创建别名。每个版本都可以拥有自己的一组环境变量,而与其他版本无关。当您调用函数时,您必须传递一个名为qualifier的参数,其值为环境别名/版本名称。这可以在invoke
之前通过setQualifier
完成。