【问题标题】:python boto - AWS S3 access without a bucket namepython boto - 没有存储桶名称的 AWS S3 访问
【发布时间】:2021-09-12 05:17:56
【问题描述】:

我有存储在 AWS S3 上的数据集的凭据(“aws 访问密钥”、“aws 密钥”和路径)。我可以使用 Cyber​​Duck 或 FileZilla Pro 访问数据。

为此,我想自动化数据获取阶段并使用 boto2 附带的 Python/Anaconda。

我没有“存储桶”名称,只有 /folder1/folder2/folder3 形式的路径,而且我找不到使用 API 访问没有“存储桶名称”的数据的方法。

有没有办法以编程方式访问 S3 而没有“存储桶名称”,即使用路径代替?

谢谢

【问题讨论】:

  • 在不知道存储桶名称的情况下无法访问对象。尝试挖掘 Cyber​​Duck 或 FileZilla Pro 以查找存储桶名称。
  • 请强烈考虑使用 boto3,因为 boto 没有维护,并且在三年前发布了最新版本。
  • 如果你的路径看起来像s3://foo/bar,那么第一个参数其实就是bucket名称:s3://bucket-name/folder/object
  • 我的意思是,如果连接字符串以s3://开头,那么下一个元素就是桶名。
  • 我建议桶名是你给定路径的第一个路径:s3.amazon.com/bucket-name/path/object

标签: python amazon-s3 path boto bucket


【解决方案1】:

s3 没有典型的本机目录/文件夹结构,而是使用键定义的。如果 URL 以 s3://dir_name/folder_name/file_name 开头,则表示 dir_name 只是一个存储桶名称。如果您不确定存储桶名称但有 s3 访问参数和路径,那么您可以

  1. 列出所有可用的 s3_buckets -

    s3 = boto3.client('s3')

    响应 = s3.list_buckets()

  2. 对每个存储桶递归使用 s3.client.head_object() 方法,并以您的路径为键。

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多