首页 > 解决方案 > java中等效的AWS cloudformation的json“Ref”是什么

问题描述

鉴于以下 Cloudformation JSON:

"MyServer" : {
  "Type" : "AWS::EC2::EIP",
  "Properties" : {
    "InstanceId" : { "Ref" : "LinuxServer" }
  }
},

例如,Java CDK 类中的属性InstanceIdsoftware.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()方法 - 如何与那些曾经获得相同的结果?

标签: javaamazon-web-servicesaws-cdk

解决方案


CfnParameter构造是Cloudformation参数的一般化,它本身并不是一个特定的参数。它是 cfn 构造的一个元素,因此继承了 CfnElement。CfnRefElement类的存在是为了允许创建非资源、可引用、单独的 Cloudformation 构造。它不如 CfnResource 特定,并扩展了 CfnElement,就像 CfnParameter 所做的那样。CfnParameter 不包含 .ref 元素,因为它是较低级别的概括,因此需要一个。

最初是在Github上回答的


推荐阅读