amazon-web-services - 端点类型为 PRIVATE 的 Api 未定义资源策略

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

我正在设置私有(private) AWS API 网关,并配置了资源策略以允许所有流量,如下所示。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:*",
            "Resource": "arn:aws:execute-api:*:*:*"
        }
    ]
}

我在 PrincipalActionResource 中应用了通配符,但是,我收到 403 Forbidden 错误。此外,即使我为私有(private) API 配置了资源策略,CloudWatch 仍会记录错误 Api with endpointType PRIVATE has no resourcespolicy Defined

我关注了this guide to setup resource policy ,但我做错了什么吗?或者,错误消息是否还有其他含义?

最佳答案

事实上,您的 cloudwatch 日志记录显示“端点类型为 PRIVATE 的 Api 未定义资源策略”,这表明它没有看到您已保存资源策略或尚未 deployed the API资源政策发生变化后?

另请注意,策略中的资源是指允许主体访问的资源(换句话说,即应用策略的 API)。对于我的测试,我这样做了,并且在部署 API 后效果很好:


    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:us-west-2:ACCID:APIID/*/*/*"
            }
        ]
    }

注意:您需要相应地设置 ACCID 和 APIID。

关于amazon-web-services - 端点类型为 PRIVATE 的 Api 未定义资源策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084964/

相关文章:

amazon-web-services - 具有 CloudFormation 的 AWS SSM 参数存储

amazon-web-services - 为 Elastic Beanstalk 创建 AWS 服务代理 | API网关

java - AmazonCloudWatchClient 不发送 HTTP 请求

amazon-web-services - 我们如何限制 IAM 用户仅通过 Cloudformation 启动 EC2 实例和 VPC?

amazon-web-services - AWS Golang S3管理器上传: Access denied

caching - Cloudfront私有(private)内容+签名url架构

aws-lambda - 使用 Lambda Authorizer 结果转换上游请求查询参数

amazon-web-services - 如何覆盖发送到 aws api 网关的请求 ID

amazon-web-services - 从 Lambda 函数安排的 CloudWatch 事件

amazon-web-services - docker 容器中的 AWS Cloudwatch 代理