Ada*_*dam 7 amazon-web-services aws-cloudformation
您可以重命名 CloudFormation 模板中的资源吗?
假设我创建了一个堆栈模板来创建单个 lambda 函数。
GetTheFunnyPhraseText:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../Lambda/
Handler: GetFunnyPhrase.handler
FunctionName: GetFunnyPhrase
Role: !GetAtt [ ExecuteFunctionGetFunnyPhrase, Arn ]
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,我想将资源名称更改GetTheFunnyPhraseText为GetFunnyPhrase. 是否有更改名称的机制?
我尝试了几件事...
GetTheFunnyPhraseText和创建GetFunnyPhrase. 这里的问题是资源创建发生在资源删除之前,导致操作失败,因为 Lambda 函数存在。对于那些建议不要命名函数的人,理解;暂时在该反馈中放置一个引脚。
小智 11
既然CloudFormation 导入可用,在技术上就可以做到这一点,尽管它很乏味。
这是您需要执行的操作:
GetTheFunnyPhraseText以添加DeletionPolicy: "Retain",上传到 CloudFormationGetTheFunnyPhraseText从您的模板中完全删除。上传到 CloudFormation。由于之前添加的,这实际上不会删除底层 LambdaDeletionPolicyGetTheFunnyPhraseText回来)中的先前状态并将逻辑名称更改为GetFunnyPhraseDeletionPolicy)GetFunnyPhrase逻辑名称,并询问您FunctionName应该将什么实际映射到该名称。提供现有的GetFunnyPhraseLambda 名称并完成导入。DeletionPolicy肯定是一个乏味的过程,但如果您真的不想删除现有资源,技术上是可行的。
不!在 Cloud Formation 中无法重命名资源的逻辑名称。
正如您所测试的那样,CloudFormation 将其视为移除旧资源并创建新资源。之所以如此,是因为在创建后,CloudFormation 将逻辑资源 ID 绑定到资源的物理 ID。但是对于 CloudFormation 模板语言,它在解析模板时仅识别逻辑 ID,因此对其的任何更改都意味着与其关联的资源将被更改。
在某些资源类型中,虽然您可以通过使用特定于资源的某些名称属性自己设置物理 ID,例如,资源AWS::RDS::DBInstance可能具有一个属性DBInstanceIdentifier,该属性将是数据库实例本身的物理名称。
| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |