如何对作为AWS Config自定义规则的无返回值AWS Lambda进行测试?
AWS Config触发类无返回值Lambda的集成测试方案
测试前提
提前获取AWS Config触发Lambda时的真实事件payload,可通过CloudWatch Logs抓取一次生产触发的事件内容,作为测试事件的模板,根据测试场景调整事件内的资源范围、触发时间等参数即可。
测试步骤
- 基础流程可用性验证
直接在Lambda控制台或通过AWS CLI的lambda invoke命令传入构造好的测试事件触发执行,完成后查看对应Lambda的CloudWatch Logs,确认执行全程没有抛出异常、没有权限类报错,代码关键节点(如EC2接口调用完成、合规结果生成、PutEvaluations接口调用完成)的日志已正常打印,即可证明基础运行流程正常。 - 结果一致性验证(可选,需验证逻辑正确性时使用)
- 提前准备两台测试用EC2实例,分别设置为符合规则合规要求和不符合规则合规要求的状态
- 触发Lambda测试执行后,调用AWS Config的
get-compliance-details-by-config-rule接口,查询对应自定义规则的合规结果,与预期的实例合规状态做比对,结果一致即证明业务逻辑运行正确 - 也可通过CloudTrail日志核验Lambda确实成功调用了
PutEvaluations接口,传入的评估参数与预期一致
- 本地隔离测试(可选,不希望操作真实AWS资源时使用)
可以使用moto等AWS资源模拟工具在本地搭建模拟环境,模拟EC2和AWS Config的接口响应,本地运行Lambda代码,直接验证内部逻辑的执行流程是否符合预期,不需要修改云端资源。
自动化测试封装(CI/CD场景适用)
将上述流程封装为测试脚本,按以下步骤执行即可实现自动化测试:
- 调用EC2接口创建符合测试条件的临时实例
- 构造测试事件调用
lambda invoke接口触发测试 - 等待10~15秒后调用Config接口拉取合规结果做断言
- 测试完成后销毁临时测试用EC2实例即可
内容的提问来源于stack exchange,提问作者Justwannaknow
相关产品推荐
相关产品推荐

