Cloudformation 何时使用 getatt、ref 与 ${}

tmp*_*dev 16 aws-cloudformation

我试图找出GetAttvs Refvs之间的差异${}

据我了解,您GetAttRef用于引用同一模板中的对象,并且可以用于引用任何内容?另外我${}什么时候用?

War*_*enG 27

Ref可用于两件事:

  1. 返回您通过模板的参数部分传入的参数值。
  2. 当您在模板中引用另一个资源的逻辑 ID 时,Ref 返回您可以认为是该类型资源的默认属性的内容。因此,对 EC2 实例使用 ref 将返回实例 ID,引用 s3 存储桶资源,它将返回存储桶名称。您可以查看 AWS 文档中每个 cloudformation 资源页面的底部以了解该值是什么(请参阅返回值部分:https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties- ec2-instance.html )

GetAtt本质上与 Ref 的第二个函数相同,它还返回您在资源中创建的资源的属性,但 ref 仅返回一个默认属性,GetAtt 允许您从不同的属性中进行选择以返回。

例如,EC2 实例的 GetAtt 为您提供了返回实例的 AvailabilityZone、PrivateDnsName、PublicDNSName 等的选项 - 而 Ref 将仅返回 InstanceID。您可以返回的不同属性因资源类型而异。您还可以查看 AWS 文档中每个 cloudformation 资源页面的底部,以了解您都可以返回哪些属性(请参阅返回值部分:https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-属性-ec2-instance.html )

${}是另一种引用通过模板参数部分传入的参数的方法。

不过,所有这些都在 AWS 文档中。

  • 回复:“${} 是引用参数的另一种方式”。它_只是_参数吗?根据[this](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html#w2ab1c26c24c59b7):“将变量写入 ${MyVarName}。变量可以是模板参数名称、资源逻辑 ID、资源属性或键值映射中的变量。” (2认同)

Jas*_*rth 7

CloudFormation Ref 和 GetAtt 备忘单是一个非常方便的网页,可用于快速参考大多数 CloudFormation 资源可以通过RefGetAtt获得的内容。您可以将 aRef用于逻辑资源的默认值(包括在 a 内部Sub使用 ${NAME} 方法)以及堆栈的参数。GetAtt仅对堆栈的逻辑资源有用。