amazon-web-services - AWS 匿名无权执行 : execute-api:Invoke on resource. Private API Gateway

标签 amazon-web-services aws-api-gateway amazon-vpc

我有一个 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/

相关文章:

amazon-web-services - API 网关更改端点 URL

amazon-web-services - 使用 Cloudformation SAM 的 AWS::Serverless::Api 资源策略

javascript - 为 aws lambda 函数传递查询参数

amazon-web-services - 如何将AWS CDK打包到Lambda层?

amazon-web-services - 如何验证跨账户AWS S3存储桶是否存在?

javascript - DynamoDB 重新映射列表属性项查询

amazon-web-services - 通过cloudformation创建VPC时的子网问题

amazon-web-services - AWS 云信息

amazon-web-services - 适用于 VPC/VPN 的 AWS Cloudfront

python - Elasticsearch - field_value_factor,缺少参数