Что такое json "Ref" эквивалентной облачной информации AWS в java - PullRequest
0 голосов
/ 10 октября 2019

С учетом следующего JSON Cloudformation:

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

Для примера в классах Java CDK атрибут InstanceId в software.amazon.awscdk.services.ec2.CfnEIP является строкой, но в JSON Cloudformation это может быть либо строка, либо объект(который имеет атрибут "Ref")

Как я могу передать объект Ref (или любой другой тип) в класс CfnEIP (или любые другие классы, которые также поддерживают атрибут "Ref") вместоСтрока, которая требуется этому классу?

EDIT

Я обнаружил, что все классы, которые наследуются от CfnRefElement, имеют метод getRef(), который возвращаетСтрока и за сценой преобразуется из строки в объект:

С "InstanceId" : "notWorkingRef"} (атрибут Java String) в "InstanceId" : { "Ref" : "someRef" }.

Но существуют классы Cfn (например, CfnParameter (core lib)), которая не наследуется от CfnRefElement, но от CfnElement, и у тех, кто когда-то не имеет getRef() метода - как получить тот же результат с этими один раз?

1 Ответ

0 голосов
/ 17 октября 2019

Конструкция CfnParameter является обобщением параметров облачной информации в целом и сама по себе не является конкретным параметром. Это элемент конструкции cfn, поэтому он наследует CfnElement. Класс CfnRefElement существует для создания нересурсных, ссылочных отдельных конструкций Cloudformation. Он менее специфичен, чем CfnResource, и расширяет CfnElement, как это делает CfnParameter. CfnParameter не содержит элемент .ref, потому что это обобщение более низкого уровня, тогда для него потребуется.

Первоначально ответили на Github

...