Amazon web services aws cloudformation-在我的vpc中启动ec2实例

Amazon web services aws cloudformation-在我的vpc中启动ec2实例,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,如果我删除子网:!从EC2Instance条目中引用SubnetPublic,它工作正常 原因是什么 [完整代码] 明白了。这是因为子网是vpc的一部分,但您的安全组不是 如果您在vpc内创建安全组,它应该可以工作 您可以通过将VpcId参数设置为安全组来完成此操作 此外,还应该使用SecurityGroupId而不是SecurityGroups 希望这有帮助。我添加了VpcId:!将VPC引用到InstanceSecurityGroup:但仍然相同。参数groupName不能与参数subnet

如果我删除子网:!从EC2Instance条目中引用SubnetPublic,它工作正常

原因是什么

[完整代码]
明白了。这是因为子网是vpc的一部分,但您的安全组不是

如果您在vpc内创建安全组,它应该可以工作

您可以通过将VpcId参数设置为安全组来完成此操作

此外,还应该使用SecurityGroupId而不是SecurityGroups


希望这有帮助。

我添加了VpcId:!将VPC引用到InstanceSecurityGroup:但仍然相同。参数groupName不能与参数subnet Service一起使用:AmazonEC2;身份代码:400;错误代码:InvalidParameterComposition;请求ID:b736cf6d-35e5-49e7-b583-EE75370353B3更新了答案,您应该使用SecurityGroupID而不是SecurityGroupshappy来帮助;
  EC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: !Ref InstanceType
      SubnetId: !Ref SubnetAPublic
      SecurityGroups:
        - !Ref InstanceSecurityGroup
      KeyName: !Ref KeyName
      ImageId: !FindInMap 
        - AWSRegionArch2AMI
        - !Ref 'AWS::Region'
        - !FindInMap 
          - AWSInstanceType2Arch
          - !Ref InstanceType
          - Arch       
  InstanceSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: Enable SSH access via port 22
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: '22'
          ToPort: '22'
          CidrIp: !Ref SSHLocation
EC2Instance:
  Type: 'AWS::EC2::Instance'
  Properties:
    InstanceType: !Ref InstanceType
    SubnetId: !Ref SubnetAPublic
    SecurityGroupIds:
      - !Ref InstanceSecurityGroup
    KeyName: !Ref KeyName
    ImageId: !FindInMap 
      - AWSRegionArch2AMI
      - !Ref 'AWS::Region'
      - !FindInMap 
        - AWSInstanceType2Arch
        - !Ref InstanceType
        - Arch