2.3.7. 使用 Ruby AWS SDK 访问 Ceph 对象网关
您可以使用 Ruby 编程语言以及 aws-sdk
gem 用于 S3
访问。在用于通过 Ruby AWS::SDK
访问 Ceph 对象网关服务器的节点上执行下方所述的步骤。
先决条件
- Ceph 对象网关用户级访问权限.
- 访问 Ceph 对象网关的 root 级别访问节点。
- 互联网访问。
流程
安装
ruby
软件包:yum install ruby
[root@dev ~]# yum install ruby
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以上命令将安装
ruby
,它是rubygems
和ruby-libs
等基本依赖项。如果某种方式命令没有安装所有依赖项,请单独安装它们。安装
aws-sdk
Ruby 软件包:gem install aws-sdk
[root@dev ~]# gem install aws-sdk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建项目目录:
mkdir ruby_aws_sdk cd ruby_aws_sdk
[user@dev ~]$ mkdir ruby_aws_sdk [user@dev ~]$ cd ruby_aws_sdk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建连接文件:
vim conn.rb
[user@ruby_aws_sdk]$ vim conn.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到
conn.rb
文件中:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
FQDN_OF_GATEWAY_NODE
替换为 Ceph 对象网关节点的 FQDN。将MY_ACCESS_KEY
和MY_SECRET_KEY
替换为您在为 S3 创建radosgw
用户进行S3
访问时生成的access_key
和secret_key
,如 Red Hat Ceph Storage Object Gateway Configuration and Administration Guide 中所述。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x conn.rb
[user@ruby_aws_sdk]$ chmod +x conn.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./conn.rb | echo $?
[user@ruby_aws_sdk]$ ./conn.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在文件中正确提供了值,命令的输出将是
0
。创建存储桶的新文件:
vim create_bucket.rb
[user@ruby_aws_sdk]$ vim create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x create_bucket.rb
[user@ruby_aws_sdk]$ chmod +x create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./create_bucket.rb
[user@ruby_aws_sdk]$ ./create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令的输出为
true
,这表示 bucketmy-new-bucket2
已创建成功。创建用于列出所拥有的存储桶的新文件:
vim list_owned_buckets.rb
[user@ruby_aws_sdk]$ vim list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x list_owned_buckets.rb
[user@ruby_aws_sdk]$ chmod +x list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./list_owned_buckets.rb
[user@ruby_aws_sdk]$ ./list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出应类似如下:
my-new-bucket2 2022-04-21 10:33:19 UTC
my-new-bucket2 2022-04-21 10:33:19 UTC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于创建对象的新文件:
vim create_object.rb
[user@ruby_aws_sdk]$ vim create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x create_object.rb
[user@ruby_aws_sdk]$ chmod +x create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./create_object.rb
[user@ruby_aws_sdk]$ ./create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将创建一个含有字符串
Hello World!
的文件hello.txt
。创建用于列出存储桶内容的新文件:
vim list_bucket_content.rb
[user@ruby_aws_sdk]$ vim list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件成为可执行文件。
chmod +x list_bucket_content.rb
[user@ruby_aws_sdk]$ chmod +x list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./list_bucket_content.rb
[user@ruby_aws_sdk]$ ./list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出将类似如下:
hello.txt 12 Fri, 22 Apr 2022 15:54:52 GMT
hello.txt 12 Fri, 22 Apr 2022 15:54:52 GMT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于删除空存储桶的新文件:
vim del_empty_bucket.rb
[user@ruby_aws_sdk]$ vim del_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x del_empty_bucket.rb
[user@ruby_aws_sdk]$ chmod +x del_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./del_empty_bucket.rb | echo $?
[user@ruby_aws_sdk]$ ./del_empty_bucket.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果删除了存储桶,命令会返回
0
作为输出。注意编辑
create_bucket.rb
文件以创建空存储桶,例如:my-new-bucket6
、my-new-bucket7
。接下来,在尝试删除空存储桶前相应地编辑上述del_empty_bucket.rb
文件。创建用于删除非空存储桶的新文件:
vim del_non_empty_bucket.rb
[user@ruby_aws_sdk]$ vim del_non_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x del_non_empty_bucket.rb
[user@ruby_aws_sdk]$ chmod +x del_non_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./del_non_empty_bucket.rb | echo $?
[user@ruby_aws_sdk]$ ./del_non_empty_bucket.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果删除了存储桶,命令会返回
0
作为输出。创建用于删除对象的新文件:
vim delete_object.rb
[user@ruby_aws_sdk]$ vim delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
使文件可执行:
chmod +x delete_object.rb
[user@ruby_aws_sdk]$ chmod +x delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./delete_object.rb
[user@ruby_aws_sdk]$ ./delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将删除对象
hello.txt
。