2.4.4. PHP S3 の例


S3 アクセスには PHP スクリプトを使用することもできます。PHP を使用して Ceph Object Gateway サーバーにアクセスするために使用されるノードで以下の手順を実行します。

重要

以下は、php v5.4.16 および aws-sdk v2.8.24 に対してテストされています。php >= 5.5+ が必要なため、php には aws-sdk の最新バージョンを使用し ない でください。PHP 5.5 は、RHEL 7 のデフォルトリポジトリーでは利用できません。php 5.5 を使用する場合は、epel およびその他のサードパーティーのリポジトリーを有効にする必要があります。また、php 5.5 および最新バージョンの aws-sdk の設定オプションも異なります。

PHP/AWS SDK の設定

PHP を設定するには、以下の手順を実行します。

  1. root として、php をインストールします。

    # yum install php
  2. php の aws-sdk をインストールします。

    php 用に aws-sdk の zip アーカイブを ダウンロード し、展開します。

コネクションの作成

  1. プロジェクトディレクトリーを作成します。

    $ mkdir php_s3
    $ cd php_s3
  2. 展開した aws ディレクトリーをプロジェクトのディレクトリーにコピーします。以下に例を示します。

    $ cp -r ~/Downloads/aws/ ~/php_s3/
  3. コネクションファイルを作成します。

    $ vim conn.php
  4. 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
    ));
    ?>

    &lt ;FQDN_of_gateway_node> をゲートウェイノードの FQDN に置き換えます。Red Hat Ceph Storage オブジェクトゲートウェイガイド で説明されているように、my-access-key および my-secret-key は、S3 アクセスの radosgw が作成されたときに生成された access_key および secret_key に置き換えます。また、path_to_aws を、php プロジェクトディレクトリーにコピーした展開した aws ディレクトリーへの絶対パスに置き換えます。

    接続ファイルの例を以下に示します。

    <?php
    define('AWS_KEY', '{key}');
    define('AWS_SECRET_KEY', '{secret}');
    define('HOST', 'http://{hostname}');
    
    // require the AWS SDK for php library
    require '/home/ceph/php_s3/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
    ));
    ?>

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

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

    $ php -f conn.php | echo $?

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

バケットの作成

  1. 新しいファイルを作成します。

    vim create_bucket.php

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

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

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

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

    php -f create_bucket.php

所有するバケットの一覧表示

  1. 新しいファイルを作成します。

    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";
    }
    
    ?>

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

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

    php -f list_owned_buckets.php

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

    my-new-bucket3 2016-01-21 10:33:19 UTC

オブジェクトの作成

  1. ソースファイル hello.txt を作成します。

    echo "Hello World!" > hello.txt
  2. 新しい php ファイルを作成します。

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

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

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

    php -f create_object.php

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

バケットの内容の一覧表示

  1. 新しいファイルを作成します。

    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";
    }
    ?>

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

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

    php -f list_bucket_content.php

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

    hello.txt    12    Fri, 22 Jan 2016 15:54:52 GMT

空のバケットの削除

  1. 新しいファイルを作成します。

    vim del_empty_bucket.php

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

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

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

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

    php -f del_empty_bucket.php | echo $?

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

    注記

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

空でないバケットの削除(強制的に実行)

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

オブジェクトの削除

  1. 新しいファイルを作成します。

    vim delete_object.php

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

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

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

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

    php -f delete_object.php

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

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

会社概要

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

© 2024 Red Hat, Inc.