【问题标题】:CloudFormation, AWS Lambda: Ignore Parameter from Old TemplateCloudFormation,AWS Lambda:忽略旧模板中的参数
【发布时间】:2018-10-14 05:26:40
【问题描述】:

我正在将一个 .Net Core Web API 项目部署到 AWS Lambda。它有效,但我有以下问题:

以前的模板包含不再使用的参数

之前的 Lambda 部署创建了一个 CloudFormation 模板,其中定义了 Parameter。为了讨论,我们称之为“BadParameter”。

现在,我们不想再使用那个参数了。我们更新了serverless.template,使其不再具有该参数。

现在,我们所有的部署(使用更新模板)都失败并显示以下消息:

创建 CloudFormation 更改集时出错:参数:[BadParameter] 模板中不存在

我可以通过从 CloudFormation 下载模板,手动删除参数,然后重新上传模板来解决此问题,但这很繁琐且容易出错。

有什么方法可以在我的新模板中指定应该删除旧参数吗?

【问题讨论】:

  • 理想情况下,您的 CloudFormation 模板应反映部署的当前状态,并且您不应在 CloudFormation 之外的该环境中部署/修改任何内容。您能否不简单地从源中使用的所有参数(包括 CF 模板)中删除该参数,并执行 CloudFormation 更新以重新部署所有相关更改?
  • @jarmod 这正是我想要做的。问题是,当我尝试更新模板时,它会失败,因为旧版本有一个新版本缺少的参数。唯一的方法似乎是首先手动更新现有模板。
  • 我认为失败的原因不是以前版本的模板包含参数(否则永远无法删除参数)。文档建议您可以删除模板参数除非它被不支持更新的资源使用。会不会是这个问题?

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


【解决方案1】:

我知道的老问题,但我自己使用 CodePipeline 遇到了这个问题。我无法从 OP 的问题中看出他们是否在使用它。

解决方案是从 CodePipeline CHANGE_SET_REPLACE 阶段中​​ TemplateConfiguration 引用的 json 文件中删除旧参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多