我正在尝试运行Cloudformation模板来创建私有API网关,但出现空值错误,无法弄清原因,
以下是我正在尝试使用的模板-
AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::Serverless-2016-10-31'
Description: Api Template Stack
Parameters:
VpcId:
Type: String
Default: "vpc-xxxxxx"
Resources:
PrivateGateway:
Type: 'AWS::ApiGateway::RestApi'
Properties:
Name: 'private-gw'
EndpointConfiguration:
Types:
- PRIVATE
Policy: !Sub |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:${AWS::AccountId}:*/*/*/*",
"Condition": {
"StringNotEquals": {
"aws:sourceVpc": !Ref VpcId
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:${AWS::AccountId}:*/*/*/*"
}
]
}
错误-
[/Resources/PrivateGateway/Properties] 'null' values are not allowed in templates
答案 0 :(得分:1)
据我所知,这似乎是Yaml解析错误,而不是CloudFormation错误。
由于这是一个Yaml模板,因此受yaml specification约束。
每个节点必须比其父节点缩进更多。所有同级节点必须使用完全相同的缩进级别。但是,每个同级节点的内容可以独立地进一步缩进。
在您的示例中,Properties
下的节点没有进一步缩进,因此它们不被视为该节点的子节点,而是同级节点。这很可能是您收到“空”值消息的原因,因为Properties
节点被视为“空”或“空”。
尝试在“属性:”行下的每一行开头添加两个空格。这样会将Name
,EndpointConfiguration
和Policy
之类的节点作为Properties
节点的子节点。
答案 1 :(得分:0)
能够使用花括号替换策略中的VpcId来解决它-
Promise