java - java中等效的AWS cloudformation的json“Ref”是什么
问题描述
鉴于以下 Cloudformation JSON:
"MyServer" : {
"Type" : "AWS::EC2::EIP",
"Properties" : {
"InstanceId" : { "Ref" : "LinuxServer" }
}
},
例如,Java CDK 类中的属性InstanceId
是software.amazon.awscdk.services.ec2.CfnEIP
字符串,但在 Cloudformation JSON 中,它可以是字符串或对象(具有“Ref”属性)
如何将 Ref 对象(或任何其他类型)传递给CfnEIP
类(或任何其他也支持“Ref”属性的类)而不是此类所需的 String?
编辑
我发现所有继承自的类CfnRefElement
都有一个getRef()
返回 String 的方法,并且在幕后从字符串转换为对象:
从"InstanceId" : "notWorkingRef"}
(Java 字符串属性)到"InstanceId" : { "Ref" : "someRef" }
.
但是有一些 Cfn 类(例如 CfnParameter(核心库))不是继承自CfnRefElement
而是继承自,CfnElement
而那些曾经没有getRef()
方法 - 如何与那些曾经获得相同的结果?
解决方案
CfnParameter构造是Cloudformation参数的一般化,它本身并不是一个特定的参数。它是 cfn 构造的一个元素,因此继承了 CfnElement。CfnRefElement类的存在是为了允许创建非资源、可引用、单独的 Cloudformation 构造。它不如 CfnResource 特定,并扩展了 CfnElement,就像 CfnParameter 所做的那样。CfnParameter 不包含 .ref 元素,因为它是较低级别的概括,因此需要一个。
最初是在Github上回答的
推荐阅读
- php - Codeigniter 3:日期总是在表单操作后显示 0000-00-00
- java - jcs JDBC 磁盘缓存是否适用于 postgres?
- javascript - 带有模糊搜索的自动完成文本框
- asp.net-core - 基于 .NET Core 的 SignalR 客户端和 Redis 背板接收重复消息
- ios - 结合 PageTabViewStyle() 和 DefaultTabViewStyle()
- elasticsearch - 如果我更新现有索引模板的别名,新别名是否会出现在翻转索引中?
- javascript - Typescript 为对象定义类型将丢失静态对象键(属性)建议
- docker - docker-找不到框架“Microsoft.AspNetCore.App”,版本“5.0.0”。- 没有找到框架
- linux - 新手 Linux Shell “for loop” 塔式算法
- typescript - Typescript 编译器不会决定方法返回的 null 与 undefined