2016-10-01 5 views
1

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

У меня есть следующий параметр, чтобы получить список с подсетями:

"Subnet": { 
    "Description": "Subnet to put Instance", 
    "Type": "AWS::EC2::Subnet::Id", 
}, 

У меня есть следующий reosurce создать группу безопасности:

"InstanceSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "GroupDescription": "Enables access to instance by port 80", 
     "SecurityGroupIngress": [ 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "80", 
      "ToPort": "80", 
      "CidrIp": { 
       "Ref": "ClientCIDR" 
      } 
      } 
     ] 
     }, 

И у меня есть следующий ресурс для создания экземпляра:

"WebServer": { 
    "Type": "AWS::EC2::Instance", 
    "Properties": { 
    "IamInstanceProfile": "access-profile", 
    "SecurityGroupIds": [ 
     { "Fn::GetAtt": [ 
      "InstanceSecurityGroup", 
      "GroupId" 
     ] 
     } 
    ], 
    "SubnetId": { 
     "Ref": "Subnet" 
    }, 

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

Security group sg-**** and subnet subnet-**** belong to different networks. 

Пожалуйста, помогите решить эту проблему ..

ответ

2

The AWS::EC2::Subnet вашего добавление к AWS::EC2::Instance находится в другом AWS::EC2::VPC к AWS::EC2::SecurityGroup.

При создании InstanceSecurityGroup ресурса вы должны использовать свойство AWS::EC2::SecurityGroupVpcId создать AWS::EC2::SecurityGroup в частности AWS::EC2::VPC. Документация для этого свойства состояний

VpcId

The physical ID of the VPC. Can be obtained by using a reference to an AWS::EC2::VPC, such as: { "Ref" : "myVPC" }.

For more information about using the Ref function, see Ref.

Required: Yes, for VPC security groups

Вашего аккаунта использует EC2-VPC, вы можете только опустить параметр VpcId, если вы используете ec2-классический, here are the differences между ec2-классическая и ec2-VPC.

Облако Шаблоны Формирование может принимать АМС Конкретные Parameter Типа AWS::EC2::VPC::Id например

"VPCId": { 
    "Type": "AWS::EC2::VPC::Id" 
    "Description": "The VPC Id to where this instance is being created" 
} 

и это Parameter может использовать внутреннюю Ref function для ссылки на VPCId параметр в AWS::EC2::SecurityGroup

"InstanceSecurityGroup": { 
    "Type": "AWS::EC2::SecurityGroup", 
    "Properties": { 
     "GroupDescription": "Enables access to instance by port 80", 
     "VPCId": { 
      "Ref": "VPCId" 
     }, 
     "SecurityGroupIngress": [ 
      { 
       "IpProtocol": "tcp", 
       "FromPort": "80", 
       "ToPort": "80", 
       "CidrIp": { 
        "Ref": "ClientCIDR" 
       } 
      } 
     ] 
    } 
} 
+0

Отлично! оно работает! – BigBoss