boto3连接aws的s3及注意事项

你的点赞与评论是我最大的创作动力!

在这里插入图片描述

文章

boto3文档:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html
boto3的连接的高级接口有几个,分别是:boto3.client()、boto3.resource()

Client级别的接口则是返回Dictionary来表示查询到的资源信息。而Resource级别的接口是对Client级别的接口进行了面向对象的封装,接口的返回值大部分都是Resource对象(如果返回值是某个Resource的信息的话),我们可以对返回的对象再进行操作(比如删除,修改等)。

boto3的连接的低级接口: boto3.session(), boto3.Session

下面我讲我经常用的boto3.resource()的用法:

import boto3
s3 = boto3.resource(service_name='s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name='cn-north-1')

参数的意义:

  • service_name:连接亚马逊服务的名称,这里就是连接aws的s3服务,默认为s3
  • aws_access_key_id:连接s3服务的密钥Id
  • aws_secret_access_key:连接s3服务的密钥key
  • region_name:连s3服务的区域名称

注意:

  • 实际生产环境region_name一定要准确填写,不然连接不上又比如:cn-north-1。

当我们连上以后想查看一下有多少个bucket,可以使用下面方法:

for bucket in s3.buckets.all():
    print(bucket.name)

当想查看某一个bucket的key结构(可以看成路径结构)的时候,使用下面的办法:

# bucket_name为桶的名称
for page in s3.Bucket(bucket_name).objects.pages():
    print(page)
    for obj in page:
        print(obj.key)

当需要下载时:

# key为上面输出的key,及为一个文件的唯一标识,path为你本地存储的路径
s3.Bucket(bucket_name).download_file(key, path)

如果你想要本地存储像key值一样的路径,可参考下面的办法:

  • 可以先判断key每一级路径是否存在,不存在使用os模块创建。最后使用上面的下载方法。
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子园

期待你的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值