
- 1.查看buckets的列表
[root@ceph141 ~]# s3cmd ls
2025-04-03 04:01 s3://lax-bucket
[root@ceph141 ~]#
- 2.查看buckets的数据
[root@ceph141 ~]# s3cmd la
2025-04-03 04:04 55973352 s3://lax-bucket/01-老男孩教育-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-老男孩教育-对象存储网关组件rgw概述.mp4
[root@ceph141 ~]#
- 3.上传多个文件到buckets
[root@ceph141 ~]# s3cmd put /etc/os-release /etc/fstab /etc/passwd s3://lax-bucket/violet/
WARNING: Skipping over symbolic link: /etc/os-release
upload: '/etc/fstab' -> 's3://lax-bucket/violet/fstab' [1 of 2]
657 of 657 100% in 0s 57.12 KB/s done
upload: '/etc/passwd' -> 's3://lax-bucket/violet/passwd' [2 of 2]
2571 of 2571 100% in 0s 253.71 KB/s done
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd la
DIR s3://lax-bucket/violet/
2025-04-03 04:04 55973352 s3://lax-bucket/01-老男孩教育-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://violet-bucket/02-老男孩教育-对象存储网关组件rgw概述.mp4
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket/violet/
2025-04-03 06:37 657 s3://lax-bucket/violet/fstab
2025-04-03 06:37 2571 s3://lax-bucket/violet/passwd
[root@ceph141 ~]#
[root@ceph141 ~]#
- 4.下载文件
[root@ceph141 ~]# s3cmd get s3://lax-bucket/violet/fstab /tmp/xixi
download: 's3://lax-bucket/violet/fstab' -> '/tmp/xixi' [1 of 1]
657 of 657 100% in 0s 13.38 KB/s done
[root@ceph141 ~]#
[root@ceph141 ~]# diff /tmp/xixi /etc/fstab
[root@ceph141 ~]#
- 5.删除对象
[root@ceph141 ~]# s3cmd ls s3://lax-bucket/violet/
2025-04-03 06:37 657 s3://lax-bucket/violet/fstab
2025-04-03 06:37 2571 s3://lax-bucket/violet/passwd
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd del s3://lax-bucket/violet/fstab
delete: 's3://lax-bucket/violet/fstab'
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket/violet/
2025-04-03 06:37 2571 s3://lax-bucket/violet/passwd
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd rm s3://lax-bucket/violet/passwd # rm是del的别名
delete: 's3://lax-bucket/violet/passwd'
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket/violet/
[root@ceph141 ~]#
- 6.将目录的所有文件上川到bucket
[root@ceph141 ~]#
[root@ceph141 ~]# ll /violet/softwares/docker/
total 255184
drwxrwxr-x 2 lax lax 4096 Mar 31 15:22 ./
drwxr-xr-x 3 root root 4096 Mar 31 15:22 ../
-rwxr-xr-x 1 lax lax 39451064 Apr 5 2023 containerd*
-rwxr-xr-x 1 lax lax 7548928 Apr 5 2023 containerd-shim*
-rwxr-xr-x 1 lax lax 9760768 Apr 5 2023 containerd-shim-runc-v2*
-rwxr-xr-x 1 lax lax 21090304 Apr 5 2023 ctr*
-rwxr-xr-x 1 lax lax 47955672 Apr 5 2023 docker*
-rwxr-xr-x 1 root root 59628532 Mar 31 15:22 docker-compose*
-rwxr-xr-x 1 lax lax 58246432 Apr 5 2023 dockerd*
-rwxr-xr-x 1 lax lax 765808 Apr 5 2023 docker-init*
-rwxr-xr-x 1 lax lax 2628514 Apr 5 2023 docker-proxy*
-rwxr-xr-x 1 lax lax 14214624 Apr 5 2023 runc*
[root@ceph141 ~]#
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket
2025-04-03 04:04 55973352 s3://lax-bucket/01-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-对象存储网关组件rgw概述.mp4
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd sync /violet/softwares/docker/ s3://lax-bucket
upload: '/violet/softwares/docker/containerd' -> 's3://lax-bucket/containerd' [part 1 of 3, 15MB] [1 of 10]
15728640 of 15728640 100% in 0s 53.91 MB/s done
upload: '/violet/softwares/docker/containerd' -> 's3://lax-bucket/containerd' [part 2 of 3, 15MB] [1 of 10]
15728640 of 15728640 100% in 0s 63.15 MB/s done
upload: '/violet/softwares/docker/containerd' -> 's3://lax-bucket/containerd' [part 3 of 3, 7MB] [1 of 10]
7993784 of 7993784 100% in 0s 52.07 MB/s done
upload: '/violet/softwares/docker/containerd-shim' -> 's3://lax-bucket/containerd-shim' [2 of 10]
7548928 of 7548928 100% in 0s 56.39 MB/s done
upload: '/violet/softwares/docker/containerd-shim-runc-v2' -> 's3://lax-bucket/containerd-shim-runc-v2' [3 of 10]
9760768 of 9760768 100% in 0s 65.46 MB/s done
upload: '/violet/softwares/docker/ctr' -> 's3://lax-bucket/ctr' [part 1 of 2, 15MB] [4 of 10]
15728640 of 15728640 100% in 0s 68.02 MB/s done
upload: '/violet/softwares/docker/ctr' -> 's3://lax-bucket/ctr' [part 2 of 2, 5MB] [4 of 10]
5361664 of 5361664 100% in 0s 47.75 MB/s done
upload: '/violet/softwares/docker/docker' -> 's3://lax-bucket/docker' [part 1 of 4, 15MB] [5 of 10]
15728640 of 15728640 100% in 0s 67.67 MB/s done
upload: '/violet/softwares/docker/docker' -> 's3://lax-bucket/docker' [part 2 of 4, 15MB] [5 of 10]
15728640 of 15728640 100% in 0s 64.67 MB/s done
upload: '/violet/softwares/docker/docker' -> 's3://lax-bucket/docker' [part 3 of 4, 15MB] [5 of 10]
15728640 of 15728640 100% in 0s 68.42 MB/s done
upload: '/violet/softwares/docker/docker' -> 's3://lax-bucket/docker' [part 4 of 4, 751KB] [5 of 10]
769752 of 769752 100% in 0s 18.79 MB/s done
upload: '/violet/softwares/docker/docker-compose' -> 's3://lax-bucket/docker-compose' [part 1 of 4, 15MB] [6 of 10]
15728640 of 15728640 100% in 0s 68.70 MB/s done
upload: '/violet/softwares/docker/docker-compose' -> 's3://lax-bucket/docker-compose' [part 2 of 4, 15MB] [6 of 10]
15728640 of 15728640 100% in 0s 63.81 MB/s done
upload: '/violet/softwares/docker/docker-compose' -> 's3://lax-bucket/docker-compose' [part 3 of 4, 15MB] [6 of 10]
15728640 of 15728640 100% in 0s 67.48 MB/s done
upload: '/violet/softwares/docker/docker-compose' -> 's3://lax-bucket/docker-compose' [part 4 of 4, 11MB] [6 of 10]
12442612 of 12442612 100% in 0s 43.82 MB/s done
upload: '/violet/softwares/docker/docker-init' -> 's3://lax-bucket/docker-init' [7 of 10]
765808 of 765808 100% in 0s 29.00 MB/s done
upload: '/violet/softwares/docker/docker-proxy' -> 's3://lax-bucket/docker-proxy' [8 of 10]
2628514 of 2628514 100% in 0s 33.37 MB/s done
upload: '/violet/softwares/docker/dockerd' -> 's3://lax-bucket/dockerd' [part 1 of 4, 15MB] [9 of 10]
15728640 of 15728640 100% in 0s 48.08 MB/s done
upload: '/violet/softwares/docker/dockerd' -> 's3://lax-bucket/dockerd' [part 2 of 4, 15MB] [9 of 10]
15728640 of 15728640 100% in 0s 68.26 MB/s done
upload: '/violet/softwares/docker/dockerd' -> 's3://lax-bucket/dockerd' [part 3 of 4, 15MB] [9 of 10]
15728640 of 15728640 100% in 0s 69.11 MB/s done
upload: '/violet/softwares/docker/dockerd' -> 's3://lax-bucket/dockerd' [part 4 of 4, 10MB] [9 of 10]
11060512 of 11060512 100% in 0s 54.74 MB/s done
upload: '/violet/softwares/docker/runc' -> 's3://lax-bucket/runc' [10 of 10]
14214624 of 14214624 100% in 0s 72.46 MB/s done
Done. Uploaded 261290646 bytes in 4.8 seconds, 52.15 MB/s.
[root@ceph141 ~]#
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket
2025-04-03 04:04 55973352 s3://lax-bucket/01-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-对象存储网关组件rgw概述.mp4
2025-04-03 06:43 39451064 s3://lax-bucket/containerd
2025-04-03 06:43 7548928 s3://lax-bucket/containerd-shim
2025-04-03 06:43 9760768 s3://lax-bucket/containerd-shim-runc-v2
2025-04-03 06:43 21090304 s3://lax-bucket/ctr
2025-04-03 06:43 47955672 s3://lax-bucket/docker
2025-04-03 06:43 59628532 s3://lax-bucket/docker-compose
2025-04-03 06:43 765808 s3://lax-bucket/docker-init
2025-04-03 06:43 2628514 s3://lax-bucket/docker-proxy
2025-04-03 06:43 58246432 s3://lax-bucket/dockerd
2025-04-03 06:43 14214624 s3://lax-bucket/runc
[root@ceph141 ~]#
- 7.查看某个bucket的大小
[root@ceph141 ~]# s3cmd du s3://lax-bucket
485923394 12 objects s3://lax-bucket/
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd du s3://lax-bucket -H
463M 12 objects s3://lax-bucket/
[root@ceph141 ~]#
- 8.获取bucket或者objects信息
[root@ceph141 ~]# s3cmd info s3://lax-bucket
s3://lax-bucket/ (bucket):
Location: default
Payer: BucketOwner
Expiration Rule: none
Policy: none
CORS: none
ACL: 刘安讯: FULL_CONTROL
[root@ceph141 ~]#
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd info s3://lax-bucket/runc
s3://lax-bucket/runc (object):
File size: 14214624
Last mod: Thu, 03 Apr 2025 06:43:41 GMT
MIME type: application/x-executable
Storage: STANDARD
MD5 sum: 1b74d0525e0a805845473b7207446757
SSE: none
Policy: none
CORS: none
ACL: 刘安讯: FULL_CONTROL
x-amz-meta-s3cmd-attrs: atime:1743579172/ctime:1743405727/gid:1000/gname:lax/md5:1b74d0525e0a805845473b7207446757/mode:33261/mtime:1680632676/uid:1000/uname:lax
[root@ceph141 ~]#
- 9.拷贝数据
[root@ceph141 ~]# s3cmd mb s3://violet-linux
Bucket 's3://violet-linux96/' created
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://violet-linux
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd cp s3://lax-bucket/runc s3://violet-linux
remote copy: 's3://lax-bucket/runc' -> 's3://violet-linux/runc' [1 of 1]
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://violet-linux96
2025-04-03 06:47 14214624 s3://violet-linux96/runc
[root@ceph141 ~]#
- 10.修改对象的元数据
[root@ceph141 ~]# s3cmd ls s3://violet-linux
2025-04-03 06:47 14214624 s3://violet-linux/runc
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd modify s3://violet-linux/runc
modify: 's3://violet-linux/runc' [1 of 1]
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://violet-linux/
2025-04-03 06:48 14214624 s3://violet-linux/runc
[root@ceph141 ~]#
- 11.移动objects对象
[root@ceph141 ~]# s3cmd ls s3://lax-bucket
2025-04-03 04:04 55973352 s3://lax-bucket/01-老男孩教育-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-老男孩教育-对象存储网关组件rgw概述.mp4
2025-04-03 06:43 39451064 s3://lax-bucket/containerd
2025-04-03 06:43 7548928 s3://lax-bucket/containerd-shim
2025-04-03 06:43 9760768 s3://lax-bucket/containerd-shim-runc-v2
2025-04-03 06:43 21090304 s3://lax-bucket/ctr
2025-04-03 06:43 47955672 s3://lax-bucket/docker
2025-04-03 06:43 59628532 s3://lax-bucket/docker-compose
2025-04-03 06:43 765808 s3://lax-bucket/docker-init
2025-04-03 06:43 2628514 s3://lax-bucket/docker-proxy
2025-04-03 06:43 58246432 s3://lax-bucket/dockerd
2025-04-03 06:43 14214624 s3://lax-bucket/runc
[root@ceph141 ~]#
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd mv s3://lax-bucket/containerd s3://violet-linux/
move: 's3://lax-bucket/containerd' -> 's3://violet-linux/containerd' [1 of 1]
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://lax-bucket
2025-04-03 04:04 55973352 s3://lax-bucket/01-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-对象存储网关组件rgw概述.mp4
2025-04-03 06:43 7548928 s3://lax-bucket/containerd-shim
2025-04-03 06:43 9760768 s3://lax-bucket/containerd-shim-runc-v2
2025-04-03 06:43 21090304 s3://lax-bucket/ctr
2025-04-03 06:43 47955672 s3://lax-bucket/docker
2025-04-03 06:43 59628532 s3://lax-bucket/docker-compose
2025-04-03 06:43 765808 s3://lax-bucket/docker-init
2025-04-03 06:43 2628514 s3://lax-bucket/docker-proxy
2025-04-03 06:43 58246432 s3://lax-bucket/dockerd
2025-04-03 06:43 14214624 s3://lax-bucket/runc
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls s3://violet-linux
2025-04-03 06:50 39451064 s3://violet-linux/containerd
2025-04-03 06:48 14214624 s3://violet-linux/runc
[root@ceph141 ~]#
- 12.查看正在上传的文件列表
[root@ceph141 ~]# s3cmd put violet-grafana-v10.4.0.tar.gz s3://violet-linux # 单独用一个终端测试
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd multipart s3://violet-linux
s3://violet-linux/
Initiated Path Id
2025-04-03T06:52:30.386Z s3://violet-linux/violet-grafana-v10.4.0.tar.gz 2~vknzQkX2QnqFX8p4KWRDrcfAq3VM1El
[root@ceph141 ~]#
- 13.递归删除bucket
[root@ceph141 /]# s3cmd la
2025-04-03 06:50 39451064 s3://violet-linux/containerd
2025-04-03 06:52 438047232 s3://violet-linux/violet-grafana-v10.4.0.tar.gz
2025-04-03 06:48 14214624 s3://violet-linux/runc
2025-04-03 04:04 55973352 s3://lax-bucket/01-老男孩教育-昨日内容回顾及今日内容预告.mp4
2025-04-03 04:05 168659396 s3://lax-bucket/02-老男孩教育-对象存储网关组件rgw概述.mp4
2025-04-03 06:43 7548928 s3://lax-bucket/containerd-shim
2025-04-03 06:43 9760768 s3://lax-bucket/containerd-shim-runc-v2
2025-04-03 06:43 21090304 s3://lax-bucket/ctr
2025-04-03 06:43 47955672 s3://lax-bucket/docker
2025-04-03 06:43 59628532 s3://lax-bucket/docker-compose
2025-04-03 06:43 765808 s3://lax-bucket/docker-init
2025-04-03 06:43 2628514 s3://lax-bucket/docker-proxy
2025-04-03 06:43 58246432 s3://lax-bucket/dockerd
2025-04-03 06:43 14214624 s3://lax-bucket/runc
[root@ceph141 /]#
[root@ceph141 /]# s3cmd rb s3://lax-bucket -r
WARNING: Bucket is not empty. Removing all the objects from it first. This may take some time...
delete: 's3://lax-bucket/01-老男孩教育-昨日内容回顾及今日内容预告.mp4'
delete: 's3://lax-bucket/02-老男孩教育-对象存储网关组件rgw概述.mp4'
delete: 's3://lax-bucket/containerd-shim'
delete: 's3://lax-bucket/containerd-shim-runc-v2'
delete: 's3://lax-bucket/ctr'
delete: 's3://lax-bucket/docker'
delete: 's3://lax-bucket/docker-compose'
delete: 's3://lax-bucket/docker-init'
delete: 's3://lax-bucket/docker-proxy'
delete: 's3://lax-bucket/dockerd'
delete: 's3://lax-bucket/runc'
Bucket 's3://lax-bucket/' removed
[root@ceph141 /]#
[root@ceph141 /]# s3cmd la
2025-04-03 06:50 39451064 s3://violet-linux/containerd
2025-04-03 06:52 438047232 s3://violet-linux/violet-grafana-v10.4.0.tar.gz
2025-04-03 06:48 14214624 s3://violet-linux/runc
[root@ceph141 /]#
推荐阅读:
https://www.s3express.com/help/help.html
buckets权限策略
参考链接:
https://docs.ceph.com/en/squid/radosgw/bucketpolicy/
s3:PutObjectAcl
上传对象。
s3:GetObject
下载对象。
s3:CreateBucket
创建buckets。
s3:ListBucket
查看buckets。
s3:DeleteObject
删除对象。
s3:DeleteBucket
删除buckets。
Python操作对象存储服务实战
参考链接:
https://docs.ceph.com/en/squid/radosgw/s3/python/
- 1.安装python环境
1.1 安装pip工具包
[root@elk93 ~]# apt -y install python3-pip
1.2 安装boto包
[root@elk93 ~]# pip install boto==2.49.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
- 2.编写python程序
[root@elk93 ~]# cat rgw-lax.py
import boto
import boto.s3.connection
# 你账号的access_key和secret_key需要自行修改
access_key = 'A3AGQ7XZLN2DL3NIR3GA'
secret_key = 'z0pbFr5riqbl40LmgzQqmLJf1aZC0xAD0KTlFkGm'
# 连接rgw
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = '10.0.0.142',
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
# 创建bucket
bucket = conn.create_bucket('lax-rgw')
# 查看bucket列表
for bucket in conn.get_all_buckets():
print("{name}\t{created}".format(
name = bucket.name,
created = bucket.creation_date,
))
# 查看bucket内容
for key in bucket.list():
print("{name}\t{size}\t{modified}".format(
name = key.name,
size = key.size,
modified = key.last_modified,
))
# 创建一个对象
key = bucket.new_key('blog.txt')
key.set_contents_from_string('https://www.cnblogs.com/lax\n')
# 生成对象下载的URL
hello_key = bucket.get_key('blog.txt')
hello_url = hello_key.generate_url(0, query_auth=False, force_http=True)
print(hello_url)
[root@elk93 ~]#
- 3.运行程序
[root@elk93 ~]# python3 rgw-lax.py
violet-linux96 2025-04-03T06:47:20.497Z
lax-rgw 2025-04-03T07:21:15.232Z
blog.txt 36 2025-04-03T07:22:50.424Z
http://10.0.0.142/lax-rgw/blog.txt
[root@elk93 ~]#
- 4.访问测试,发现无法访问!
[root@elk93 ~]# curl http://10.0.0.142/lax-rgw/blog.txt;echo
<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message></Message><BucketName>lax-rgw</BucketName><RequestId>tx0000090f801ec50aef41b-0067ee3899-64531-default</RequestId><HostId>64531-default-default</HostId></Error>
[root@elk93 ~]#
[root@ceph141 ~]# python3 rgw-lax.py # 再次测试发现输出内容和之前有变化,原因是已经有bucket。
lax-bucket 2024-12-06T04:14:11.346Z
lax-rgw 2024-12-06T07:55:59.434Z
blog.txt 35 2024-12-06T07:55:59.553Z
http://www.lax.com/lax-rgw/blog.txt
[root@ceph141 ~]#
- 5.使用s3cmd命令访问测试
[root@ceph141 /]# s3cmd get s3://lax-rgw/blog.txt
download: 's3://lax-rgw/blog.txt' -> './blog.txt' [1 of 1]
36 of 36 100% in 0s 847.12 B/s done
[root@ceph141 /]#
[root@ceph141 /]# cat blog.txt
https://www.cnblogs.com/lax
[root@ceph141 /]#
- 6.创建访问策略
5.1 编写策略配置文件
[root@ceph141 ~]# cat lax-anonymous-access-policy.json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": ["*"]},
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::lax-rgw/*"
]
}]
}
[root@ceph141 ~]#
5.2 应用策略
[root@ceph141 ~]# s3cmd info s3://lax-rgw
s3://lax-rgw/ (bucket):
Location: default
Payer: BucketOwner
Expiration Rule: none
Policy: none
CORS: none
ACL: 刘安讯: FULL_CONTROL
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd setpolicy lax-anonymous-access-policy.json s3://lax-rgw
s3://lax-rgw/: Policy updated
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd info s3://lax-rgw
s3://lax-rgw/ (bucket):
Location: default
Payer: BucketOwner
Expiration Rule: none
Policy: {
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": ["*"]},
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::lax-rgw/*"
]
}]
}
CORS: none
ACL: 刘安讯: FULL_CONTROL
[root@ceph141 ~]#
- 6.再次访问测试
[root@elk93 ~]# curl http://10.0.0.142/lax-rgw/blog.txt
https://www.cnblogs.com/lax
[root@elk93 ~]#
对于swift工具操作对象存储网关rgw
- 1.Switft API接口概述
1.1 什么是swift
swift的用户账号对应radosgw中的subuser(子用户),它隶属于某个事先存在的user(用户账号)。
Swift API的上下文中,存储桶以container表示,而非S3中的bucket,但二者在功能上相似,都是对象数据的容器。
Python swiftclient是一个用于和swift API交互的python客户端程序,它包含了Python API(swift模块)和一个swift命令。
swift命令可以通过Swift API完成容器和对象数据的管理操作。
1.2.swift实现的基本逻辑
- 1.创建专属的用户名和子用户授权;
- 2.安装专属的客户端命令和python模块;
- 3.配置专属的认证配置文件;
- 4.综合测试swift的资源对象管理;
- 2.swift命令行配置实战
2.1 创建账号
[root@ceph141 ~]# radosgw-admin user create --uid "lax" --display-name "刘安讯"
{
"user_id": "lax",
"display_name": "刘安讯",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "lax",
"access_key": "030NCR3HK8G1GSJ2N7OG",
"secret_key": "4v2h8asPwUZhS7BGS6pWwmUpRX9l44veiygl7tmG"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
[root@ceph141 ~]#
2.2 查看账号列表
[root@ceph141 ~]# radosgw-admin user list
[
"dashboard",
"lax",
"jasonyin"
]
[root@ceph141 ~]#
2.3 基于现有用户创建子用户
[root@ceph141 ~]# radosgw-admin subuser create --uid=lax --subuser=lax:swift --access=full
{
"user_id": "lax",
"display_name": "刘安讯",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [
{
"id": "lax:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "lax",
"access_key": "0DEMUF5H9Q8PQKLA4S4S",
"secret_key": "Q1s01Ax5r7nof1mNCHwG3PRsKs5HAs9wSaVxpfAQ"
}
],
"swift_keys": [
{
"user": "lax:swift",
"secret_key": "Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
[root@ceph141 ~]#
2.5 安装工具包
[root@ceph141 ~]# apt -y install python-setuptools python3-pip
[root@ceph141 ~]# pip install python-swiftclient==4.6.0
2.6 创建并查看存储桶
[root@ceph141 ~]# swift -A http://10.0.0.142/auth -U lax:swift -K Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD post lax-swift
[root@ceph141 ~]#
[root@ceph141 ~]# swift -A http://10.0.0.142/auth -U lax:swift -K Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD list
lax-swift
[root@ceph141 ~]#
[root@ceph141 ~]# s3cmd ls
2025-04-03 06:47 s3://violet-linux96
2025-04-03 07:21 s3://lax-rgw
[root@ceph141 ~]#
温馨提示:
从结果上来看,貌似s3cmd和swift二者并不兼容,比如存储桶的和管理方式都不一样。
相关参数说明:
-A
指定认证的URL
-U
指定子用户的名称
-K
指定KEY信息
2.7 上传文件到存储桶
[root@ceph141 ~]# swift -A http://10.0.0.142/auth -U lax:swift -K Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD upload lax-swift /etc/os-release
etc/os-release
[root@ceph141 ~]#
[root@ceph141 ~]# swift -A http://10.0.0.142/auth -U lax:swift -K Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD upload lax-swift /etc/fstab
etc/fstab
[root@ceph141 ~]#
[root@ceph141 ~]# swift -A http://10.0.0.142/auth -U lax:swift -K Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD list lax-swift # 很明显数据上传成功
etc/fstab
etc/os-release
[root@ceph141 ~]#
2.8 配置环境变量
[root@ceph141 ~]# cat .swift
export ST_AUTH=http://10.0.0.142/auth
export ST_USER=lax:swift
export ST_KEY=Mhq5BWRJAVXLbzFNBFOXC9XlS3FiGtHkYEYDhJSD
[root@ceph141 ~]#
[root@ceph141 ~]# source .swift
[root@ceph141 ~]#
[root@ceph141 ~]# swift list lax-swift
etc/fstab
etc/os-release
[root@ceph141 ~]#