使用 AWS CLI 管理 S3
S3 是 AWS 的对象存储服务
S3: Simple Storage Service
桶操作
创建桶:
aws s3 mb 's3://your-bucket-name' --region 'your-region'
桶名称应遵循以下规则:
- 必须全球唯一
- 必须是小写
- 不得格式化为 IP 地址(如 192.168.5.4)
- 必须在 3 到 63 字符之间
- 不能包含下划线,以连字符开头或结尾,且不能有连续的连字符
删除桶:
aws s3 rb 's3://your-bucket-name' --force
使用桶
S3 桶的操作和我们平时使用 Bash 对文件进行操作的命令基本一致。这里只简单列出其中几条命令。
# 列出桶中所有文件
aws s3 ls --recursive 's3://your-bucket-name/'
# 文件拷贝
aws s3 cp 'local-path' 's3://your-bucket-name/remote-path'
# 文件删除
aws s3 rm 's3://your-bucket-name/file'
# 文件同步
aws s3 sync 'local-path' 's3://your-bucket-name/remote-path'
为文件生成预览链接:
aws s3 presign 's3://your-bucket-name/path/to/file' --expires-in 3600
--expires-in
设定过期时间
presign,预签名。实际上是我们使用自己的身份提前解锁了文件,并生成了解锁链接。
所有支持的操作:
命令名 | 功能 |
---|---|
cp |
拷贝 |
ls |
列表 |
mb |
创建桶 |
mv |
移动 / 重命名 |
presign |
预签名 |
rb |
删除桶 |
rm |
删除 |
sync |
同步 |
website |
设置桶的网站配置 |
桶策略
-
检查“屏蔽公共访问权限”设置
aws s3api get-public-access-block --bucket your-bucket # 检查“屏蔽公共访问权限”设置 aws s3api delete-public-access-block --bucket your-bucket # 移除“屏蔽公共访问权限”设置
-
创建桶策略:
vim policy.json
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowPublicReadDirectory", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket/your-directory/*" }] }
这个桶策略设置允许公共读取指定目录
-
应用桶策略:
aws s3api put-bucket-policy --bucket your-bucket --policy file://policy.json
-
验证桶策略:
aws s3api get-bucket-policy --bucket your-bucket # 查看桶策略 curl https://your-bucket.s3.amazonaws.com/your-directory/test-file.txt # 尝试访问文件
uPic
uPic 是一个图床上传工具,可以使用 AWS S3 作为存储位置。
- ACL:ACL 是 AWS S3 传统的权限管理机制(现推荐使用桶策略)。默认的 ACL 是
bucket-owner-full-control
参见:
其中 s3
是 AWS S3 的高级 API,s3api
和 s3control
分别是 S3 和 S3 Glacier 的低级 API,它们提供了更多的配置选项和更详细的控制。