如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

在 Cloudformation 模板中,我如何在 IoT Rule 中引用动态生成的 Lambda 函数 ARN?

CodePipeline CloudFormation 模板配置

透明视频,如何在每台设备上正确显示 webm 文件的 alpha 通道; VP9 还是 VP8 编码?

如何使用单个 cloudformation 模板创建多个 Elasticbeanstalk 环境

如何使用cloudformation创建ecs集群?

如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板