我正在尝试部署 vuejs / frontend&使用 zappa 使用 AWS Lambda django (python)/ backend webapp。我在S3存储桶中拥有所有静态文件。 每当我尝试在浏览器中查看它时,页面都是空白的,我在控制台中收到这些错误:
GET https://example.s3.amazonaws.com/static/webpack_bundles/static/js/app.3122315aa5664adf.js 403(禁止)
获取https://example.s3.amazonaws.com/static/webpack_bundles/static/css/app.b161c29d6c5fa852dc6887b62955427e6.css net :: ERR_ABORTED
获取https://7exa5465ef451.execute-api.us-east-1.amazonaws.com/favicon.ico 403()
答案 0 :(得分:0)
默认情况下,出于安全原因,S3不允许公开访问其内容。有多种方法可以通过设置每个单独对象的公共权限或应用存储桶策略来更改它。
https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html有关于如何控制对S3的访问权限的其他详细信息。
特定的公共存储桶策略示例如下所示:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
一般情况下,我建议通过Cloudfront提供网站数据,在这种情况下,您可以明确允许Cloudfront使用
等策略访问S3数据{
"Version":"2012-10-17",
"Id":"PolicyForCloudFrontPrivateContent",
"Statement":[
{
"Sid":" Grant a CloudFront Origin Identity access to support private content",
"Effect":"Allow",
"Principal":{"CanonicalUser":"79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"},
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::example-bucket/*"
}
]
}