lbausch / ceph-radosgw-admin
PHP Ceph Radosgw Admin
v0.2.0
2021-09-09 08:55 UTC
Requires
- php: ^7.4|^8.0
- aws/aws-sdk-php: ^3.131
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- rector/rector: ~0.11
This package is auto-updated.
Last update: 2024-09-07 08:04:51 UTC
README
PHP Ceph Radosgw Admin
A PHP REST client for the Ceph Object Gateway Admin Ops API
特性
- 支持 Admin Ops API 的所有端点,包括目前尚未文档化的
metadata/
端点 - 请求使用 AWS Signature V2 和 V4 进行签名
- 通过利用 AWS SDK for PHP,提供无需额外配置的 S3 客户端
- 可扩展和可定制
要求
- PHP ^7.4 或 PHP ^8.0
- Ceph Nautilus (14) 或更高版本
安装
使用 Composer 安装库
composer require lbausch/ceph-radosgw-admin
Ceph 端需要一个具有足够权限的管理用户
radosgw-admin user create \ --uid="admin" \ --display-name="Admin User" \ --admin \ --caps="users=read,write;usage=read,write;buckets=read,write;metadata=read,write;zone=read,write" \ --access-key="<redacted>" \ --secret="<redacted>"
使用
管理客户端
use LBausch\CephRadosgwAdmin\Client; require 'vendor/autoload.php'; $client = Client::make('http://gateway:8080', 'access key', 'secret key'); $response = $client->bucket()->list(); print_r($response->get()); /* Array ( [0] => mybucket ) */
处理异常
在请求失败时,将抛出异常 LBausch\CephRadosgwAdmin\ApiException
。
use LBausch\CephRadosgwAdmin\ApiException; use LBausch\CephRadosgwAdmin\Client; require 'vendor/autoload.php'; $client = Client::make('http://gateway:8080', 'access key', 'secret key'); try { $client->user()->remove('non existent user'); } catch (ApiException $exception) { // Exception handling }
S3 客户端
use LBausch\CephRadosgwAdmin\Client; require 'vendor/autoload.php'; $client = Client::make('http://gateway:8080', 'access key', 'secret key'); $s3client = $client->getS3Client(); // Use different credentials // $s3client = $client->getS3Client('different access key', 'different secret key'); // Pass arbitrary options to S3 client // $s3client = $client->getS3Client('different access key', 'different secret key', [ // 'http' => [ // 'verify' => false, // ], // ]); // Create a bucket $s3client->createBucket([ 'Bucket' => 'mybucket', ]); // List all buckets $buckets = $s3client->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'].PHP_EOL; // mybucket } // Put an object in the bucket $s3client->putObject([ 'Bucket' => 'mybucket', 'SourceFile' => 'foobar.png', 'Key' => 'foobar.png', ]);
自定义配置
许多设置可以根据需要覆盖。有关可配置选项的列表,请参阅 LBausch\CephRadosgwAdmin\Config::defaults()
。
use LBausch\CephRadosgwAdmin\Client; use LBausch\CephRadosgwAdmin\Config; require 'vendor/autoload.php'; $config = Config::make([ // Set a custom admin path 'adminPath' => 'mgt/', ]); // Override settings after instantiation, e.g. specify a timeout for requests $config->set('httpClientConfig', [ 'timeout' => 10, ]); $client = Client::make('http://gateway:8080', 'access key', 'secret key', $config);