我有一个 REST API Lambda 函数部署到一个私有(private)子网,其中 API Gateway 类型是私有(private)的。关注 this我已经为私有(private) API 网关设置了一个 vpc 端点,连接到与 lambda 函数私有(private)子网相同的 vpc 的两个公共(public)子网。 vpce 对应的安全组允许所有流量。
如果我尝试从公有子网中的 EC2 实例查询 API 端点,我会收到以下错误:
anonymous is not authorized to perform: execute-api:Invoke on the resource.
我找不到问题,因为私有(private) API 网关的资源策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-central-1:xxxxxxx:xxxxxx/*",
"Condition": {
"StringEquals": {
"aws:sourceVpce": "vpce-xxxxxxxx"
}
}
}
]
}
我错过了什么?
最佳答案
实际上,@peterhack 所说的也是我的答案。
使用提供的模板“VPC 白名单”与所有占位符是问题:
...xxx:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}
替换为
...xxx:*/*
修复
关于amazon-web-services - AWS 匿名无权执行 : execute-api:Invoke on resource. Private API Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405215/