java 中等效的 AWS cloudformation 的 json "Ref" 是什么
What is the equivalent AWS cloudformation's json "Ref" in java
给定以下 Cloudformation JSON:
"MyServer" : {
"Type" : "AWS::EC2::EIP",
"Properties" : {
"InstanceId" : { "Ref" : "LinuxServer" }
}
},
例如 Java CDK classes software.amazon.awscdk.services.ec2.CfnEIP
中的属性 InstanceId
是一个字符串,但在 Cloudformation JSON 中它可以是字符串或对象(具有 "Ref" 属性)
如何将 Ref 对象(或任何其他类型)传递给 CfnEIP
class(或任何其他也支持 "Ref" 属性的 classes ) 而不是这个 class 需要的字符串?
编辑
我发现所有从 CfnRefElement
继承的 classes 都有一个方法 getRef()
,其中 returns 一个 String 并且在幕后被转换从字符串到对象:
从"InstanceId" : "notWorkingRef"}
(Java 字符串属性)到"InstanceId" : { "Ref" : "someRef" }
。
但是有些 Cfn classes(例如 CfnParameter(核心库))不是从 CfnRefElement
而是从 CfnElement
继承的,而那些曾经没有 getRef()
方法 - 如何获得与那些一次相同的结果?
CfnParameter 构造是 Cloudformation Parameters 的概括,它本身并不是一个特定的参数。它是 cfn 构造的一个元素,因此继承了 CfnElement。
CfnRefElement class 的存在是为了允许创建非资源的、可引用的、单独的 Cloudformation 结构。它不像 CfnResource 那样具体并且扩展了 CfnElement,就像 CfnParameter 所做的那样。
CfnParameter 不包含 .ref 元素,因为它是较低级别的泛化,因此需要一个。
最初是在 Github
上回答的
给定以下 Cloudformation JSON:
"MyServer" : {
"Type" : "AWS::EC2::EIP",
"Properties" : {
"InstanceId" : { "Ref" : "LinuxServer" }
}
},
例如 Java CDK classes software.amazon.awscdk.services.ec2.CfnEIP
中的属性 InstanceId
是一个字符串,但在 Cloudformation JSON 中它可以是字符串或对象(具有 "Ref" 属性)
如何将 Ref 对象(或任何其他类型)传递给 CfnEIP
class(或任何其他也支持 "Ref" 属性的 classes ) 而不是这个 class 需要的字符串?
编辑
我发现所有从 CfnRefElement
继承的 classes 都有一个方法 getRef()
,其中 returns 一个 String 并且在幕后被转换从字符串到对象:
从"InstanceId" : "notWorkingRef"}
(Java 字符串属性)到"InstanceId" : { "Ref" : "someRef" }
。
但是有些 Cfn classes(例如 CfnParameter(核心库))不是从 CfnRefElement
而是从 CfnElement
继承的,而那些曾经没有 getRef()
方法 - 如何获得与那些一次相同的结果?
CfnParameter 构造是 Cloudformation Parameters 的概括,它本身并不是一个特定的参数。它是 cfn 构造的一个元素,因此继承了 CfnElement。 CfnRefElement class 的存在是为了允许创建非资源的、可引用的、单独的 Cloudformation 结构。它不像 CfnResource 那样具体并且扩展了 CfnElement,就像 CfnParameter 所做的那样。 CfnParameter 不包含 .ref 元素,因为它是较低级别的泛化,因此需要一个。
最初是在 Github
上回答的