Pet*_*ack 5 amazon-web-services amazon-vpc aws-api-gateway
我将 REST API Lambda 函数部署到私有子网,其中 API 网关类型为私有。在此之后,我设置了一个 vpc 端点到私有 API 网关,连接到与 lambda 函数私有子网相同的 vpc 的两个公共子网。vpce 对应的安全组允许所有流量。
如果我尝试从公有子网中的 EC2 实例查询 API 端点,我会收到以下错误:
anonymous is not authorized to perform: execute-api:Invoke on the resource.
Run Code Online (Sandbox Code Playgroud)
我找不到问题,因为私有 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"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我已经审阅了您提供的文档以及您所写的内容。我相信我找到了您访问问题的原因。
\n\n正如您提到的,您在公共子网中创建了一个 EC2 实例。默认情况下,该子网将有一个可用的互联网网关,因此实际上您的 VPC 终端节点不会用于访问私有 API 网关。在文档中他们还说了以下内容;
\n\n\n\n\n为了强调此 API 的 \xe2\x80\x9cprivateness\xe2\x80\x9d,请从传统网络意义上仅存在于您的 VPC 内部且无法直接通过网络访问的资源来测试它。
\n
假设您的策略正确,资源块中使用了正确的区域并且您的 vpc 终端节点 ID 正确,您只需在私有子网内启动另一个 ec2 实例即可。然后以下过程应该起作用;
\n\n| 归档时间: |
|
| 查看次数: |
6148 次 |
| 最近记录: |