我有许多使用Java 8的AWS Lambda。我们正在为所有具有Smoke / Live别名的Lambda使用Blue / Green部署。我们正在使用Jenkins通过以下步骤部署AWS Lambda
对于第5步,请问我们是否有方法对lambda执行“烟雾测试”?
我认为我们需要实际执行lambda本身(而不是junit),但是如果这样运行了实际的业务规则,则它可以生成许多输出到目标的东西,例如dynamodb和s3 ...
因此,请分享您在实际项目中拥有的最佳实践。谢谢。
我在考虑是否应该添加一个将通过Smoke测试传递的特殊参数,然后lambda本身就具有处理该参数的逻辑。
答案 0 :(得分:0)
我也为这个概念而苦恼。
假设您正在通过环境变量或SSM参数之类的方法将配置(例如DynamoDB表,S3位置等)外部化:理想情况下,您将“冒烟”或将Lambda的暂存版本指向烟雾测试(即,生产)资源。
使用别名的一个问题是您can not have different environment variables for different aliases。
请记住,用于冒烟/集成测试lambda的典型方法是放弃使用别名,将临时资源部署为与生产资源不同/分离的功能。
如果您有一个SAM / Cloudformation模板可以部署lambda及其依赖项,从而可以轻松设置开发,smoketest和生产堆栈,则可以更轻松地完成此操作。您将需要为前缀/后缀创建一个参数,您可以为其提供资源以区分不同的部署。
当您对烟雾测试结果感到满意时,只需将经过测试的lambda代码版本部署到生产lambda中即可。