lbausch/ceph-radosgw-admin

PHP Ceph Radosgw Admin

v0.2.0 2021-09-09 08:55 UTC

This package is auto-updated.

Last update: 2024-09-07 08:04:51 UTC


README

PHP Ceph Radosgw Admin

PHP Ceph Radosgw Admin

sca tests codecov

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);