2.3.8. 使用 PHP 访问 Ceph 对象网关
您可以使用 PHP 脚本进行 S3 访问。此流程提供一些示例 PHP 脚本来执行各种任务,如删除存储桶或对象。
以下给出的示例针对 php v5.4.16 和 aws-sdk v2.8.24 测试。不要使用最新版本的 aws-sdk for php,因为它需要没有包括在 RHEL 7 默认仓库中的 php >= 5.5+.php 5.5。如果要使用 php 5.5,则必须启用 epel 和其他第三方存储库。另外,php 5.5 和最新版本的 aws-sdk 的配置选项也不同。
先决条件
- 根级访问开发工作站。
- 互联网访问。
流程
安装
php软件包:yum install php
[root@dev ~]# yum install phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
下载适用于 PHP 的
aws-sdk的 zip 存档并解压缩。 创建项目目录:
mkdir php_s3 cd php_s3
[user@dev ~]$ mkdir php_s3 [user@dev ~]$ cd php_s3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将提取的
aws目录复制到项目目录中。例如:cp -r ~/Downloads/aws/ ~/php_s3/
[user@php_s3]$ cp -r ~/Downloads/aws/ ~/php_s3/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建连接文件:
vim conn.php
[user@php_s3]$ vim conn.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到
conn.php文件中:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
FQDN_OF_GATEWAY_NODE替换为网关节点的 FQDN。按照 Red Hat Ceph Storage Object Gateway Configuration 和 Administration Guide 所述,将MY_ACCESS_KEY和MY_SECRET_KEY替换为创建S3访问时生成的access_key和secret_key。使用您复制到php项目目录的提取的aws目录替换PATH_TO_AWS。保存文件并退出编辑器。
运行该文件:
php -f conn.php | echo $?
[user@php_s3]$ php -f conn.php | echo $?Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在文件中正确提供了值,命令的输出将是
0。创建存储桶的新文件:
vim create_bucket.php
[user@php_s3]$ vim create_bucket.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到新文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f create_bucket.php
[user@php_s3]$ php -f create_bucket.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于列出所拥有的存储桶的新文件:
vim list_owned_buckets.php
[user@php_s3]$ vim list_owned_buckets.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f list_owned_buckets.php
[user@php_s3]$ php -f list_owned_buckets.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出应类似于如下:
my-new-bucket3 2022-04-21 10:33:19 UTC
my-new-bucket3 2022-04-21 10:33:19 UTCCopy to Clipboard Copied! Toggle word wrap Toggle overflow 首先创建名为
hello.txt的源文件,以创建对象:echo "Hello World!" > hello.txt
[user@php_s3]$ echo "Hello World!" > hello.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新 php 文件:
vim create_object.php
[user@php_s3]$ vim create_object.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f create_object.php
[user@php_s3]$ php -f create_object.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将在 bucket
my-new-bucket3中创建对象hello.txt。创建用于列出存储桶内容的新文件:
vim list_bucket_content.php
[user@php_s3]$ vim list_bucket_content.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f list_bucket_content.php
[user@php_s3]$ php -f list_bucket_content.phpCopy 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.php
[user@php_s3]$ vim del_empty_bucket.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f del_empty_bucket.php | echo $?
[user@php_s3]$ php -f del_empty_bucket.php | echo $?Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果删除了存储桶,命令会返回
0作为输出。注意编辑
create_bucket.php文件以创建空存储桶,例如:my-new-bucket4、my-new-bucket5。接下来,在尝试删除空存储桶前相应地编辑上述del_empty_bucket.php文件。重要PHP 2 和
aws-sdk的新版本不支持删除非空存储桶。创建用于删除对象的新文件:
vim delete_object.php
[user@php_s3]$ vim delete_object.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f delete_object.php
[user@php_s3]$ php -f delete_object.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将删除对象
hello.txt。