gpt4 book ai didi

amazon-web-services - 在 AWS CloudFormation 中引用 EC2 实例的名称标签而不进行参数化

转载 作者:行者123 更新时间:2023-12-03 07:22:47 26 4
gpt4 key购买 nike

我有一个 CloudFormation 堆栈,用于创建 EC2 实例并为其提供名称标签。

我想创建一个 CloudWatch 警报,并在警报名称中引用 EC2 实例的名称 - 类似于 AlarmName: !Sub "Status Check Alarm - ${EC2InstanceName}"

!Ref 将允许我引用 CloudFormation 脚本的参数,但我不想参数化 EC2 实例名称 - 我不希望或不需要它是可定制的,而且我不想不希望用户能够为服务器选择自定义名称。

我尝试输出 EC2 实例名称,以便可以 !Ref ,但我收到 无效模板资源属性“输出” 错误,所以我不知道如果我的方法有效:

EC2Instance:
Properties: ...
Type: AWS::EC2::Instance
Outputs:
EC2InstanceName:
Description: The server's name.
Value: !GetAtt EC2Instance.Tags.Name
Export:
Name: "EC2InstanceName"

如何在不参数化脚本顶层名称的情况下引用 EC2 实例的名称?

编辑:

我最终还是使用了参数,这样我就可以 !Ref 它们。我想您还可以设置一个“允许值”列表,仅包含与默认值匹配的单个值。虽然很蹩脚,但我想它确实有效。

Parameters:
EC2InstanceName:
Type: String
Default: "web-server-blah"
Description: The name of the EC2 instance.

最佳答案

您只能对文档 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html 中专门指定的属性使用 !GetAtt标签不在其中。

但是,如果您为实例提供不同的标签,那么您甚至可以引用它,甚至无需导出它(前提是它是常量值)。

我明白您正在尝试执行的操作,但 AWS 并不支持您想要开箱即用的所有功能。我想象的一种实现方法 - 你可能不喜欢它 - 是通过宏或自定义资源(lambda 函数)。

关于amazon-web-services - 在 AWS CloudFormation 中引用 EC2 实例的名称标签而不进行参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71150210/

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