aws s3文件管理核心是存储桶与对象,需注意权限、区域、分段上传及安全;创建唯一命名存储桶并配置iam权限后,可用cli或boto3上传下载文件。

用 AWS S3 SDK 或 CLI 实现文件上传、下载与管理,核心是围绕“存储桶(Bucket)”和“对象(Object)”两个概念展开。操作本身不复杂,但要注意权限、区域、分段策略和安全性这几个关键点。
创建存储桶并配置基础权限
所有对象必须存放在存储桶中。首次使用前需创建一个全局唯一名称的存储桶,并指定所在 AWS 区域:
- CLI 命令示例:
aws s3 mb s3://my-unique-bucket-name --region us-east-1 - SDK(Python Boto3)示例:
s3_client.create_bucket(Bucket='my-unique-bucket-name', CreateBucketConfiguration={'LocationConstraint': 'us-east-1'}) - 确保 IAM 用户或角色具备
s3:CreateBucket、s3:PutObject、s3:GetObject等必要权限,推荐附加AmazonS3FullAccess(测试环境)或最小化策略(生产环境)
上传文件:普通上传与分段上传的选择
小文件(
- 普通上传(CLI):
aws s3 cp local-file.txt s3://my-bucket-name/path/file.txt - 分段上传(CLI 自动触发):
aws s3 cp large-file.zip s3://my-bucket-name/ --multipart-threshold 100MB(Boto3 默认也启用) - SDK 中可显式控制:Boto3 的
upload_file()会自动判断是否分段;如需精细控制,用create_multipart_upload()+upload_part()+complete_multipart_upload() - 注意:分段上传后未完成的上传任务会持续计费,建议定期用
aws s3api list-multipart-uploads检查并清理
下载与查看对象
下载支持按路径、通配符或同步整个前缀,也支持流式读取避免本地落盘:
- 下载单个对象:
aws s3 cp s3://my-bucket-name/path/file.txt ./local-file.txt - 同步目录(含增量):
aws s3 sync s3://my-bucket-name/data/ ./data/ - 列出对象(支持前缀过滤):
aws s3 ls s3://my-bucket-name/logs/ --recursive --human-readable - SDK 流式读取(Python):
obj = s3_client.get_object(Bucket='my-bucket', Key='data.json'); json.load(obj['Body'])
日常管理:标签、生命周期与访问控制
除基础增删改查外,S3 提供轻量但实用的元数据与策略能力:
- 为对象添加标签(最多10对):
aws s3api put-object-tagging --bucket my-bucket --key doc.pdf --tagging TagSet=[{Key=env,Value=prod},{Key=type,Value=document}] - 设置生命周期规则(如 90 天后转 Glacier):
aws s3api put-bucket-lifecycle-configuration --bucket my-bucket --lifecycle-configuration file://lifecycle.json - 设置公共读(谨慎):
aws s3api put-bucket-acl --bucket my-bucket --acl public-read;更安全的方式是用桶策略或预签名 URL - 生成临时访问链接(SDK 示例):
s3_client.generate_presigned_url('get_object', Params={'Bucket': 'my-bucket', 'Key': 'report.csv'}, ExpiresIn=3600)










