我知道在AWS Lambda上运行Java程序时可以传递参数以进行测试。但是,如果该程序由计划事件调用,我不知道如何传递这些参数。
有人知道是否有可能吗?如果是,怎么做? 我没有找到任何相关信息。
提前感谢。
我知道在AWS Lambda上运行Java程序时可以传递参数以进行测试。但是,如果该程序由计划事件调用,我不知道如何传递这些参数。
有人知道是否有可能吗?如果是,怎么做? 我没有找到任何相关信息。
提前感谢。
您可以利用Lambda配置中的环境变量。然后,您可以通过以下方式在Java程序中读取它们:
System.getenv("VAR_NAME")
另一个选择,如果您有自动化部署或CI,是使用maven(或类似工具)和属性在构建时插入参数。我想这样更加优化,因为您不必从S3读取文件?
例如,您可以拥有config/env1/app.properties
和config/env2/app.properties
然后使用maven创建加载相应配置文件的配置文件:
...
<profiles>
<profile>
<id>env1</id>
<build>
<resources>
<resource>
<directory>config/env1</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env2</id>
<build>
<resources>
<resource>
<directory>config/env2</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</profile>
</profiles>
...
在你的代码中像往常一样读取props props.load(ClassLoader.getSystemResourceAsStream("app.properties"));
在你的自动化中,你可以构建mvn install -P en1
来获取你要部署的Jar。
目前,创建定时Lambda函数的唯一方法是通过AWS控制台,但它不提供在调度程序调用时向Lambda函数传递参数的任何方式。由于您的Lambda函数是由AWS调度程序调用的,我对参数传递的工作原理并不清楚。