0

просмотрел все сообщения Google и не нашел ответа ... Или просто частичный без реального примера.параметров в вложенных стеках на amazon

Вот мой Stack:

{ 
    "Resources": { 
    "NestedStack": { 
     "Type": "AWS::CloudFormation::Stack", 
     "Properties": { 
     "TemplateURL": "https://xyz/json.template", 
     "Parameters" : { 
      "Sg1" : { "Ref": "Sg1"}, 
      "Sg2" : { "Ref": "Sg2"} 
     }, 
    "DependsOn": ["Sg1","Sg2"] 
    }, 
    "Sg1": { 
    "Type": "AWS_EC2_SecurityGroup", 
    ..... 
    }, 
    "Sg2": { 
    "Type": "AWS_EC2_SecurityGroup", 
    ..... 
    } 
} 

Вот мой вложенный шаблон стеки:

{ 
    "Resources": { 
    "flow1": { 
     "Type": "AWS::EC2::SecurityGroupIngress", 
     "Properties": { 
     "SourceSecurityGroupId": {"Ref": "Sg1"}, 
     "FromPort": "161", 
     "ToPort": "161", 
     "GroupId": {"Ref": "Sg2"}, 
     "IpProtocol": "tcp" 
     } 
    } 
} 

При развертывании всего стека через CloudFormation, все правильно создан, пока он не приходит к вложенной стеке и то я просто получаю это сообщение:

Template format error: Unresolved resource dependencies [Sg1,Sg2] in the Resources block of the template 

Пожалуйста, помогите, с полным примером чтобы избежать подобных случаев, которые я нашел в Google, где ответ предлагал решение, но так неясно, что следующие 20 человек должны были спросить то же самое: где и что?

Спасибо Су много, я провел на этом целый день уже ...

Майком

+0

Вы можете попробовать заменить "DependsOn": [ "SG1", "SG2"] с "DependsOn": [SG1, SG2] – error2007s

+0

Не требуется - The DependsOn правильно понят AWS, что подтверждается тем фактом, что SecurityGroups создаются полностью до начала создания стека. – Mike

ответ

1

Вам может понадобиться добавить раздел параметров к вложенному шаблону, например

{ 
    "Parameters" : { 
    "Sg1" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Description" : "cool beans" 
    }, 
    "Sg2" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Description" : "whatever" 
    } 
    }, 
    "Resources": { 
    "flow1": { 
     "Type": "AWS::EC2::SecurityGroupIngress", 
     "Properties": { 
     "SourceSecurityGroupId": {"Ref": "Sg1"}, 
     "FromPort": "161", 
     "ToPort": "161", 
     "GroupId": {"Ref": "Sg2"}, 
     "IpProtocol": "tcp" 
     } 
    } 
    } 
}