AWS Boto3 S3对象上传与下载
什么是 Amazon S3?
1.Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。
Boto3API文档
2.python中使用
import logging
import tracebackimport boto3
import botocore
from boto3.session import Session
from botocore import client
from botocore.exceptions import ClientErrorlogger = logging.getLogger('info')class AmazonS3Util:def __init__(self, aws_access_key_id, secret_access_key, region_name):self.access_id = aws_access_key_idself.access_secret = secret_access_keyself.region_name = region_namesession = Session(aws_access_key_id=aws_access_key_id,aws_secret_access_key=secret_access_key,region_name=region_name)self.client_conn = boto3.client('s3',aws_access_key_id=aws_access_key_id,aws_secret_access_key=secret_access_key,config=botocore.client.Config(signature_version='s3v4'),region_name=region_name)self.session_conn = session.resource('s3')def upload_file_obj(self, bucket, file_key, file_obj, extra_args=None):"""对象上传至S3存储桶https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.upload_file@param bucket: 存储桶名称-必须@param file_key: 需要上传文件路径+文件名称@param file_obj: 文件对象@param extra_args: 额外参数 如ACL配置@return: 当上传成功时为True;否则,False"""try:session = self.session_connbucket = session.Bucket(bucket)obj = bucket.Object(file_key)obj.upload_fileobj(file_obj, ExtraArgs=extra_args)return Trueexcept Exception as e:print(e.args)ex = traceback.format_exc()print('具体错误{}'.format(ex))return Falsedef generate_file_obj_url(self, bucket, file_key):"""生成对象URLhttps://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.generate_presigned_url@param bucket: 存储桶名称@param file_key: 文件名称@return: url"""response_url = self.client_conn.generate_presigned_url(ClientMethod='get_object',Params={'Bucket': bucket,'Key': file_key})return response_urldef delete_obj(self, bucket, file_key):"""删除对象https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.delete@param bucket: 存储桶@param file_key: 文件名称@return: 当删除成功时为True;否则,False"""try:bucket = self.session_conn.Bucket(bucket)obj = bucket.Object(file_key)obj.delete()return Trueexcept Exception as e:print(e.args)ex = traceback.format_exc()print('具体错误{}'.format(ex))return Falsedef bucket_exists(self, bucket_name):"""判断桶是否存在,是否有访问权限@return: 当bucket存在时为True;否则,假的"""try:self.client_conn.head_bucket(Bucket=bucket_name)logger.info("存储桶 {} 存在.".format(bucket_name))exists = Trueexcept ClientError:logger.warning("存储桶 {} 不存在,或者你没有权限.".format(bucket_name))exists = Falsereturn existsdef get_object(self, bucket, key):"""获取对象@param bucket: 存储桶@param key: 文件@return : boolean"""try:self.client_conn.get_object(Bucket=bucket, Key=key)return Trueexcept self.client_conn.exceptions.NoSuchKey:return Falsedef download_object(self, bucket, key, file_name):"""下载对象至本地@param file_name: 保存位置以及名称@param bucket: 存储桶@param key: 文件@return : boolean"""try:self.client_conn.download_file(bucket, key, file_name)return Trueexcept Exception as e:return e.argsdef copy_obj(self, source_bucket, to_bucket, file_key):"""复制对象@param source_bucket: 原存储桶@param file_key: 文件名称@param to_bucket: 新存储桶"""source_dict = {'Bucket': source_bucket,'Key': file_key}self.session_conn.meta.client.copy(source_dict, to_bucket, file_key)
AWS Boto3 S3对象上传与下载相关推荐
- 使用php和Amazon S3 sdk上传及下载文件
使用php和Amazon S3 sdk上传及下载文件,下载Excel文件时总是报文件损坏的错误,解决方案如下 上传 require 'vendor/autoload.php';use Aws\S3\S ...
- Spring Boot项目集成AWS SDK连接到AWS S3,实现上传下载功能
本文主要描写在Spring Boot项目里集成AWS SDK连接到AWS S3,实现上传下载功能的具体代码和注意事项.如有不足和错误之处,欢迎指正. AWS S3相关介绍 AWS S3(官网): ht ...
- Python实现向s3共享存储上传和下载文件
Python实现向s3共享存储上传和下载文件 https://www.cnblogs.com/liang545621/p/10298617.html 使用Python从S3上传和下载文件 https: ...
- maven_使用Maven将文件上传和下载到S3
maven 多年来,我已经看到许多团队以许多不同的方式使用Maven. Maven可用于许多ci / cd任务,而无需使用额外的管道代码,或者可用于在运行某些测试之前准备开发环境.通常,它是一种方便的 ...
- maven 文件上传下载_使用Maven将文件上传和下载到S3
maven 文件上传下载 多年来,我已经看到许多团队以许多不同的方式使用Maven. Maven可用于许多ci / cd任务,而无需使用额外的管道代码,或者可用于在运行某些测试之前准备开发环境. 通常 ...
- 使用Maven将文件上传和下载到S3
多年来,我已经看到许多团队以许多不同的方式使用Maven. Maven可用于许多ci / cd任务,而无需使用额外的管道代码,或者可用于在运行某些测试之前准备开发环境. 通常,它是一种方便的工具,在J ...
- 中意阳光年金 - AWS S3 附件上传
AWS S3 附件上传 一.Java 代码调用 1.上传下载相关代码 2.配置文件 二.linux 服务器直接上传附件(大批量附件迁移) 1.linux安装awscli 1.1 安装awscli 1. ...
- XMLHttpRequest 对象实现文件上传和下载功能
XMLHttpRequest 对象实现文件上传和下载功能(内含源码哦
- (十六)admin-boot项目之文件存储上传与下载minio
(十六)文件存储上传与下载 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目,主要由s ...
最新文章
- 转:C#中Monitor对象与Lock关键字的区别分析
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
- SAP系统上线后的变化
- 什么是进程?Python进程各部分内容介绍
- 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...
- Java 理论与实践: 流行的原子
- oracle之 监听器无法启动的几个原因总结
- 苹果的编程语言--Swift
- 转载:国内从事机器视觉领域的公司
- [QualComm] RamDump log收集
- 网易游戏大咖专访丨《第五人格》主创团队畅谈游戏研发修炼记
- Unity资源管理(一)
- 涩会:大学学历——办理居住证的具体流程(深圳)
- 【Python】python转义字符
- 唱作俱佳,腾讯AI艾灵领唱中国新儿歌
- 呆呆和你谈谈入职CVTE一个月的感受
- 【论文笔记之 FDAF and MAF】Frequency-Domain and Multirate Adaptive filtering
- 配置mpls vpn基本组网-intranet
- (SIP-1-话机注册)关于IP话机通过SIP协议注册到PBX电话交换机的全过程解析-如何看wireshark中的报文
- 云原生 · DevOps`01 | 光速初识DevOps