2016-10-19 1 views
2

Я пишу шаблон облачной информации в «новом» формате YAML, и я не уверен, как преобразовать операторы Ref, которые происходят в разделе UserDate. Данные в userdata представляют собой облачную конфигурацию для файлов ядра CoreOS. Шаблон отлично работает в JSON, но я не знаю, как структурировать оператор Ref в YAML.Справочная роль из UserData в шаблоне CloudAM YAML

В верхней части моего пользовательских данных раздела выглядит следующим образом:

UserData: 
    Fn::Base64: 
     !Sub | 

Это ссылается параметр, и он работает отлично

Environment=NRSYSMOND_license_key=${NewRelicLicenseKey} 

Это должно ссылаться на динамический IAM роли созданного шаблона , CF не кажется, чтобы поменять значение с идентификатором роли

Environment=IAM_ROLE=${InstanceRole} 

Это вызывает ошибку в CoreOS, потому что он не может разобрать переменную означает, что она не была выгружена

Environment=IAM_ROLE=${!Ref InstanceRole} 

Невозможно ли ссылаться на объекты, такие как роли из раздела userdata, если они были созданы в одном и том же CF-шаблоне? Замена работает отлично при использовании ресурсов AWS :: * или при использовании параметров.

+0

Я хотел бы тоже знаю –

ответ

2

Если у вас есть ресурс под названием InstanceRole, как показано ниже:

Resources: 
    InstanceRole: 
    Type: "AWS::IAM::Role" 
    Properties: 
     etcetc 

Вы должны быть в состоянии делать то, что вы предлагаете, но вы можете также передать значение Ref в переменную, могут быть замещены, как показано ниже. Немного более пространное объяснение в нижней части http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html

UserData: 
    Fn::Base64: 
     !Sub 
     - | 
     Environment=IAM_ROLE=${InstanceRole} 
     - InstanceRole: 
      Ref: InstanceRole 

Если вы даете InstanceRole ресурс свойство имя и ожидая, что будет возвращенное значение то, что не будет работать, AFAIK