S3新手,不知道我的Bucket Policy中要放什么

时间:2013-10-01 07:43:06

标签: amazon-web-services amazon-s3 amazon-iam

基本上我将我的图像存储在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]"
                }
            }
        }
    ]
}

我希望能够从存储桶中读取,写入和删除资产。

1 个答案:

答案 0 :(得分:0)

如果站在正确的位置,你有2个用例:

  1. 从s3
  2. 向您的用户展示图片
  3. 从您的应用上传,删除和更改图片。
  4. 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操作的编程语言。

    希望有所帮助