当前位置: 首页 > 知识库问答 >
问题:

如何在不列出存储桶的情况下将文件上传到Amazon S3

谯灿
2023-03-14

我正在使用带有S3桶策略的Angular前端将文件上传到S3,如下所示:

{
  "Id": "Policy1499245520254",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1499245493674",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::test-dev/*",
                "arn:aws:s3:::test-dev"],
      "Principal": "*"
    }
  ]
}

但如果我将上述政策更改为

{
  "Id": "Policy1499245520254",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1499245493674",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::test-dev/*",
                "arn:aws:s3:::test-dev"],
      "Principal": "*"
    },
    {
      "Sid": "Stmt1499245517941",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::test-dev",
      "Principal": "*"
    }
  ]
}

在那里我添加了:

{
      "Sid": "Stmt1499245517944",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::test-dev",
      "Principal": "*"
 }

添加桶列表拒绝,上传失败。无论如何,我可以在没有列出桶的情况下上传文件。

共有2个答案

百里智勇
2023-03-14

这是因为s3: ListBucket操作涵盖GET Bucket(List Object)和HEAD Bucket操作。HEAD Bucket操作确定存储桶是否存在并且您有权访问它,这似乎是在对对象进行任何操作之前调用的(例如s3: PutObject操作)。请参阅在策略中指定权限。

乌翔
2023-03-14
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:GetObjectACL",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::test-dev",
                "arn:aws:s3:::test-dev/*"
            ]
        }
    ]
}

我仅仅通过允许这些权限就解决了这个问题,显然这里不需要存储桶列表,并且解决了这个问题。

 类似资料:
  • 如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。

  • 有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?

  • 问题内容: 我想使用python复制s3存储桶中的文件。 例如:我的存储桶名称=测试。在存储桶中,我有2个文件夹名称为“ dump”和“ input”。现在,我想使用python将文件从本地目录复制到S3“转储”文件夹…有人可以帮助我吗? 问题答案: 尝试这个… [更新]我不是pythonist,所以感谢您对import语句的注意。另外,我不建议将凭证放在您自己的源代码中。如果您在AWS内部运行此

  • 问题内容: 如何从命令外壳中获得与.zip文件(而不是gzip)的等价形式,而无需将其解压缩?也就是说,如何列出.zip压缩文件中压缩的不同文件? 问题答案: Perreal的答案是正确的,但我建议安装工具(在发行版的软件包管理器中查找)。然后,对于任何类型的存档文件,bzip2,gzip,tar …,您只需记住一个命令:

  • 在C语言中,我可以用和调用来创建新文件,当且仅当当前没有同名文件时。我还没能在哈斯克尔找到这样做的方法。我更喜欢提供的友好的东西,最好是为我完成所有棘手的异常处理。(我不一定期望它能正确地为我完成,但那是另一回事。)