如何使用Apache Libcloud在Amazon S3上列出给定密钥中的所有内容?

时间:2019-02-12 08:40:02

标签: python python-3.x amazon-s3 libcloud

使用boto3列出S3中内容的代码是已知的:

self.s3_client = boto3.client(
            u's3', 
            aws_access_key_id=config.AWS_ACCESS_KEY_ID, 
            aws_secret_access_key=config.AWS_SECRET_ACCESS_KEY, 
            region_name=config.region_name, 
            config=Config(signature_version='s3v4')
            )
        versions = self.s3_client.list_objects(Bucket=self.bucket_name, Prefix=self.package_s3_version_key)

但是,我需要使用libcloud列出S3上的内容。我在文档中找不到它。

1 个答案:

答案 0 :(得分:0)

如果您只是在寻找特定存储桶的所有内容:

from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver

client = driver(StoreProvider.S3)
s3 = client(aws_id, aws_secret)

container = s3.get_container(container_name='name')
objects = s3.list_container_objects(container)

s3.download_object(objects[0], '/path/to/download')

结果objects将包含该存储桶中所有键的列表,并带有文件名,字节大小和元数据。要下载,请使用完整的libcloud Object和您的文件路径在s3上调用download_object方法。

如果您希望获取所有存储桶中的所有对象,请将无参数的get_container更改为list_containers

所有驱动程序方法的信息:https://libcloud.readthedocs.io/en/latest/storage/api.html
特定于s3的简短示例:https://libcloud.readthedocs.io/en/latest/storage/drivers/s3.html