AWS S3(Simple Storage Service)是亚马逊云提供的高耐用性、高可用性的对象存储服务,通过命令行工具(如AWS CLI)可以高效管理S3中的数据,AWS CLI是官方提供的命令行界面,支持创建存储桶、上传下载文件、设置权限等操作,适合自动化脚本和批量管理场景,以下是AWS S3命令行的详细使用指南,涵盖常用命令、参数及示例。

确保已安装AWS CLI并配置好访问密钥,通过aws configure
命令输入Access Key、Secret Access Key、默认区域和输出格式即可完成初始化。aws configure
,然后依次提示输入信息,配置完成后,可使用aws s3 ls
列出所有存储桶,或通过aws s3 ls s3://bucket-name
查看指定桶内的文件列表。
创建存储桶是基础操作,命令为aws s3 mb s3://bucket-name
,其中bucket-name
需全局唯一,若需删除空桶,使用aws s3 rb s3://bucket-name
;若桶内有文件,需先删除所有对象或使用--force
参数强制删除,上传文件时,aws s3 cp local-file s3://bucket-name/remote-file
可复制单个文件,--recursive
参数支持整个目录上传,如aws s3 cp local-folder s3://bucket-name/folder --recursive
,下载操作同理,只需交换源和目标路径,例如aws s3 cp s3://bucket-name/remote-file local-file
。
文件管理方面,aws s3 mv s3://source-bucket/file s3://target-bucket/file
可实现跨桶或同桶移动文件,--recursive
同样适用于目录,同步功能(aws s3 sync local-folder s3://bucket-name/folder
)会对比本地与S3的差异,仅同步新增或修改的文件,双向同步需指定--delete
参数删除目标中多余的文件。aws s3 ls s3://bucket-name --recursive --human-readable --summarize
可递归列出所有文件并显示总大小,适合统计存储用量。
权限与访问控制可通过aws sapi
命令管理,设置桶为公开读取:aws s3api put-bucket-acl --bucket bucket-name --acl public-read
,或通过策略文件精细化控制:aws s3api put-bucket-policy --bucket bucket-name --policy file://policy.json
,其中策略文件需定义允许的IAM用户及操作。

以下表格总结了常用AWS S3命令及其功能:
命令 | 功能 | 示例 |
---|---|---|
aws s3 mb |
创建存储桶 | aws s3 mb s3://my-test-bucket |
aws s3 rb |
删除存储桶 | aws s3 rb s3://my-test-bucket |
aws s3 cp |
复制文件/目录 | aws s3 cp file.txt s3://bucket/ --recursive |
aws s3 sync |
同步本地与S3 | aws s3 sync local/ s3://bucket/folder/ |
aws s3 mv |
移动文件/目录 | aws s3 mv s3://old/ s3://new/ |
aws s3 rm |
删除文件/目录 | aws s3 rm s3://bucket/file.txt --recursive |
aws s3api put-bucket-acl |
设置桶ACL | aws s3api put-bucket-acl --bucket my-bucket --acl public-read |
高级场景中,可通过生命周期策略自动转换存储类型(如从标准存储转为低频访问存储),或使用版本控制管理文件历史版本,启用版本控制:aws s3api put-bucket-versioning --bucket bucket-name --versioning-configuration Status=Enabled
。
相关问答FAQs:
-
如何解决AWS S3命令执行时出现的“Access Denied”错误?
该错误通常因权限不足导致,检查IAM用户是否具备s3:*
或特定操作(如s3:PutObject
)的权限,并确认存储桶策略是否允许该用户访问,可通过aws s3api get-bucket-policy --bucket bucket-name
查看当前策略,或使用aws iam get-user-policy --user-name username
检查用户权限策略。(图片来源网络,侵删) -
如何批量重命名S3桶内的文件?
AWS S3本身不支持直接重命名,但可通过组合命令实现,使用aws s3 ls s3://bucket/folder/ --recursive
获取文件列表,通过脚本生成aws s3 mv
命令批量移动文件到新路径,具体步骤:- 导出文件列表:
aws s3 ls s3://bucket/folder/ --recursive > filelist.txt
- 编写脚本(如Python)解析
filelist.txt
,生成aws s3 mv
命令并执行。
注意:移动操作会产生额外的请求费用,建议在测试桶中验证。
- 导出文件列表: