gpt4 book ai didi

amazon-web-services - 重命名 CloudFormation 模板中的资源

转载 作者:行者123 更新时间:2023-12-03 13:44:59 25 4
gpt4 key购买 nike

您可以重命名 CloudFormation 模板中的资源吗?

假设我创建了一个堆栈模板来创建单个 lambda 函数。

GetTheFunnyPhraseText:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../Lambda/
Handler: GetFunnyPhrase.handler
FunctionName: GetFunnyPhrase
Role: !GetAtt [ ExecuteFunctionGetFunnyPhrase, Arn ]

无论出于何种原因,我想将资源名称 GetTheFunnyPhraseText 更改为 GetFunnyPhrase。是否有更改名称的机制?

我尝试过的一些事情......

  • 更改模板中的资源名称。看起来这就像删除 GetTheFunnyPhraseText 并创建 GetFunnyPhrase 一样。这里的问题是资源创建发生在资源删除之前,导致操作失败,因为 Lambda 函数存在。
  • 创建两个模板草稿。 Draft-1:更改现有资源的函数名称。 Draft-2:删除旧资源(在模板中省略其定义)并添加新资源。按顺序执行草稿模板:第一个,然后第二个。这有效。这太恶心了。

对于那些建议不命名该函数的人,可以理解;暂时将这条反馈固定下来。

最佳答案

现在CloudFormation import is available尽管很乏味,但技术上可以做到这一点。

这是您需要执行的操作:

  1. 更新 GetTheFunnyPhraseText 的定义以添加 DeletionPolicy: "Retain",上传到 CloudFormation
  2. 从模板中完全删除 GetTheFunnyPhraseText。上传到CloudFormation。由于之前添加了 DeletionPolicy
  3. ,这实际上不会删除底层 Lambda
  4. 将模板恢复到第 1 步中的先前状态(添加 GetTheFunnyPhraseText)并将逻辑名称更改为 GetFunnyPhrase
  5. 启动“堆栈操作”>“将资源导入堆栈”工作流程。
  6. 上传恢复后的模板(使用更改后的逻辑名称,仍包含 DeletionPolicy)
  7. 导入过程将注意到新的 GetFunnyPhrase 逻辑名称,并询问您应将什么实际 FunctionName 映射到该名称。提供现有的 GetFunnyPhrase Lambda 名称并完成导入。
  8. 最后,您可以重新上传模板并删除 DeletionPolicy

这肯定是一个乏味的过程,但如果您确实不想删除现有资源,那么从技术上讲是可行的。

关于amazon-web-services - 重命名 CloudFormation 模板中的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com