【試した環境】 Google Cloud Platform(GCP)[VMインスタンス]で実行 OS : Linux(Debian 9.2) PHP(7.0.27)
今回は [Google Cloud Storage] を [PHP] 上から利用していきます。
ストレージバケットを作成
コンソールを使えばそれほど難しくないので、詳細は割愛します。まずは [Google Cloud Platform コンソール] で [Strage] - [ブラウザ] と進み、[バケット] を作成します。
ストレージ バケットの作成
注意点は[バケット名]の命名です。
命名にはある程度の制限があります。
[Cloud Storage] 全体でユニークである必要があるため、誰かが利用しているバケット名は使うことができません。
また、ドメイン名を持つバケットには検証が必要です。
ファイルのダウンロード(参照)
まずは作成したバケットにファイルをアップロードします。ファイルを一般公開にすることで、以下でアクセスができるようになります。
https://storage.googleapis.com/[バケット名]/[オブジェクト名(ファイル名)]
ファイルのアップロード
今回はPHPで利用するので、前準備としてPHP用の [client library] をインストールする必要があります。Cloud Storage Client Libraries
まずはPHPパッケージ管理の [Composer] をインストールします。
Composerをインストールしてみた
そしてインストールした [Composer] を利用して [client library] をインストールします。
composer require google/cloud-storage
Google Cloud Storage を PHPで。
[allUsers] を [ストレージオブジェクト閲覧者] に。
そして、アクセス許可するための [Google Cloud Platform コンソール] で [service account key] を作成します。
[APIとサービス] - [認証情報] とアクセスし、[認証情報を作成]-[サービスアカウントキー] を選択します。
[サービスアカウント] で [新しいサービスアカウント] を選択します。
適当な[サービス アカウント名] を入力し、役割を [Project > Owner] に設定します。
[キーのタイプ] を [JSON] に設定し、[作成] すると、[秘密鍵ファイル] がダウンロードされる。([秘密鍵ファイル(JSON)] は再ダウンロードができないので、大事に保管すること)
[秘密鍵ファイル] をサーバ上の任意の場所にアップロードし、new StorageClient() でインスタンス生成時に[秘密鍵ファイル]を指定すればよい(keyFile)
あとは、以下のPHPのアップロードサンプルプログラムを参考にすればファイルがアップロードできます。
<?php include_once 'vendor/autoload.php'; use Google\Cloud\Storage\StorageClient; function uploadObject($bucketName, $objectName, $source) { $projectId = '<プロジェクトID>'; $storage = new StorageClient([ 'projectId' => $projectId, 'keyFile' => json_decode(file_get_contents('<秘密鍵jsonファイルのフルパス>'), true) ]); $file = fopen($source, 'r'); $bucket = $storage->bucket($bucketName); $object = $bucket->upload($file, [ 'name' => $objectName ]); }
0 件のコメント:
コメントを投稿