Python实现用boto3向s3上传下载文件

AWS STS在region ap-east-1支持问题 原来一直没有用过香港区域STS 来签发临时授权令牌。然后近期开启了香港区域ap-east-1 然后进行测试发现通过STS签发的凭着获取S3中的文件抛出: The provided token is malformed or otherwise invalid 真的是相当的令人困惑。然后在东京区域 ap-northeast-1 建立了同样的存储桶,然后同样的代码去获取文件,就可以获取成功,让人不禁怀疑香港区域有点特殊。 ​ 最后知道翻到了 https://docs.aws.amazon.com/IAM/lat 阅读详情

引言

在最近的测试工作中,接触到了S3,我们需要在S3上上传,下载文件从而对文件的数据进行验证,自己也踩了很多坑,查阅了很多文档,接下来把源码分享给大家,一定可用。

from boto3.session import Session
from botocore.exceptions import ClientError
class Test_demo():
    def __init__(self):
        access_key = "xxxxxxxxxxx"
        secret_key = "xxxxxxxxx"
        url = "http://172.xx.xx.xxx"  # 也可以是自己节点的地址
        session = Session(access_key, secret_key)
        self.s3_client = session.client('s3', endpoint_url=url)
    def download_file(self,bucketName,objectName,fileName):
        """
        下载文件
        :param bucketName: 桶的名称
        :param objectName: 文件的路径
        :param fileName: 下载完成的文件的名称----注意:下载之后的文件默认储存在自己的python工程路径下
        :return:
        """
        self.s3_client.download_file(bucketName,objectName,fileName)

    def upload_file(self,file_name, bucket, object_name=None):
        """
        上传文件
        :param file_name: 需要上传的文件的名称
        :param bucket: S3中桶的名称
        :param object_name: 需要上传到的路径,例如file/localfile/test
        :return:
        """
        if object_name is None:
            object_name = file_name
        try:
            self.s3_client.upload_file(file_name, bucket, object_name,ExtraArgs = { 'ACL' : 'public-read' } )
        except ClientError as e:
            logging.error(e)
            return False
        return True
    def list_object(self, bucketName):
        """
        列出当前桶下所有的文件
        :param bucketName: 
        :return: 
        """
        file_list = []
        response = self.s3_client.list_objects_v2(
            Bucket=bucketName,
            # MaxKeys=1000  # 返回数量,如果为空则为全部
        )
        file_desc = response['Contents']
        for f in file_desc:
            print('file_name:{},file_size:{}'.format(f['Key'], f['Size']))
            file_list.append(f['Key'])
        return file_list
boto3 - 使用Python访问AWS S3 import os import boto3 from loguru import logger BUCKET_NAME = "your-bucket-name" # 存储桶名称 # aws_access_key_id和aws_secret_access_key CN_S3_AKI = 'your_aws_access_key_id' CN_S3_SAK = 'your_aws_secret_access_key' CN_REGION_NAME = 'your-cn-region-name' . 阅读详情

相关推荐

aws-s3-使用boto3根据路径和间隔时间进行清理删除

使用python3.6以上 import boto3 import time import datetime # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html s3 = boto3.resource('s3', region_name='cn-xxxxxxx-1') d...

直到世界的尽头 1995

python-s3:使用Flask和Boto3上载和下载文件的简单示例

这是一个使用Python Flask从Amazon S3上传和下载文件的简单示例。 要求 烧瓶 摇摇欲坠 boto3 安装 sudo apt-get install libyaml-dev virtualenv -p /usr/bin/python3 env . env/bin/activate pip install -r requirements.txt 跑步 . env/bin/activate python app.py 测试 默认情况下,您可以使用Swagger UI来测试Upload API。 摇摇欲坠的链接

AWS-s3-python-boto3上传文件夹,保存文件夹格式

AWS-s3-python-boto3上传文件夹,保存文件夹目录格式。

weixin_45189227的博客 1775

Python Boto3详解:AWS服务的Python SDK及最佳实践

Boto3是AWS推出的Python SDK,它允许Python开发者直接在代码中操作AWS的各种服务,如S3、EC2、DynamoDB等。低级别的客户端接口(Client)高级别的面向对象接口(Resource)

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 1220

使用AWS S3 PythonSDK连接私有S3节点

Python3 AWS boto3 对接S3协议

测试小胖的博客 2869

解决s3.amazonaws.com打不开、下载速度慢等问题

windows7系统 1、在文件管理中访问C:\Windows\System32\drivers\etc 2、用记事本打开里面有一个hosts的文件(不是类型为iCalendar那个), 3、在文件尾添加 # Amazon hosts 219.76.4.4 s3.amazonaws.com 219.76.4.4 github-cloud.s3.amazonaws.com 4、保存 window...

程序猿之家 2万+

Python实战:用boto3实现S3文件分片上传(附避坑指南)

本文详细介绍了如何使用Pythonboto3实现S3对象存储的大文件分片上传,包括初始化上传会话、分片上传实战、完成上传与验证等关键步骤。通过动态分片策略、并发上传实现和断点续传等高级技巧,显著提升上传效率和稳定性。文章还提供了常见问题解决方案和性能优化建议,帮助开发者高效处理GB级别大文件上传任务。

moss5的博客 432

python通过boto3实现ceph s3分布式存储上传下载功能

python通过boto3实现ceph分布式存储上传下载功能前言环境支持开始第一步结束 前言 aws是Amazon Web Service的简写,它包括众多服务,其中最有名的两个是EC2和S3。 S3是Simple Storage Service的简写,它是一种对象存储的实现。 本文档介绍用户如何使用boto3来操作s3对象存储服务。boto3提供了两个级别的接口来访问AWS服务: High Le...

nslogheyang的博客 7090

python上传大文件s3_亚马逊s3上传大文件Python

实例如下:import botofrom boto import connectionimport os, mathfrom filechunkio import FileChunkIO# fill in the id and keyconn = boto.connect_s3()print conn# fill in your bucket namebucket = conn.get_bucke...

weixin_39590635的博客 273

使用PythonBoto 库将文件备份到AmazonS3

AmazonS3 是一个很好用的云存储服务。 够便宜。 速度也不错。是个备份的好地方。 Boto 是Amazon WebService (包含S3)的Python绑定, 很好用。 (唯一的问题是稍微有一点滞后,比如S3现在已经有了在新加坡的区域。这个还没有更新) Boto 提供一个很实用的命令行工具s3put, 可以很方便的将一个目录/文件存储到S3上去。 比如下面的脚本将/home/fta

Jackia的专栏 1372

Python文件上传 S3(AWS) 简单实现

AWS+S3+Python

weixin_45708589的博客 4564

boto3上传下载文件

确定文件类型 import filetype file_type = filetype.guess_extension(file.read()) 生成唯一key用于上传或下载文件 def upload_fileobj(file, key): bucket = settings.BUCKET client = create_aws_client() ...

weixin_30924239的博客 1467

AWS S3 Windows系统下的文件夹上传基于python

AWS S3 上传文件,基于cmd命令行发现无法上传文件夹,只能上传单个文件,不知道是我能力不行还是什么原因,如果有大佬了解的可以在下面评论下! 一、环境配置 1.win10 X64; 2.awscli 1.18.91 3.python(程序上传文件夹) 4.boto3包 二、命令行上传查看和下载 1.设置S3接口ID: 安装好awscli后,输入 aws configure 相应设置对应的key_id,key_secret等,如下图所示: 2.上传查看和下载文件,s3里面没有文

u010554381的博客 1389

python 操作boto3操作s3

定时任务实时生成pdf,将文件tornado用异步io上传到s3,有几个坑记录下: import re import boto3 import logging from multiprocessing.dummy import Pool as ThreadPool AWS_REGION_N...

weixin_42847874的博客 2797

【AWS系列】boto3入门-上篇

官方介绍:官方文档Boto 是AWS的基于python的SDK(当然还支持其他语言的SDK,例如Ruby, Java等),Boto允许开发人员编写软件时使用亚马逊等服务像S3和EC2等,Boto提供了简单,面向对象的API,也提供了低等级的服务接入。这里需要区分,Boto有两个版本,其中旧的版本boto2已经不推荐使用了,在一些亚马逊新建的region已经不支持旧的Boto2了(貌似中国就是这样的),所以如果开发Python代码的话建议使用Boto3。为什么不推荐Boto2?

颜淡慕潇 4460

从S3Browser到Python脚本:我如何用Boto3把重复的文件管理任务自动化(实战心得)

本文分享了如何利用PythonBoto3库将S3文件管理任务自动化,从图形界面转向脚本化的实战经验。通过具体代码示例,展示了文件归档、过期清理等高频操作的自动化实现,显著提升效率并减少人为错误。适合中小团队开发者学习如何用Python简化重复工作流程。

weixin_30836759的博客 450

JD boto3 flask 上传 demo

-- coding: utf-8 -- by dl import logging import boto3 from botocore.exceptions import ClientError def upload_file(file_name, bucket, object_name=None): """Upload a file to an S3 bucket :par...

长门有希的博客 216
上一篇: cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client libr....
下一篇: cx_Oracle实现查询,修改数据库,以及对SQL语句实现参数化
Hope to see
博客等级 码龄7年 24粉丝 17原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值