0

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

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

4

1 回答 1

0

如果理解这一权利,您有 2 个用例:

  1. 从 s3 向用户显示图像
  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 操作。

希望有帮助

于 2013-10-01T08:32:58.877 回答