使用 AWS CloudFormation 创建仅限 IPv6 VPC 子网时,堆栈创建失败并显示以下消息:
创建_失败
资源处理程序返回消息:“提供的请求无效:属性 CidrBlock 或 Ipv4IpamPoolId 不能为空。”
以下是 CloudFormation 模板的相关部分:
SubnetIpv6Only:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref CustomVPC
AvailabilityZone: !Select [0, !GetAZs '']
# ipv6-only
AssignIpv6AddressOnCreation: true
Ipv6CidrBlock: !Select [ 0, Fn::Cidr: [ !Select [ 0, !GetAtt CustomVPC.Ipv6CidrBlocks ], 4, 64 ] ]
VPC 子网状态的 CloudFormation docs
...如果 VPC 具有 IPv6 CIDR 块,您可以创建纯 IPv6 子网或 [...]。对于仅限 IPv6 的子网,请指定 IPv6 CIDR 块。 ...这似乎表明指定
Ipv6CidrBlock
without
CidrBlock
(ipv4) 应足以使子网成为“仅限 IPv6”。我做错了什么?
Ipv6Native: true
需要在子网属性中明确指定:
所以模板看起来像:Ipv6Native:指示这是否是仅 IPv6 的子网。 ...
SubnetIpv6Only:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref CustomVPC
AvailabilityZone: !Select [0, !GetAZs '']
# ipv6-only
AssignIpv6AddressOnCreation: true
Ipv6CidrBlock: !Select [ 0, Fn::Cidr: [ !Select [ 0, !GetAtt CustomVPC.Ipv6CidrBlocks ], 4, 64 ] ]
Ipv6Native: true # <-- new