首页 > 其他分享 >关于s3-bucket使用client.list_objects_v2列出所有的对象与指定目录下的所有对象

关于s3-bucket使用client.list_objects_v2列出所有的对象与指定目录下的所有对象

时间:2023-04-07 22:34:24浏览次数:51  
标签:s3 bucket list 对象 objects 目录

使用AWS SDK for Python (Boto3) 的 S3的client下的list_objects_v2, 可以列出一个s3 bucket 桶的所有对象,可以返回如下几个重要的字段的

Key, LastModified, ETag, Size, StorageClass 

实现的核心代码如下:

其中在编辑中,有几个说明如下:

1、Console页面上可以创建一个空的文件夹,这样在列出对象时,也是包括目录条目的,但是目录条目肯定是以/结尾的,而且大小为0

2、不能以大小判断是目录还是真正的文件对象,因为笔者测试,使用aws s3 cp 也成功上传了一个0大小的文件对象

3、笔者在console上测试了,将一个s3目录中的文件对象删除了,再返回时,目录也不存在了

4、不是所有的目录都会以对象的形式返回的,有的只会返回目录下的文件对象条目

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

另外,我们经常可能还会用到,只列出s3 bucket中的某个目录下的所有对象(包括子目录下的所有)

这时,就需要结合Prefix参数了,即先传入Bucket参数,再传入Prefix 参数

S3ObjectsResponse=S3client.list_objects_v2(Bucket='qq-5201351',Prefix='My-Note/linux/')

也有如下几个注意点:

1、Prefix不要包含s3 bucket的名称,从最前面的目录开始,可以以目录名/结尾,也可以以部分字符作为Prefix,去匹配符合条件的对象

2、如下代表的是列出My-Note/linux/下的所有对象(返回的数据,也是可能会包含目录条目的)

3、如果非常确定是 My-Note/linux/ 目录下的,那么最严谨的方式就是后面添加上 / 结尾 (因为在s3中的目录同级,是可以创建与目录同名的对象的)

 

最后,提醒一下,关于S3.Client.list_objects_v2(**kwargs) 的介绍中有提到 Returns some or all (up to 1,000) of the objects in a bucket with each request

因此如果bucket中的对象数太多,需要结合分页技术,才能得到全部的s3对象

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17297557.html

 

标签:s3,bucket,list,对象,objects,目录
From: https://www.cnblogs.com/5201351/p/17297557.html

相关文章

  • INFS3202 Web Information Systems
    SchoolofInformationTechnology&ElectricalEngineeringINFS3202/7202WebInformationSystems1of4INFS3202/7202WebInformationSystemsINFS3202/INFS7202WebInformationSystemsIn-classQuiz1:Thefollowingconditionsapplytothequiz:•Thequizco......
  • INFS3200 先进数据库系统
    INFS3200AdvancedDatabaseSystemsPrac2:DataWarehousing(5%)Semester1,2023Duetime:4:00pm,Friday,21April2023(Week8)Submission:Submityourworkonline(INFS3200CourseWebsite)1.Introduction1.1LearningobjectivesLearnhowtocreateacubean......
  • css3 箭头上下跳动
    .container.stepsItem.permit.permitStepItem.table.showTable{width:.37rem;margin:.20remauto;position:absolute;bottom:0;left:50%;margin-left:-.18rem;-webkit-animation:opener.5sease-in-outalternateinfinite;......
  • 019redis3.0集群删除节点
    1:如果删除的节点是主节点,这里我们删除192.168.2.20:7006节点,这个节点有1000个哈希槽首先要把节点中的哈希槽转移到其他节点中,执行下面的命令cd /usr/local/redis3.0/src./redis-trib.rb reshard 192.168.2.20:7000系统会提示我们要移动多少哈希槽,这里移动1000个,因为192.168.2.20......
  • 018redis3.0集群添加节点
    1:首先把需要添加的节点启动cd /usr/local/cluster/mkdir 7006cp /usr/local/cluster/redis.conf  /usr/local/cluster/7006/cd /usr/local/cluster/7006/vi redis.conf##修改redis.conf中的port参数的值为7006redis-server redis.conf2:执行以下命令,将这个新节点添加到集群......
  • 016redis3.0集群简介
    一、基本概念1、redis集群是一个可以在多个节点之间进行数据共享的设施。redis集群提供了以下两个好处1.1将数据自动切分(split)到多个节点1.2当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。2、一个Redis集群包含16384个哈希槽(hashslot),数据库中的每......
  • AVS3中的ESAO
    增强样点自适应补偿(EnhancedSampleAdaptiveOffset)是AVS3中新增的环路滤波技术,和SAO相比其更充分的考虑了纹理和边缘方向特征。ESAO是在整帧的层面是对所有像素进行分类,然后对每一类像素分别传输一个偏移量进行偏移补偿,偏移量在[-7,7]之间。亮度像素分类对于亮度像素首先按照两种......
  • 常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)
    常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)多使用帮助文档类型取值范围和默认值Math类:​ 概念:帮助我们进行数学计算的工具类,里面的方法都是静态的,所以无需实例化这个类​ 常用方法:​ abs::获取绝对值 absExact:获取绝对值 rou......
  • Arduino 外接 DS3132 读数为2165/165/165问题解决
    即使SCL/SDA不接线,DS3132也会返回,这个值为2165/165/165因此问题的来源为接线不牢靠。接线牢靠的标准:RTC模块(ZS-042)上的PWR灯应该常亮,并且亮度很大(我一开始接线,PWR亮度小,而且闪烁)RTC的SCL接Arduino的A4,SDA接Arduino的A5.The165indicatesthatthedatalinefor......
  • 纯CSS3实现多行文本截断
    纯CSS处理多行文本展开和收起,直接上代码和效果图1<html>2<header>3<style>4.wrap{5position:relative;6padding:5px25px25px;7border-radius:5px;8box-shadow:05px20px3px#cc......