3.2.7. PHP を使用した Ceph Object Gateway へのアクセス


S3 アクセスには PHP スクリプトを使用できます。この手順では、バケットやオブジェクトの削除など、さまざまなタスクを実行する PHP スクリプトの例を提供します。

重要

以下は、php v5.4.16 および aws-sdk v2.8.24 に対してテストされています。

前提条件

  • 開発ワークステーションへのルートレベルのアクセス。
  • インターネットアクセス。

手順

  1. php パッケージをインストールします。

    [root@dev ~]# yum install php
  2. PHP 用に aws-sdk の zip アーカイブを ダウンロード し、展開します。
  3. プロジェクトディレクトリーを作成します。

    [user@dev ~]$ mkdir php_s3
    [user@dev ~]$ cd php_s3
  4. 抽出した aws ディレクトリーをプロジェクトのディレクトリーにコピーします。以下に例を示します。

    [user@dev ~]$ cp -r ~/Downloads/aws/ ~/php_s3/
  5. コネクションファイルを作成します。

    [user@dev ~]$ vim conn.php
  6. conn.php ファイルに以下のコンテンツを貼り付けます。

    構文

    <?php
    define('AWS_KEY', 'MY_ACCESS_KEY');
    define('AWS_SECRET_KEY', 'MY_SECRET_KEY');
    define('HOST', 'FQDN_OF_GATEWAY_NODE');
    define('PORT', '8080');
    
    // require the AWS SDK for php library
    require '/PATH_TO_AWS/aws-autoloader.php';
    
    use Aws\S3\S3Client;
    
    // Establish connection with host using S3 Client
    client = S3Client::factory(array(
        'base_url' => HOST,
        'port' => PORT,
        'key'      => AWS_KEY,
        'secret'   => AWS_SECRET_KEY
    ));
    ?>

    FQDN_OF_GATEWAY_NODE は、ゲートウェイノードの FQDN に置き換えます。MY_ACCESS_KEYMY_SECRET_KEY をRed Hat Ceph Storage Object Gateway 設定および管理ガイド に記載されているように、S3 アクセス用に radosgw ユーザーを作成したときに生成された access_keysecret_key に置き換えてください。PATH_TO_AWS は、php プロジェクトディレクトリーにコピーした抽出済みの aws ディレクトリーへの絶対パスに置き換えます。

    ファイルを保存して、エディターを終了します。

  7. コマンドを実行します。

    [user@dev ~]$ php -f conn.php | echo $?

    ファイルに正しく値を指定した場合は、コマンドの出力は 0 になります。

  8. バケットを作成するための新規ファイルを作成します。

    [user@dev ~]$ vim create_bucket.php

    新しいファイルに以下の内容を貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    client->createBucket(array('Bucket' => 'my-new-bucket3'));
    
    ?>

    ファイルを保存して、エディターを終了します。

  9. コマンドを実行します。

    [user@dev ~]$ php -f create_bucket.php
  10. 所有されるバケットをリスト表示するために新規ファイルを作成します。

    [user@dev ~]$ vim list_owned_buckets.php

    以下のコンテンツをファイルに貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    blist = client->listBuckets();
    echo "Buckets belonging to " . blist['Owner']['ID'] . ":\n";
    foreach (blist['Buckets'] as b) {
        echo "{b['Name']}\t{b['CreationDate']}\n";
    }
    
    ?>

    ファイルを保存して、エディターを終了します。

  11. コマンドを実行します。

    [user@dev ~]$ php -f list_owned_buckets.php

    出力は以下のようになります。

    my-new-bucket3 2020-01-21 10:33:19 UTC
  12. まず hello.txt という名前のソースファイルを作成するオブジェクトを作成します。

    [user@dev ~]$ echo "Hello World!" > hello.txt
  13. 新しい php ファイルを作成します。

    [user@dev ~]$ vim create_object.php

    以下のコンテンツをファイルに貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    key         = 'hello.txt';
    source_file = './hello.txt';
    acl         = 'private';
    bucket      = 'my-new-bucket3';
    client->upload(bucket, key, fopen(source_file, 'r'), acl);
    
    ?>

    ファイルを保存して、エディターを終了します。

  14. コマンドを実行します。

    [user@dev ~]$ php -f create_object.php

    これにより、バケット my-new-bucket3 でオブジェクト hello.txt が作成されます。

  15. バケットのコンテンツをリスト表示するための新規ファイルを作成します。

    [user@dev ~]$ vim list_bucket_content.php

    以下のコンテンツをファイルに貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    o_iter = client->getIterator('ListObjects', array(
        'Bucket' => 'my-new-bucket3'
    ));
    foreach (o_iter as o) {
        echo "{o['Key']}\t{o['Size']}\t{o['LastModified']}\n";
    }
    ?>

    ファイルを保存して、エディターを終了します。

  16. コマンドを実行します。

    [user@dev ~]$ php -f list_bucket_content.php

    出力は以下のようになります。

    hello.txt    12    Fri, 22 Jan 2020 15:54:52 GMT
  17. 空のバケットを削除するために新規ファイルを作成します。

    [user@dev ~]$ vim del_empty_bucket.php

    以下のコンテンツをファイルに貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    client->deleteBucket(array('Bucket' => 'my-new-bucket3'));
    ?>

    ファイルを保存して、エディターを終了します。

  18. コマンドを実行します。

    [user@dev ~]$ php -f del_empty_bucket.php | echo $?

    バケットが正常に削除されると、コマンドは 0 を出力として返します。

    注記

    create_bucket.php ファイルを編集し、空のバケットを作成します (例: my-new-bucket4my-new-bucket5)。次に、空のバケットの削除を試みる前に、上記の del_empty_bucket.php ファイルを適宜編集します。

    重要

    空でないバケットの削除は、現在 PHP 2 以降のバージョンの aws-sdk ではサポートされていません。

  19. オブジェクトを削除する新しいファイルを作成します。

    [user@dev ~]$ vim delete_object.php

    以下のコンテンツをファイルに貼り付けます。

    構文

    <?php
    
    include 'conn.php';
    
    client->deleteObject(array(
        'Bucket' => 'my-new-bucket3',
        'Key'    => 'hello.txt',
    ));
    ?>

    ファイルを保存して、エディターを終了します。

  20. コマンドを実行します。

    [user@dev ~]$ php -f delete_object.php

    これにより、オブジェクト hello.txt が削除されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る