Google Cloud Storage にPHPを使ってファイルをアップロードする

2018年9月5日

はじめに

今回は、Google Cloud Storageにバケットを作成し、バケットに権限を設定し、PHPを使ってバケットにファイルを設置するところまでを解説します。

 

Storageにバケットを作成する

まずはStorageを作成します。

下記画像のように「Storage > ブラウザ」にアクセスします。

 

 

 


 

開いたページの上部にある「バケットを作成」をクリックします。

 

 

 


 

入力項目に任意の設定を行います。

 

名前 バケット名になります。PHPでアップロードする際にバケット名を設定する箇所があります。
デフォルトのストレージ クラス ディスクアクセスする地域やアクセス頻度によって選択します。※ 選択によって金額が変動
場所 サーバーの設置箇所を選択します。日本なら「asia-east1」が最速だと思います。※ 選択によって金額が変動

 

 

今回は、サンプルとして名前を「kabanoki」、ストレージクラスを「Regional」、場所を「us-west2」で進めていきます。

 

 


 

バケットの作成ができると以下のページが開きます。

「kabanoki」バケットが作成されました。

 

 

権限を設定する

次にStorageにアクセスできる権限を設定します。

下記画像のように「IAMと管理 > サービスアカウント」に進みます。

 

 

 


 

サービスアカウントページの上部にある「サービスアカウントを作成」をクリックします。

 

 

 


 

サービスアカウントの作成を行います。

各項目に沿って入力していきます。

 

 

 


 

プロジェクトの役割は、「ストレージのオブジェクト管理者」を選んでおきます。

 

 

 


 

「新しい秘密鍵の提供」にチェックを入れ、「キーのタイプ」に「JSON」を選択します。

 

 

アカウントが作成されると、JSONファイルがダウンロードされると思います。
これは大事な認証鍵になるので失くさないようにしましょう!

これでアカウントの作成は完了です。

 


 

次に作成したアカウントにバケットへの権限を設定します。

任意のバケットページを開き、ページ上部の「権限」をクリックします。

 

 

 


 

下記画像のように役割を設定します。

これで権限の設定は完了です。

 

 

 

プロジェクトIDを確認する

メニューにあるプロジェクトをクリックします。

 

 

 

下記の赤枠部分に表示されているのがプロジェクトIDです。

 

 

 

PHPを設定する

ここまで来るのに長かったですが、いよいよPHPの設定を行って行きます。

導入ディレクトリイメージは下記になります。

 

 


 

まず「composer」が必要になるので下記ページなどを参考にインストールを行います。

composer 導入をまじめに考える

 

インストールができましたら、下記コマンドを入力します。


composer require google/cloud-storage

 

 


 

最後にPHPを設定します。

<?php
require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Storage\StorageClient;

// プロジェクトIDを入力
$projectId = 'hoge-23rfwe4';
// 認証鍵までのディレクトリを入力
$auth_key = './iam/kabanoki-bf1cc-f7706c743b95.json';
// バケットの名前を入力
$bucket_name = 'kabanoki';
// ファイルのディレクトリパスを入力
$path = 'file/img.png';


$storage = new StorageClient([
   'projectId' => $projectId,
   'keyFile' => json_decode(file_get_contents($auth_key, TRUE), true)
]);

$bucket = $storage->bucket($bucket_name);

$options = [
   'name' => $path
];

$object = $bucket->upload(
   fopen("{$path}", 'r'),
   $options
);

echo "[{$path}]のアップロード完了";

 

これでPHPの設定は終了です。

 

ブラウザでアクセス!!

下記画像のように「[file/img.png]のアップロード完了」が表示されたら、無事にStorageに画像がアップロードされているかと思います。

 

 


 

Storageを確認してみる。

 

 

 

無事にアップロード完了です!

 

 


 

いかがだったでしょうか?

今日はこの辺でー

 

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-GCP
-, , , , ,