amazon-cloudformation - Cloudformation 何时使用 getatt、ref 和 ${}
问题描述
我试图找出GetAtt
vs Ref
vs之间的区别${}
。
据我了解,您GetAtt
仅用于指代同一模板中的对象,并且Ref
可以用于指代任何东西?另外我什么时候用${}
?
解决方案
Ref可用于两件事:
- 返回您通过模板的参数部分传入的参数的值。
- 当您在模板中引用另一个资源的逻辑 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 文档中。
推荐阅读
- rust - 无法创建通用 JNIEnv,因为错误“线程 'main' 在 'Err' 值上调用 'Result::unwrap()' 时发生恐慌
- apple-developer - Apple 公证错误:“用户名不是提供商的成员”
- c++ - 使用列表进行动态结构分配
- javascript - 您如何使用 Apollo Client 有效地批处理 GraphQL 突变?
- c# - OneNote api 失败,代码为 20258。 graphClient.Users[userPrincipalName].Onenote.Pages.Request()
- javascript - JavaScript 代码适用于在 FireFox 中下载 csv,但不适用于 Microsoft Edge
- vim - 如何在 Vim 中对齐(以表格形式)行?
- c# - Outlook 未显示在呼叫者应用程序的顶部
- react-admin - react-admin: SimpleForm in Isolation
- python - 如何避免舍入浮点的python格式化