Google Cloudのクライアントライブラリを利用してCloud Storage内のリソースを触ってみよう!
クライアントライブラリでGoogle Cloudのリソースを操作してみよう!
本記事ではGoogle Cloudのクライアントライブラリを利用することで、PythonのプログラムからCloud Storageを操作する方法をご説明します。
なお本記事ではPythonについてのみ触れていますが、Google CloudのクライアントライブラリではC++, C#, Go, Java, Node.js, PHP, Rubyにも対応してますので、詳しくはGoogle Cloudのドキュメントを見てください。
Cloud Storageをクライアントライブラリで操作してみよう
Google Cloud Platform(GCP)を利用している人にはおなじみのオブジェクトストレージ、Cloud Storage(GCS)。
Cloud Storageにはファイルをアップロードしたり、ダウンロードしたり、一般的なファイルサーバと同じ感覚で利用することができます。アップロードやダウンロードなどの操作をするためには、以下の方法があります。
- GUI(Cloud Console)上での操作
- gsutil
- クライアントライブラリ
- REST API
(参考) https://cloud.google.com/storage/docs/introduction?hl=ja
今回は上記の「3.クライアントライブラリ」による、Cloud Storageの操作について説明したいと思います。
クライアントライブラリとは
Google Cloud Platformの各サービスで用意されているAPIを簡単に利用するために、事前に用意されたクライアントライブラリを利用することで、任意のプログラミング言語でサービスを操作することが可能です。
Google Cloud上のドキュメントでは、クライアントライブラリが用意されているサービスについてはその使い方が丁寧に記載されています。このクライアントライブラリを利用することで、Cloud Storageはもちろん、他のGCPのサービスをプログラミングで自在に操作することができます。
Cloud Storageのクライアントライブラリについて
Google Cloudのドキュメントから、Cloud Storageのクライアントライブラリの利用方法についての説明が記述されています。
具体的な手順とコードのイメージは以下の通りです。(サンプルはPythonのコードです。)
pipでgoogle-cloud-storageをインストールします。
pip install --upgrade google-cloud-storage
続いて、サービスアカウントを作成します。
gcloud iam service-accounts create [サービスアカウント名]
作成したサービスアカウントに権限付与を行います。
gcloud projects add-iam-policy-binding [PROJECT_ID] --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
キーファイルを生成します。FILE_NAME はキーファイルの名前に置き換えてください。
gcloud iam service-accounts keys create [FILE_NAME.json] --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
環境変数(GOOGLE_APPLICATION_CREDENTIALS)を設定し、認証情報を指定します。
[PATH] にはサービスアカウントキーが含まれるJSONファイルのファイルパスを設定してください。
export GOOGLE_APPLICATION_CREDENTIALS=[PATH]
以下が実際に実行するサンプルコードになります。
“my-new-bucket”には作成するバケット名を設定してください。
# Imports the Google Cloud client library
from google.cloud import storage
# Instantiates a client
storage_client = storage.Client()
# The name for the new bucket
bucket_name = "my-new-bucket"
# Creates the new bucket
bucket = storage_client.create_bucket(bucket_name)
print("Bucket {} created.".format(bucket.name))
コメントでも説明がある通り、
- ライブラリのインポート
- インスタンスの作成
- 対象のバケット名の設定
- バケットの作成
という4つの処理で、Cloud Storage上にバケットを作成することができます。
もちろん、バケットを作成するだけでなく、ファイルのアップロードやダウンロードなどもクライアントライブラリを利用して実行することが可能です。
ちなみにクライアントライブラリは現状ではC++, C#, Go, Java, Node.js, PHP, Python, Rubyに対応しているようです。
(参考)Cloud Storage Client Libraries
https://cloud.google.com/storage/docs/reference/libraries?hl=ja
本記事で記載している通り、Cloud Storage以外のサービスでも様々なクライアントライブラリが用意されているため、お気に入りのサービスのクライアントライブラリが用意されているか確認して、ぜひ触ってみていただければと思います。
クライアントライブラリを活用できれば、自身で開発したWEBアプリケーションからGoogle Cloudのサービスを利用することも可能なので、一気にGoogle Cloudの活用の幅が広がりますので、ぜひ積極的に活用してみてください!