>基本上,我将图像存储在 S3 上的存储桶中。但是我在存储桶策略中放置什么时遇到了麻烦。几乎我想知道我的一个桶下面有什么是
A) 正确B) 安全
目标: 从我的 [应用服务器] 读取/显示图像
{
"Version": "2008-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPDeny",
"Effect": "Allow",
"Principal": {
"Federated": "accounts.google.com"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::submissionthumbs/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "[APPIP]"
}
}
}
]
}
我希望能够从存储桶中读取、写入和删除资产。
如果在站立这个权利下,你有 2 个用例:
- 从 s3 向用户显示图像
- 从您的应用程序上传、删除和更改图像。
1:为此,您需要使您的存储桶或其部分公开可读。
例如,这作为存储桶策略将使存储桶的内容公开可读
{
"Version": "2008-10-17",
"Statement": [{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": { "AWS": "*" },
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::submissionthumbs/*" ]
}]
}
但是,您可能想看看亚马逊CloudFront,它是为您提供图像的亚马逊CDN。在 CloudFront 中,您可以将 s3 存储桶添加为源。
2:要更新上传等,您应该从"IAM"创建一个新的"用户",并授予他对存储桶的读写访问权限。尽量限制权限。例如
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Sid": "AllowReadWriteApp",
"Resource": ["arn:aws:s3:::submissionthumbs/*" ]
"Effect": "Allow"
}
]
}
然后使用您最喜欢的 aws 开发工具包作为您的编程语言进行 CRUD 操作。
希望有帮助