【问题标题】:Getting 'Property IpProtocol cannot be empty' error while creating security group using cloud formation使用云形成创建安全组时出现“属性 IpProtocol 不能为空”错误
【发布时间】:2019-04-12 23:21:23
【问题描述】:

我正在 AWS 上使用云形成创建一个基本安全组,但我收到 Property IpProtocol cannot be empty. 错误。以下是我正在运行的 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 命令时,它运行成功,但堆栈以 CREATE_FAILED 状态回滚,并且 Property IpProtocol cannot be empty 错误。我在这里做错了什么?

【问题讨论】:

  • 您好,您确定此错误与此安全组有关吗? CloudFormation 中没有其他 SG 吗?
  • 谢谢,我解决了这个问题。我会尽快发布答案。

标签: amazon-web-services amazon-cloudformation aws-security-group


【解决方案1】:

我解决了这个问题。要添加安全组,我们必须创建一个 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 

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是代码中的错误之一,但不是问题中提到的错误的原因。我已经发布了解决方案。
    猜你喜欢
    • 2020-01-24
    • 2020-01-11
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2019-09-14
    相关资源
    最近更新 更多