我有两个 Cloudformation 文件用于制作两个不同的堆栈,每个堆栈都包含一个 VPC。一个是管理 VPC,它将用于通过 ssh 访问另一个 VPC 以及所有这些,典型的堡垒用例。
我启动了管理 VPC,然后将其 ID 作为参数传递到第二个 CF 文件中,具体使用 VPC Id 类型:
"AdminVPC": {
"Description": "ID of the admin VPC",
"Type": "AWS::EC2::VPC::Id"
}
但是当我尝试设置 VPC 的网络 ACL 时,我正在做
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": {
"Fn::GetAtt": [
{
"Ref": "AdminVPC"
},
"CidrBlock"
]
},
其中,当我运行 ecs cf validate 时,只产生消息
An error occurred (ValidationError) when calling the ValidateTemplate operation: Internal Failure
如果我只是在 CIDR 块中硬编码,它就可以正常工作
"CidrBlock": "0.0.0.0/0",
但是文档声称:
- 使用 GetAtt 从 vpc ID 中获取 CIDR 块应该可以工作
- 对于 Fn::GetAtt 属性名称,您可以使用 Ref 函数。
所以我不确定这种用法有什么问题......