2026/2/16 6:20:59
网站建设
项目流程
营销型网站定制,wordpress h1,网站由哪些部分组成部分组成部分,网站推广连接怎么做的这是我的第448篇原创文章。一、引言Amazon Simple Storage Service (S3) 是 AWS 提供的对象存储服务#xff0c;具有以下核心特点#xff1a;对象存储#xff1a;存储的是文件对象#xff08;而非块存储#xff09;#xff0c;每个对象包含数据、元数据和唯一键无限扩展具有以下核心特点对象存储存储的是文件对象而非块存储每个对象包含数据、元数据和唯一键无限扩展可存储任意数量的文件单个文件最大 5TB高持久性承诺 99.999999999%11个9的数据持久性全球访问通过 HTTP/HTTPS 协议从任何地方访问成本效益按实际使用量付费无需预付费核心概念Bucket存储桶顶级容器类似文件夹名称全球唯一Object对象存储的基本实体由键Key、值数据和元数据组成Key键对象在 Bucket 中的唯一标识类似文件路径Value值对象在Bucket这的数据如文件、字符串、字节等形式Meta-Data元数据包括系统指定的文件类型、创建时间、加密算法以及用户上传时指定的元信息元数据在对象创建后都无法更改。Tag标签可以为对象指定最多10个标签标签的键和值最大长度时128和256个字符相较于元数据标签是可以修改和新增的它最大的好处是可以结合权限控制、生命周期管理、和数据分析等使用。二、实现过程2.1 安装 SDKpip install boto3 # AWS 官方 Python SDK2.2 基础配置方式一使用 AWS CLI 配置推荐aws configure # 输入 AWS Access Key ID # 输入 AWS Secret Access Key # 输入区域如 us-east-1方式二代码中直接配置import boto3 # 创建 S3 客户端 s3 boto3.client( s3, aws_access_key_id你的访问密钥, aws_secret_access_key你的秘密密钥, region_nameus-east-1 )2.3 常用操作示例创建 S3 客户端或资源对象import boto3 from botocore.exceptions import ClientError # 创建 S3 客户端或资源对象资源对象更面向对象 s3_client boto3.client(s3) s3_resource boto3.resource(s3)创建 Bucketdef create_bucket(bucket_name): try: s3_client.create_bucket(Bucketbucket_name) print(f✅ Bucket {bucket_name} 创建成功) except ClientError as e: print(f❌ 创建失败: {e})上传文件def upload_file(file_path, bucket_name, object_nameNone): 上传文件到 S3 if object_name is None: object_name file_path.split(/)[-1] try: s3_client.upload_file(file_path, bucket_name, object_name) print(f✅ 文件 {file_path} 上传成功) print(f s3://{bucket_name}/{object_name}) except ClientError as e: print(f❌ 上传失败: {e})下载文件def download_file(bucket_name, object_name, file_path): 从 S3 下载文件 try: s3_client.download_file(bucket_name, object_name, file_path) print(f✅ 文件下载成功: {file_path}) except ClientError as e: print(f❌ 下载失败: {e})列出 Bucket 中的文件def list_files(bucket_name): 列出 Bucket 中的所有对象 try: response s3_client.list_objects_v2(Bucketbucket_name) if Contents in response: print(f\n Bucket {bucket_name} 中的文件:) for obj in response[Contents]: print(f - {obj[Key]} (大小: {obj[Size]} bytes)) else: print(fBucket {bucket_name} 为空) except ClientError as e: print(f❌ 列出文件失败: {e})删除文件def delete_file(bucket_name, object_name): 删除 S3 中的文件 try: s3_client.delete_object(Bucketbucket_name, Keyobject_name) print(f✅ 文件 {object_name} 删除成功) except ClientError as e: print(f❌ 删除失败: {e})生成预签名 URL临时访问链接def generate_presigned_url(bucket_name, object_name, expiration3600): 生成临时访问 URL try: url s3_client.generate_presigned_url( get_object, Params{Bucket: bucket_name, Key: object_name}, ExpiresInexpiration ) print(f 临时访问链接{expiration}秒后过期:) print(f {url}) return url except ClientError as e: print(f❌ 生成链接失败: {e}) return None上传文件内容字符串或字节def upload_content(bucket_name, object_name, content): 直接上传内容到 S3 try: s3_client.put_object( Bucketbucket_name, Keyobject_name, Bodycontent ) print(f✅ 内容上传成功: s3://{bucket_name}/{object_name}) except ClientError as e: print(f❌ 上传失败: {e})2.4 高级功能使用 S3 Resource更简洁s3 boto3.resource(s3) bucket s3.Bucket(my-bucket) # 上传 bucket.upload_file(/tmp/test.txt, folder/test.txt) # 下载 bucket.download_file(folder/test.txt, /tmp/test.txt) # 遍历所有对象 for obj in bucket.objects.all(): print(obj.key, obj.last_modified) # 批量删除 bucket.objects.filter(Prefixtemp/).delete()作者简介读研期间发表6篇SCI数据挖掘相关论文现在某研究院从事数据算法相关科研工作结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创以最简单的方式理解和学习关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。