首页 > 解决方案 > Cloudformation 何时使用 getatt、ref 和 ${}

问题描述

我试图找出GetAttvs Refvs之间的区别${}

据我了解,您GetAtt仅用于指代同一模板中的对象,并且Ref可以用于指代任何东西?另外我什么时候用${}

标签: amazon-cloudformation

解决方案


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 文档中。


推荐阅读