0

我有许多使用 Java 8 的 AWS Lambda。我们对所有具有 Smoke/Live 别名的 Lambda 使用蓝/绿部署。我们正在使用 Jenkins 通过以下步骤部署 aws lambda

  1. 签出:这是从 git 签出 lambda 源代码。
  2. 使用 Junit 构建和单元测试。
  3. Jacoco 的代码覆盖率
  4. 使用 Smoke 别名部署它。
  5. 现在我们要针对烟雾别名对 lambda 执行烟雾测试
  6. 如果 Smoke 测试用例通过,我们会将 Smoke 别名提升为 Live 别名。

对于第 5 步,如果我们有对 lambda 执行“烟雾测试”的方法,您能否提出建议?

我认为我们需要实际执行 lambda 本身(而不是 junit),但如果实际业务规则运行,那么它可以生成许多输出到目标的东西,例如 dynamodb 和 s3 ...

因此,请分享您对实际项目的最佳实践。谢谢。

我在想我是否应该添加一个特殊的参数,该参数将通过 Smoke 测试,然后 lambda 本身具有处理该参数的逻辑。

4

1 回答 1

0

我也一直在为这个概念而苦苦挣扎。

假设您通过环境变量或 SSM 参数等方式将您的配置(例如 DynamoDB 表、S3 位置等)外部化:理想情况下,您将拥有 Lambda 点到冒烟测试(即非生产)资源的“冒烟”或暂存版本.

使用别名的一个问题是您不能为不同的别名使用不同的环境变量

考虑到这一点,烟雾/集成测试 lambdas 的典型方法是放弃使用别名将暂存资源部署为与生产资源不同/独立的功能。

如果您有一个SAM / Cloudformation模板可以部署您的 lambda 及其依赖项,那么这可以更轻松地完成,这样您就可以轻松设置开发、smoketest 和生产堆栈。您需要为前缀/后缀创建一个参数,您可以提供资源来区分不同的部署。

当您对冒烟测试结果感到满意时,您只需将 lambda 代码的测试版本部署到您的生产 lambda。

于 2019-05-28T01:46:59.837 回答