ソロソロ来るゾ! Google Cloud Platform!

第5回オブジェクトストレージのCloud Storage

Cloud Storage

Cloud StorageはオブジェクトストレージのSaaSで、AWSで言うところのS3に相当するようなサービスです。

データはCloud Storage側で自動的に暗号化されてGoogleのディスクに保存されます。

3種類のStorage Classラインナップ

以下の3種類があります。

  • Standard Storage
  • Durable Reduced Availability(DRA)Storage
  • Nearline Storage

StandardはS3のスタンダードストレージ、Durable Reduced Availability(DRA)はS3の低冗長化ストレージ、NearlineはS3で言うところのGlacierの立ち位置のサービスです。ただしNearlineはGlacierとかなり違った特徴を持っていますので、後述の説明を参考にしてください。

これらのStorage ClassはBucketごとに設定します。Storage Classは後から変更できないので、変更(のようなこと)をしたい場合は別Bucketを作成してコピーする形になります。

選び方は悩ましいですが、基本はStandard Storageです。可用性は高く、かつ読み出しレイテンシは低く、10msec程度で読み取り開始します。

Durable Reduced Availability(DRA)はStandardと同じレイテンシですが、可用性を下げる代わりに安くなります。ログの一時保存先などに利用すると良さそうです。

Nearlineは少し可用性が低く読み出しレイテンシが高い(読み込みが遅い)です。ただレイテンシが高いと言ってもおおむね2~5秒で読み込みできるようになります。制約が大きい代わりにとても安いストレージクラスです。

Bucket単位での管理

データはBucket(バケツ)ごとに管理します。Bucketはフォルダやディレクトリと違いネストできませんが、Bucketの中にフォルダを作成することはできます。Bucket内のオブジェクト(≒ファイル)数は制限がありません。1ファイルあたりの容量についても、TB級のファイルも置けるとのことです。

新しいBucketを作成する際には以下を指定します。

図1 Developer ConsoleでのBucket作成
図1 Developer ConsoleでのBucket作成
バケット名

全Cloud StorageのBucketの中でユニークである必要があります

ストレージクラス

Standard/Durable Availability(DRA⁠⁠/Nearlineから選択

場所

米国(US⁠⁠/EU(Europe⁠⁠/アジア(Asia)から選択

場所についてはアップロード元に近いところを選択するのが良さそうです。Bucketからのデータ読み取りについてはGoogleのEdge Cacheが効くため、データ配信の場合はユーザの近くのEdge Cacheから配信することで高速にダウンロードが可能になっています。

Bucketへの書き込みについてはstrong read-after-write consistencyを採用しているため、uploadが終わったらすぐ読み取りが可能です。書き込んだオブジェクトはImmutableなので更新はできず、更新の代わりに削除・作成で対応します。

Cloud StorageはGCPの他のサービスでも活用されています。Compute Engineではstartup scriptやinstance image置き場として使ったり、BigQeuryやCloud SQLではデータインポート元として使ったりしています。

Object Change Notificationできる!

Object Change NotificationはBucketを監視しオブジェクト(ファイル)の追加・更新・削除があった場合にweb hookで通知を受け知ることができる機能です。通知エラーが発生した場合はリトライしてくれるというすばらしい親切設計になっています。

AWSではS3とは別のLambdaというサービスで実現していますが、Cloud Storageでは組込みの機能になっています。

詳細な使い方についてはリンク先をご覧ください。

Webサイトもできる!

アクセス許可設定と配信設定をすることで、Cloud Storageだけを使って静的なWebサイトを提供することもできます。

バケット名をドメイン名にする必要があり、ドメイン名の場合はドメインの所有者であることを認証する必要があります。認証方法は「http://ドメイン/」のヘッダに指定の文字列を埋め込む、DNSのTXTレコードに指定の文字列を埋め込むなどの方法があります。

CNAMEレコードを使ってホストしたいサブドメインをc.storage.googleapis.comに転送するので、Zone Apexのサイトとしては利用できません(www.example.comは可能ですが、example.comは不可能⁠⁠。

Developers Consoleで設定可能です。BucketをWebサイトとして使うよう設定して配信設定をし、個々のファイルにSHARED PUBLICLYのチェックを付けて読み取りを許可します。

図2 Webサイトとして使う設定
図2 Webサイトとして使う設定
図3 ファイルにSHARED PUBLICLYを設定
図3 ファイルにSHARED PUBLICLYを設定

価格

格納しておくためにストレージ利用容量に対する費用がかかり、出し入れするためにネットワーク利用量に対する費用がかかり、データ操作のためのAPIリクエスト数に対する費用がかかります。

ストレージ利用容量価格は以下のとおりです。

タイプ 価格
Standard Storage $0.026GB/月
Durable Reduced Availability(DRA)Storage $0.020GB/月
Nearline Storage $0.010GB/月

ネットワーク利用量価格は以下のとおりです。なおアップロードについては無償です。

月間利用量 ダウンロード(中国、オーストラリア以外) 中国 オーストラリア
0~1TB $0.12/GB $0.23/GB $0.19/GB
1~10TB $0.11/GB $0.22/GB $0.18/GB
10TB~ $0.08/GB $0.20/GB $0.15/GB

データ操作のためのAPIリクエスト数の価格は以下のとおりです。

タイプ 価格
クラスA操作 $0.01/1000操作
クラスB操作 $0.01/10000操作

XML APIでの操作のクラス分けは以下のとおりです。

  • クラスA
    • GET Service
    • GET Bucket (when listing objects in a bucket)
    • PUT
    • POST
  • クラスB
    • GET Bucket (when retrieving bucket configuration)
    • GET Object
    • HEAD
  • 無償
    • DELETE

JSON APIでの操作のクラス分けは以下のとおりです。

  • クラスA
    • storage.*.insert
    • storage.*.patch
    • storage.*.update
    • storage.buckets.list
    • storage.objects.compose
    • storage.objects.copy
    • storage.objects.list
    • storage.objects.watchAll
    • storage.bucketAccessControls.delete
    • storage.defaultObjectAccessControls.delete
    • storage.objectAccessControls.delete
  • クラスB
    • storage.*.get
    • storage.bucketAccessControls.list
    • storage.defaultObjectAccessControls.list
    • storage.objectAccessControls.list
    • Each notification
  • 無償
    • storage.channels.stop
    • storage.buckets.delete
    • storage.objects.delete

次回は

次回はデータ解析基盤のBigQueryと、その他のサービスを紹介する予定です。

おすすめ記事

記事・ニュース一覧