代码之家  ›  专栏  ›  技术社区  ›  RustyShackleford

直接从URL下载zip文件需要什么bucket权限?

  •  0
  • RustyShackleford  · 技术社区  · 4 年前

    here https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt.zip ,我可以直接下载zip文件到本地。

    当我创建自己的zip文件URL时,我得到一个错误 BadZipFile: File is not a zip file

    我还确认了zip文件的格式是正确的使用终端: unzip -t zipfile.zip

    我需要在s3或s3对象上更改哪些权限才能直接从URL下载zip文件?

    对于iams3来说还是很新的权限和当前权限是创建bucket时的标准权限。

    2 回复  |  直到 4 年前
        1
  •  1
  •   John Rotenstein    4 年前

    amazons3中的对象是 默认为私有 . 这意味着它们不能被匿名URL访问(如您所示)。

    如果你想要一个特定的对象 (这意味着任何拥有URL的人都可以访问它),然后使用 S3管理控制台中的选项。也可以在上载对象时通过指定 ACL=public-read

    如果你想要一个完整的桶,或者特定的路径 桶策略 S3阻止公共访问

    也可以生成n Amazon S3 pre-signed URL ,它提供对私有对象的有时间限制的访问。预签名的URL添加了其他信息,这些信息授予访问私有对象的权限。这就是web应用程序如何向授权用户(如照片网站)提供对私有对象的访问。

    AWS Command-Line Interface (CLI) ,然后使用AWS凭据来标识用户。如果用户有访问该对象的权限,则可以下载该对象。此方法使用API调用而不是URL。

        2
  •  0
  •   Abderrahim Soubai-Elidrisi    4 年前

    两种解决方案:

    • 公开你的bucket/文件。检查 this

    `

    {
      "Version":"2012-10-17",
      "Statement":[
        {
          "Sid":"PublicRead",
          "Effect":"Allow",
          "Principal": "*",
          "Action":["s3:GetObject","s3:GetObjectVersion"],
          "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"]
        }
      ]
    }
    

    `

    var params = {Bucket: bucketname , Key: keyfile , Expires: 3600 , ResponseContentDisposition :  `attachment; filename="filename.ext"` };
    
    var url = s3.getSignedUrl('getObject', params);