基本上我将我的图像存储在S3的桶中。但是我在麻烦政策中遇到了什么问题。我想知道我的下面的一个桶是什么
A)正确 B)安全
目标:从我的[app server]
中读取/显示图像{
"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]"
}
}
}
]
}
我希望能够从存储桶中读取,写入和删除资产。
答案 0 :(得分:0)
如果站在正确的位置,你有2个用例:
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 sdk作为CRUD操作的编程语言。
希望有所帮助