【问题标题】:Pipeline replaces previously deployed lambda when deploying new lambda在部署新的 lambda 时,管道会替换以前部署的 lambda
【发布时间】:2019-02-22 17:42:00
【问题描述】:

我引用 this aws tutorial 来明智地部署我们的 lambdas 跨账户。 我能够成功部署 lambda,但我注意到如果我部署另一个 lambda (lambda_b),重新使用相同的管道但对于不同的 lambda,这个不同的 lambda (lambda_b) 将替换另一个 lambda @ 987654327@ 之前已部署,因此在任何时候,我在 aws 控制台中都只有一个 lambda。

是否会因为我创建变更集的方式而发生这种替换? 我只是不知道如何继续或在哪里寻找以了解为什么它不部署 lambda_b 而不替换 lambda_a 即使我们为所有 lambdas 重新使用相同的管道。

要部署 lambda_a 我必须完成所有步骤,上面链接的教程的 1-6 但是,要部署lambda_b,我只需要重新运行上面的第 4 步和第 5 步,这可能是为什么?当我再次尝试从头开始重新运行时,它看不到步骤 1 的变更集

在 codepipiline,cloudformation yaml 文件中,有没有办法设置 retain:true 属性或某种方式,以便我可以显示所有 lambda到目前为止,我们已经部署;现在,我只能显示上次部署的 lambda,因为新的 lambda 部署 (lambda_b) 总是替换旧的 lambda 部署 (lambda_a)

I want the console to show both lambda_a, and lambda_b

【问题讨论】:

  • 您正在创建变更集吗?那么显然它将用新的替换旧的。
  • 对不起,我是 cloudformation 的新手,所以可能会问很多新手问题;但我不能告诉开发人员他们只能在 aws 控制台中看到 1 个 lambda;他们需要能够看到所有部署的 lambda,而不仅仅是最新的
  • 您能否分享您的 cloudformation 模板,以便我们查看其中的任何更改是否可以解决您的问题。
  • @VaisakhPS,谢谢我正在使用这个仓库:github.com/awslabs/aws-refarch-cross-account-pipeline,有问题的管道位于ToolsAccount/ 目录中;但我也可以把它贴在这里它只是有点长
  • 如果创建变更集将旧的替换为新的,那么如何在不替换但重新使用相同管道的情况下部署新的 lambda?

标签: amazon-web-services aws-lambda amazon-cloudformation aws-codepipeline


【解决方案1】:

当您使用 CloudFormation 部署 lambda 函数时,当从模板中删除资源 (lambda_a) 时,它将作为 CloudFormation 清理步骤的一部分被删除。

您需要在要部署的模板中保留这两个函数,以便同时部署 lambda_a 和 lambda_b。

【讨论】:

  • 感谢您的回复@TimB;我不确定我是否理解正确,但我不是在询问部署这两个功能at the same time i.e simultaneously;我问的是显示到目前为止在 lambda 控制台中部署的所有功能。我将如何执行您在 cloudformation 中的建议?如何保留它,cloudformation 中的pipeline resource 是否有一个属性,我可以将其设置为保留?我正在学习 cloudformation
  • Configuration: ChangeSetName: sample-lambda-dev ActionMode: CHANGE_SET_REPLACE - 问题可能出在 Change_set_replace 属性上?我即将用谷歌搜索它,但也许应该将其设置为 change_set_retain 之类的东西以保留旧的 lambda?我只是为了展示我的思路而编造它;该属性甚至可能不存在
  • 从这篇文章docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…,看来我可能需要使用CHANGE_SET_EXECUTE 而不是CHANGE_SET_REPLACE
  • 遇到了一个问题,新 lambda 的变更集以前不存在并且它失败了。 CHANGE_SET_REPLACE 将创建变更集,如果它不存在,但如果它存在,它将删除它,那么我怎样才能保留以前部署的 lambda?我尝试了所有我能想到的东西,但不知道还能尝试什么
  • toolsAccount 文件夹中的代码管道模板在projectName 上参数化;每个projectName 都是一个 lambda 函数。我们希望重用相同的代码管道来部署我们的开发人员正在编写的各种 lambda;所以它是一个在所有编写 lambda 函数的开发人员之间共享的集中式管道。我如何向他们展示所有部署的 lambda,而不仅仅是最后部署的 lambda;抱歉写了这么多;只是想提供更多背景信息,以防有人知道我正在尝试做什么或可以提出文章或想法;有什么帮助;感谢先进
猜你喜欢
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 2019-12-12
  • 2023-03-29
相关资源
最近更新 更多