0

Я не хочу создавать новые подсети и VPC, которые у меня уже есть, и я хочу, чтобы мой шаблон облачной информации их использовал.Как указать подсети и идентификаторы VPC в cloudformation?

В каком параметре я указываю это или я смущен относительно того, как это работает?

Когда я смотрю на документы для «AWS :: EC2 :: VPC» и «АМС :: EC2 :: подсеть», кажется, эти ресурсы только для создания новых VPCs и подсетей это правильно?

Должен ли я просто указывать ресурс экземпляра непосредственно на существующий VPC и подсеть, которые я хочу использовать?

Edit:

Например, если у меня есть ресурс экземпляра в моем шаблоне, и я указать его непосредственно к существующей подсети, например так:

{ 
    "Resources": { 
    "MyServer": { 
     "Type": "AWS::EC2::Instance", 
     "Properties": { 
     "InstanceType": { 
      "Ref": "InstanceType" 
     }, 
"SubnetId": { 
    "Ref": "subnet-abc123" 
}, 
... 

Я получаю эту ошибку при проверке шаблона:

Template contains errors.: Template format error: Unresolved resource dependencies [subnet-abc123] in the Resources block of the template 

Я попытался сделать это с помощью сопоставлений, но все еще получаю сообщение об ошибке. у меня есть это в отображениях:

"Mappings": { 
    "SubnetID": { 
     "TopKey": { 
     "Default": "subnet-abc123" 
     } 
    } 

И это ресурс экземпляра:

"SubnetId": { 
    "Fn::FindInMap": [ 
    "SubnetID", 
    { 
     "Ref": "TopKey" 
    }, 
    "Default" 
    ] 
} 

И я получаю эту ошибку при попытке проверить:

Template contains errors.: Template format error: Unresolved resource dependencies [TopKey] in the Resources block of the template 

ответ

2

Если вы хотите использовать конкретный VPC и подсети, просто вставьте их значения:

{ 
    "Resources": { 
    "MyServer": { 
     "Type": "AWS::EC2::Instance", 
     "Properties": { 
     "InstanceType": "t2.micro", 
     "SubnetId": "subnet-abc123", 
     "ImageId": "ami-abcd1234" 
     } 
    } 
} 

подсеть всегда принадлежит VPC, поэтому определение подсети автоматически выберет соответствующий VPC ,

2

Specify их в Parameters раздел и перечислите их в разделе Resources. CF позволит вам сначала выбрать VPC, а затем Подсеть.

"Parameters" : { 

    "VpcId" : { 
     "Type" : "AWS::EC2::VPC::Id", 
     "Description" : "VPCId of Virtual Private Cloud (VPC).", 
     "Default" : "" 
    }, 

    "VpcSubnet": { 
     "Description" : "SubnetId in VPC", 
     "Type" : "AWS::EC2::Subnet::Id", 
     "Default" : "" 
    }, 


    "Resources" : { 
    ... 
    "Ec2Instance" : { 
     "Properties" : { 
     "SubnetId" : { "Ref" : "VpcSubnet" }, 
+0

Но как я могу указать его на VPC и подсети, которые уже существуют? Я не вижу, где в вашем примере, где я могу подключить существующую подсеть и VPC-идентификаторы a la vpc-abc123 или подсеть-123456 – red888

+0

Вы укажете их как значения в параметре. Если вы попробуете это с помощью консоли AWS, пользовательский интерфейс фактически представит вам варианты в форме HTML. Просто дайте этому решению попробовать, и вы увидите, как это работает. –