2017-01-02 6 views
0

В моих вложенных стеков мне нужно использовать выходные значения и AWS :: CloudFormation :: Stack возвращает значения, какCloudFormation вложенных стека выходов в YAML

Fn :: GetAtt Outputs.NestedStackOutputName

Но YAML Безразлично» t позвольте мне использовать

!GetAtt MyResourceName.Outputs.MyOutputName 

, поскольку он пытается разбить их на 3 части вместо требуемого 2.

Я также попытался с помощью

Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ] 

, но затем я получаю

mapping values are not allowed here 
    in "<string>", line 21, column 24: 
     Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ] 

Так как я должен использовать это? Мне действительно нужно переключиться на json для этого?

ответ

2

Ваш вопрос обусловлен known bug в aws-cli «s обычай YAML-parsing code, который был добавлен недавно как часть команд aws cloudformation deploy и aws cloudformation package s.

Вопрос был исправлен в version 1.11.37 от aws-cli. Чтобы устранить проблему, вы можете выполнить одно из следующих действий:

  • Обновление aws-cli до версии 1.11.37 или выше.
  • Используйте aws cloudformation [create|update]-stack, чтобы создать/обновить стек вместо aws cloudformation [package|deploy], если вы не используете локальные артефакты.
+0

Напомнил об этой проблеме сегодня, и после некоторых исследований я обнаружил, что мой aws cli был старым, и эта проблема была исправлена. – Jeppz

+1

@Jeppz ah, дополнительный контекст, который вы получили эту ошибку от aws cli (а не от CloudFormation напрямую, как я предполагал) проясняет ситуацию! Обновлен мой ответ, чтобы описать ситуацию. – wjordan

1

Он работал для меня с помощью этих 2 стака:

root.yml:

AWSTemplateFormatVersion: '2010-09-09' 
Resources: 
    MyNestedStack: 
    Type: AWS::CloudFormation::Stack 
    Properties: 
     TemplateURL: https://s3.amazonaws.com/spg-test-bucket/cloudformation/nested.yml?versionId=HqlgDnuntMzkmK0398GPdJRUXMN_PMdn 
    RootBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     LoggingConfiguration: 
     DestinationBucketName: 
      Fn::GetAtt: [MyNestedStack, Outputs.NestedBucket] 

nested.yml:

AWSTemplateFormatVersion: '2010-09-09' 
Resources: 
    DataBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     AccessControl: LogDeliveryWrite 
Outputs: 
    NestedBucket: 
    Value: 
     Ref: DataBucket 
+0

Спасибо, это работает. Документация AWS действительно может отсутствовать, когда дело доходит до синтаксиса. – Jeppz

Смежные вопросы