使用boto3访问s3存储桶中的特定密钥

时间:2018-03-24 22:25:01

标签: amazon-s3 boto3

我正在尝试使用boto3访问我的s3存储桶中的特定对象进行删除。

以下代码来自boto3文档。 https://boto3.readthedocs.io/en/latest/guide/migrations3.html#accessing-a-bucket

# Boto 3
for key in bucket.objects.all():
    key.delete()

很棒,但我宁愿有一个字典引用然后迭代对象。这在扩展方面并不是最大的。

有没有办法用它的键抓取一个对象?

编辑:

我尝试了这个,但它没有用。浏览对象集合管理器。

s3 = boto3.resource('s3')
bucket = s3.Bucket(AWS_UPLOAD_BUCKET)
key = bucket.objects.get(key = venueobjects3key)

2 个答案:

答案 0 :(得分:0)

看起来这是不可能的。这是过滤代码。我更容易迭代键并找到我想要的那个。跛。

过滤     某些集合支持额外的参数来过滤返回的数据集,这些参数将传递到基础服务操作中。使用filter()方法过滤结果:

# S3 list all keys with the prefix 'photos/'
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
    for obj in bucket.objects.filter(Prefix='photos/'):
        print('{0}:{1}'.format(bucket.name, obj.key))

答案 1 :(得分:0)

使用以下代码,我认为它将为您提供帮助

S3 = boto3.client(
    's3',
    region_name = 'us-west-2',
    aws_access_key_id = AWS_ACCESS_KEY_ID,
    aws_secret_access_key = AWS_SECRET_ACCESS_KEY
)
#Create a file object using the bucket and object key. 
fileobj = S3.get_object(
    Bucket=<Bucket_Name>,
    Key=<Key_Name>
    ) 
# open the file object and read it into the variable filedata. 
fileData = fileobj['Body'].read()
print(fileData)