【发布时间】:2021-04-15 17:57:53
【问题描述】:
我想建立一个只能通过 API Gateway 访问的静态 S3 网站,所以我所做的是。
S3 端
1. 在 S3 存储桶上启用静态网站托管。
2. 阻止所有公共访问。
3. 放入只允许我的 VPC Endpoint 访问它的存储桶策略。
{
"Version": "2012-10-17",
"Id": "VPCe",
"Statement": [
{
"Sid": "VPCe",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket.com/*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-my-vpce"
}
}
}
]
}
API 网关端
1. 将相同的 VPCE 映射到 API
2.创建代理资源
3. 在集成请求中,我将其设为 HTTP,并将我的 S3 网站 URL 作为端点 URL,内容处理作为 passththrough。
4. 但是当我通过 APIGW 进行测试时,访问被拒绝。
我是否缺少某些东西,或者我期望它起作用是错的?
我收到 403,访问被拒绝。
【问题讨论】:
-
“将同一个 VPCE 映射到 API”是什么意思?
-
私有 API,我将它放在端点配置下的设置中 -> 私有并使用该 VPCE Id
-
好的,我认为您在这种情况下误解了 VPCE。存储桶策略中的条件键
aws:SourceVpce的值是S3 VPC 终端节点资源的ID。但是,在 API 网关的端点配置下配置的是execute-apiAPI 网关的接口 VPC 端点。这两个 ID 指的是不同的东西。
标签: amazon-web-services amazon-s3 aws-api-gateway