如何使用 CloudFormation 编辑 VPC 的默认网络 ACL?

Posted

技术标签:

【中文标题】如何使用 CloudFormation 编辑 VPC 的默认网络 ACL?【英文标题】:How to use CloudFormation to edit a VPC's default network ACL? 【发布时间】:2016-02-23 12:29:13 【问题描述】:

如果我在 CloudFormation 模板中声明以下资源,

"CoolVpc": 
  "Type": "AWS::EC2::VPC",
  "Properties": 
    "CidrBlock": "10.10.0.0/16",
    "Tags": [
      "Key": "Name", "Value": "cool-vpc",
    ]
  

... CloudFormation 将尽职尽责地创建我的 VPC,并且作为该过程的一部分,它将自动创建一个默认网络 ACL 以配合它。我可以使用 GetAtt 函数轻松引用该 ACL,例如:

"TestSubnetAcl": 
  "Type": "AWS::EC2::SubnetNetworkAclAssociation",
  "Properties": 
    "NetworkAclId": "Fn::GetAtt" : ["CoolVpc" , "DefaultNetworkAcl"],
    "SubnetId": "Ref": "TestSubnet"
  

"AclRule100": 
  "Type": "AWS::EC2::NetworkAclEntry",
  "Properties": 
    "CidrBlock": "0.0.0.0/0",
    "Egress": "true",
    "Protocol": "-1",
    "RuleAction": "allow",
    "RuleNumber": "100",
    "NetworkAclId": "Fn::GetAtt" : ["CoolVpc" , "DefaultNetworkAcl"]
  

...但是如果我想编辑默认网络 ACL 本身呢? (是的,我知道唯一可以更改的是Tags,但这正是我想要编辑的。)

我尝试在模板中添加一个新的 NetworkAcl 并且只使用它,但未命名的默认值一直存在,这让我很烦恼,我无法为其分配标签以明确其用途是。

【问题讨论】:

你有没有找到解决方案,因为这正是我现在想做的。 【参考方案1】:

简短的回答是:“你不能”

Cloud Formation 旨在管理和维护模板中声明的资源。 不能更改/删除不属于模板的资源。

因此,您可以在默认 nACL 中添加 nACL 规则,但 RuleNumber 不是 100。

Rgds

【讨论】:

以上是关于如何使用 CloudFormation 编辑 VPC 的默认网络 ACL?的主要内容,如果未能解决你的问题,请参考以下文章