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 rubyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以上命令将安装
ruby,它是rubygems和ruby-libs等基本依赖项。如果某种方式命令没有安装所有依赖项,请单独安装它们。安装
aws-sdkRuby 软件包:gem install aws-sdk
[root@dev ~]# gem install aws-sdkCopy 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_sdkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建连接文件:
vim conn.rb
[user@ruby_aws_sdk]$ vim conn.rbCopy 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.rbCopy 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.rbCopy 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.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./create_bucket.rb
[user@ruby_aws_sdk]$ ./create_bucket.rbCopy 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.rbCopy 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.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./list_owned_buckets.rb
[user@ruby_aws_sdk]$ ./list_owned_buckets.rbCopy 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 UTCCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于创建对象的新文件:
vim create_object.rb
[user@ruby_aws_sdk]$ vim create_object.rbCopy 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.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./create_object.rb
[user@ruby_aws_sdk]$ ./create_object.rbCopy 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.rbCopy 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.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./list_bucket_content.rb
[user@ruby_aws_sdk]$ ./list_bucket_content.rbCopy 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 GMTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于删除空存储桶的新文件:
vim del_empty_bucket.rb
[user@ruby_aws_sdk]$ vim del_empty_bucket.rbCopy 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.rbCopy 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.rbCopy 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.rbCopy 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.rbCopy 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.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该文件:
./delete_object.rb
[user@ruby_aws_sdk]$ ./delete_object.rbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将删除对象
hello.txt。