使用云形成创建安全组时出现 'Property IpProtocol cannot be empty' 错误

Getting 'Property IpProtocol cannot be empty' error while creating security group using cloud formation

我正在 AWS 上使用云形成创建基本安全组,但我收到 属性 IpProtocol cannot be empty. 错误。以下是我运行ning:

的yml代码
Resources:
    testsecuritygroup:
    Type: AWS::EC2::SecurityGroup
    Properties: 
      GroupName: test-group
      GroupDescription: test security group
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
        - SourceSecurityGroupId: sg-xxxxxxxxxx
      SecurityGroupEgress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0
      Tags:
        - Key: group
          Value: test
      VpcId: !ImportValue VPC

当我 运行 create-stack 命令时,它 运行ning 成功但堆栈回滚 CREATE_FAILED 状态和 属性 IpProtocol cannot be empty 错误。我在这里做错了什么?

您的 cidr 无效。应该是 0.0.0.0/0

我解决了这个问题。要添加安全组,我们必须创建一个 Ingress 规则并将其附加到安全组,而不是在安全组中定义它。

Resources:
    test:
    Type: AWS::EC2::SecurityGroup
    Properties: 
      VpcId: !ImportValue VPC
      GroupName: test-group
      GroupDescription: test security group
      SecurityGroupEgress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
      Tags:
        - Key: group
          Value: test
  TestInboundRule:
    Type: AWS::EC2::SecurityGroupIngress
    Properties: 
      GroupId: !GetAtt test.GroupId
      IpProtocol: tcp
      FromPort: 80
      ToPort: 80
      SourceSecurityGroupId: sg-xxxxxxxxx