AWS CloudFormation YAML 模板,!GetAtt 不返回值。堆栈构建错误:“属性‘DefaultNetworkAcl’不存在”

问题描述 投票:0回答:1

我正在使用 YAML 在 AWS 中构建一个小型 CloudFormation 版本。目前,我已经创建了一个 VPC 和一个子网。我尝试的第一个过程是在创建 VPC 时修改创建的 NACL 上的入站和出站规则。这就是我遇到问题的地方。以下是正在使用的 YAML 模板:

Resources:
  InboundRule:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !GetAtt CSETrainingSubnet.NetworkAclAssociationId
      RuleNumber: 1
      Protocol: -1
      RuleAction: deny
      CidrBlock: 0.0.0.0/0
  OutboundRule:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !GetAtt CSETrainingSubnet.NetworkAclAssociationId
      RuleNumber: 1
      Protocol: -1
      Egress: true
      RuleAction: deny
      CidrBlock: 0.0.0.0/0
  CSETrainingVPC:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 10.146.0.0/16
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
      Tags:
        - Key: Name
          Value: Training VPC
  CSETrainingSubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref CSETrainingVPC
      CidrBlock: 10.146.1.0/24
      AvailabilityZone: us-east-1a
      Tags:
        - Key: Name
          Value: CSETrainingSubnet
Outputs:
  DefaultNetworkACLID:
    Description: "ID of Training VPC Network ACL"
    Value: !GetAtt CSETrainingSubnet.NetworkAclAssociationId

问题是当我在 InBoundRule OutBoundRule 和输出下调用“!GetAtt CSETrainingSubnet.NetworkAclAssociationId”时,出现以下错误:“属性‘NetworkAclAssociationId’不存在。”(也显示在屏幕截图中) enter image description here

同样属性“NetworkAclAssociationId”不存在。无论我使用子网关联还是 VPC.DefaultNetworkAcl 关联调用 !GetAtt,都会生成错误。

我还附上了一张屏幕截图,显示 NACL 确实存在,以及 VPC 和子网。

enter image description here

根据 ChatGPT 的建议,我尝试从子网创建中获取关联,而不是从 VPC 创建中获取关联,但这没有帮助。在其他一切完成后,我还尝试从输出区域获取关联,但我仍然收到相同的错误消息。

我唯一没有尝试过的是可能发出等待命令,因为这是我能想到的唯一的其他事情。我没有成功地研究这个确切问题的主题,其中成功创建资源后 !getAtt 不起作用。

amazon-web-services yaml aws-cloudformation aws-network-acl
1个回答
0
投票

上述问题的答案“属性‘DefaultNetworkAcl’不存在”“属性‘NetworkAclAssociationId’不存在。”我的 Cloudformation 使用的 IAM 角色缺少以下权限: “ec2:描述网络Acls” “ec2:创建网络Acl条目”

如果您想要最低权限,这些是必要的,并且没有通过错误消息很好地指示。我想我会尝试使用管理员角色进行测试,使用管理员角色后,问题得到解决。因此,必须找到正确的权限来添加。

© www.soinside.com 2019 - 2024. All rights reserved.