Cloud Storage の使用

Cloud Storage は、ファイル(動画や画像、その他の静的コンテンツなど)を保存または提供する目的で使用できます。

このドキュメントでは、アプリで Google Cloud クライアント ライブラリを使用して、Cloud Storage にデータを格納したり、Cloud Storage からデータを取得したりする方法を説明します。

始める前に

  • App Engine 上の PHP に関する「Hello, World!」の手順に従って環境とプロジェクトをセットアップし、App Engine での PHP アプリの構造を理解してください。このドキュメントで説明しているサンプル アプリケーションを実行する際に必要となるため、プロジェクト ID を書き留めておきます。

  • 必ず、次のコマンドを呼び出して、アプリケーション用の Cloud Storage バケットを作成してください。

    gsutil mb gs://[YOUR_BUCKET_NAME]
    
  • バケットを一般公開(読み取り可能)にして、ファイルを提供できるようにします。

    gsutil defacl set public-read gs://[YOUR_BUCKET_NAME]
    

サンプルのダウンロード

レポジトリのクローンを作成するには:

git clone https://github.com/GoogleCloudPlatform/php-docs-samples
cd php-docs-samples/appengine/flexible/storage

プロジェクト設定の編集と依存関係のインストール

app.yamlCLOUD_STORAGE_BUCKET を設定します。この値は、以前に作成した Cloud Storage バケットの名前です。

env_variables:
  GOOGLE_STORAGE_BUCKET: "your-bucket-name"

composer.json に Cloud クライアント ライブラリを追加して Cloud Storage の機能を提供する必要があります。

{
    "require": {
        "silex/silex": "^1.3",
        "google/cloud-storage": "^1.0"
    },
    "require-dev": {
        "guzzlehttp/guzzle": "^6.3",
        "symfony/browser-kit": "^3.0",
        "google/cloud-tools":"^0.6"
    }
}

アプリケーション コード

このサンプル アプリケーションはウェブページを表示し、Cloud Storage に保存するファイルを指定するようユーザーに促します。ユーザーがファイルを選択して [送信] をクリックすると、アップロード ハンドラがファイルの内容を blob に読み込み、Cloud Storage に書き込みます。

ファイルが Cloud Storage にアップロードされると、このファイルの公開 URL が返されます。この URL を使用して、Cloud Storage から直接ファイルを配信できます。今後も使用できるように、この値をアプリで保存してください。

use Google\Cloud\Storage\StorageClient;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;

// create the Silex application
$app = new Application();

$app->get('/', function () use ($app) {
    /** @var Google\Cloud\StorageClient */
    $storage = $app['storage'];
    $bucketName = $app['bucket_name'];
    $objectName = $app['object_name'];
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $content = $object->exists() ? $object->downloadAsString() : '';
    $escapedContent = htmlspecialchars($content);
    $form = <<<EOF
    <h1>Storage Example</h1>
    <h3>Write [<a href="https://cloud.google.com/appengine/docs/flexible/php/using-cloud-storage">docs</a>]:</h3>
    <form action="/write" method="post">
        Some file content:<br />
        <textarea name="content"></textarea><br />
        <input type="submit" />
    </form>
EOF;
    if ($content) {
        $form .= "<p><strong>Your content:</strong><p><p>$escapedContent</p>";
    }
    return $form;
});

/**
 * Write to a Storage bucket.
 * @see https://cloud.google.com/appengine/docs/flexible/php/using-cloud-storage
 */
$app->post('/write', function (Request $request) use ($app) {
    /** @var Google\Cloud\StorageClient */
    $storage = $app['storage'];
    $bucketName = $app['bucket_name'];
    $objectName = $app['object_name'];
    $content = $request->get('content');
    $metadata = ['contentType' => 'text/plain'];
    $storage->bucket($bucketName)->upload($content, [
        'name' => $objectName,
        'metadata' => $metadata,
    ]);
    return $app->redirect('/');
});

$app['storage'] = function () use ($app) {
    $projectId = $app['project_id'];
    $storage = new StorageClient([
        'projectId' => $projectId
    ]);
    return $storage;
};

詳細情報

Cloud Storage の詳細については、Cloud Storage のドキュメントをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP の App Engine フレキシブル環境に関するドキュメント