Amazon cloudformation Cloudformation何时使用getatt、ref、vs${}

Amazon cloudformation Cloudformation何时使用getatt、ref、vs${},amazon-cloudformation,Amazon Cloudformation,我试图找出GetAttvsRefvs${}之间的区别 据我所知,您使用GetAtt仅引用同一模板内的对象,而Ref可用于引用任何内容?另外,我什么时候会使用${}?Ref可以用于两件事: 返回通过模板的参数部分传入的参数值 当您在模板中引用另一个资源的逻辑ID时,REF返回您可以认为是该类型资源的默认属性。因此,对EC2实例使用ref将返回实例ID,引用s3 bucket资源将返回bucket名称。您可以查看AWS文档中每个cloudformation resources页面的底部,查看该值(请

我试图找出
GetAtt
vs
Ref
vs
${}
之间的区别


据我所知,您使用
GetAtt
仅引用同一模板内的对象,而
Ref
可用于引用任何内容?另外,我什么时候会使用
${}

Ref可以用于两件事:

  • 返回通过模板的参数部分传入的参数值
  • 当您在模板中引用另一个资源的逻辑ID时,REF返回您可以认为是该类型资源的默认属性。因此,对EC2实例使用ref将返回实例ID,引用s3 bucket资源将返回bucket名称。您可以查看AWS文档中每个cloudformation resources页面的底部,查看该值(请参阅返回值部分:) GetAtt与上面Ref的第二个函数基本相同,它还返回您在资源中创建的资源的属性,但是Ref只返回默认属性,GetAtt允许您从不同的属性中选择要返回的属性

    例如,EC2实例的GetAtt提供了返回实例的AvailabilityZone、PrivatedDNSName、PublicDNSName等的选项,而Ref只返回InstanceID。每个资源类型可以返回不同的属性。您还可以查看AWS文档中每个cloudformation resources页面的底部,以查看可以返回哪些属性(请参阅返回值部分:)

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


    所有这些都在AWS文件中。

    该图纸可能有助于澄清以下用途:


    是一个非常方便的网页,可用于快速参考通过
    Ref
    GetAtt
    获取的大多数云信息资源。您可以使用
    Ref
    作为逻辑资源的默认值(包括使用${NAME}方法的
    Sub
    内部),也可以作为堆栈的参数
    GetAtt
    仅对堆栈的逻辑资源有用。

    非常感谢。如果我想引用模板之外的内容,例如获取
    arn
    ,我可以根据给出的解释使用ref或getaa?否,因为这些函数仅在模板内工作。如果资源已经在模板之外创建,则可以在控制台中查看资源时找到arn,然后您可以通过参数将其传递到cloudformation中:
    ${}是引用参数的另一种方式。只是参数吗?根据:“将变量写为${MyVarName}。变量可以是模板参数名、资源逻辑ID、资源属性或键值映射中的变量。”这有点误导。1) GetAtt无法获取“资源的任何属性”,它可以获取由资源定义的非常有限的集合。2) ${}也可以用作资源的默认值,而不仅仅用于参数。谢谢@JasonWadsworth。校正图像。