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

上回答的