「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。
Google Cloud Storage(GCS)とは
Cloud Storageとは、低料金で大容量のデータを保存することが出来るストレージサービスです。データは複数のリージョンやゾーンにまたがって保存されるため、安全かつ堅牢にデータを保存することが出来ます。また、データは少なくとも2つのゾーンに保存されます。
ストレージサービスはクラウドの中でも理解がしやすいサービスかと思います。本記事では、Associate Cloud Engineer資格取得に向けて、Google Cloud Storage(GCS)の理解しておくべきポイントをまとめました。
データの保存場所を選択する
ロケーションタイプでは、バケットをどのリージョンに作成するかを選択することが出来ます。以下の3つから選択することが出来、コストや可用性が変わってきます。
- マルチリージョン:複数の大陸内の2つ以上のリージョンにデータが複製されて保存されます。リージョン単位で障害が発生しても、データの可用性と冗長性を担保することが出来ます。エンドユーザーは一番近いリージョンからアクセスすることが出来るため、アクセス速度を高速化することが出来ます。
- デュアルリージョン:複製されたデータを保存するために、2つのリージョンを選択することが出来ます。例えば、東京と大阪の2つのリージョンを選択できます。データを保存するリージョンを指定したい場合におすすめです。
- リージョナル:1つのリージョン内の複数のソーンにデータが複製されて保存されます。GCSを使用するリソースと同じリージョンにすることで、アクセス速度を向上させることが出来ます。
以下がGoogle Cloudコンソールからの選択画面です。
リージョンとゾーンについては、以下の記事で解説をしています。
ストレージクラスと最小保存期間
最小保存期間とは、オブジェクトがパケットに保存されると、オブジェクトが削除や移動をしたとしても、各ストレージクラスで決められている最小の保存期間分のコストが発生することです。ストレージクラスによって最小保存期間が変わってきます。
Standard | Nearline | Coldline | Archive | |
最小保存期間 | なし | 30日 | 90日 | 365日 |
アクセス頻度目安 | 頻繁 | 1か月に1回 | 数か月に1回 | 1年に1回 |
データ保存料金 | 高い | やや高い | やや安い | 安い |
データ処理料金 | 安い | やや安い | やや高い | 高い |
データの保存料金とは、パケットに保存されるデータに対して発生する料金です。保存するデータ量の分だけ料金が発生します。
データ処理料金とは、GCSのオブジェクトを操作する頻度に対して発生する料金です。データのダウンロードなどをする際に課金が行われます。
大容量のファイルをGCSにアップロードする場合
大容量のファイルをGCSにアップロードする場合のおすすめの方法をご紹介します。
並列複合アップロード
Cloud Storageバケットにサイズの大きいファイルをアップロードするための効率的な方法として、並列複合アップロードがあります。1 つのファイルをチャンクに分割され、これらのチャンクが並列して一時オブジェクトにアップロードされるため、高速でアップロードすることが出来ます。
【参考】並列複合アップロード
再開可能なアップロード
大容量のファイルをアップロードしている途中にネットワーク障害で接続が切れてしまい、最初からアップロードしなおさなければならない、、ということを防ぐためには再開可能なアップロードを使用します。
再開可能なアップロードを使用することでアップロードが途中で中断した場合でも途中からアップロードを再開することが出来ます。
使用方法については以下の公式ドキュメントを参考にしてください。
ライフサイクル管理
ライフサイクル管理を使用することで、適切なコスト管理やデータの整理を行うことが出来ます。例えば、データのアクセス頻度に応じてストレージクラスを変更したり、オブジェクトの保存期間を設定することが出来ます。
データへのアクセス管理
Cloud Storageには、バケットやオブジェクトへのアクセスを管理するためには、IAMとアクセス制御リスト(ACL)、署名付きURL使用します。この2つの方法について説明します。
均一なバケットレベルのアクセス
Cloud Storageのバケットに対して、均一なアクセス管理をする場合はIAMを使用します。この機能を使用すると、バケット内のすべてのCloud StorageリソースへのACLが無効になり、アクセスはIAMによってのみ管理されます。
リソースへのアクセスを制御する方法としてはこちらの方法が推奨されています。
バケットの権限の設定で「アクセス制御」から「均一」を選択することで、バケットレベルでのアクセスを有効化することが出来ます。この設定を有効化すると、IAMでバケットへのアクセスが許可されたユーザーのみがアクセスできるようになります。ACLを適用したい場合は、「きめ細かい管理」を選択します。
アクセス制御リスト(ACL)
オブジェクトごとにきめ細かくアクセス権を指定したい場合は、アクセス制御リスト(ACL)を使用します。ACLを設定することで、以下のようにユーザーレベルでアクセス権を割り当てることが出来ます。
署名付きURL
署名付きURLを使用することで、URLを知っている人ならだれでもCloud Storageバケットやオブジェクトにアクセスすることが出来ます。Google Cloudアカウントを持っていないユーザーでもアクセスすることが出来ます。ユーザーはバケットやオブジェクトへアクセスし、アップロードやダウンロードをすることが出来ます。
URLへアクセスすることが出来る期間は決まっており、期間がくるとアクセスが出来なくなります。Googleアカウントを持っていないユーザーなどに対して、オブジェクトへのアクセスを許可したい場合は署名付きURLを使用する方法が推奨されています。
gsutilコマンド
gsutil mb
gsutil mbコマンドは、GCSに新しいバケットを作成するコマンドです。
基本構文は以下の通りです。
gsutil mb [OPTIONS] gs://[BUCKET_NAME]
- OPTIONS:オプションを指定します。
- BUCKET_NAME:作成するバケットの名前を指定します。
使用例は以下の通りです。
# ロケーションasia-northeast1にストレージクラスがstandardのtest-bucketという名称のバケットを作成する
gsutil mb -c standard -l asia-northeast1 gs://test-bucket
gsutil cp
gsutil cpはファイルやフォルダをコピーするコマンドです。自分のPCなどのローカル環境からGCSバケットへのコピー、GCSバケットからローカル環境へのコピーなどをすることが出来ます。
- OPTIONS:オプションを指定します。
- SRC_URL:コピー元のパスを指定します。
- DST_URL:コピー先のパスを指定します。
基本構文は以下の通りです。
gsutil cp [OPTIONS] [SRC_URL] [DST_URL]
使用例は以下の通りです。
# ローカルのtest.txtという名称のファイルをtest-bucketという名称のバケットにコピーする
gsutil cp test.txt gs://test-bucket
オプション
- -m:複数の処理を並行して処理を実行することが出来ます。例として、Aファイルをアップロードしている間に、Bファイルも並行してアップロードすることが出来るようになります。
- -c:ストレージクラスを指定することが出来ます。ストレージクラスには、standard,nearline,coldline,archiveなどを指定することが出来ます。
- -l:ロケーションを指定することが出来ます。
その他メモ
- Storageバケットはリージョンに作成します。ゾーンは指定することが出来ません。
- Cloud Storageへ保存されるデータはデフォルトで暗号化されています。特別にユーザーが暗号化の設定をする必要はありません。