Cloud Storage (Google Cloud)とAmazon S3を比較してみた

記事タイトルとURLをコピーする

G-gen の杉村です。
パブリッククラウドとして提供されるオブジェクトストレージの二大巨頭、 Cloud Storage (Google Cloud) と Amazon S3 (AWS) を比較してみました。
非常によく似ているサービスですが、どのような違いがあるのでしょうか。

Cloud Storage vs Amazon S3

Cloud Storage / Amazon S3 とは

Cloud Storage とは Google Cloud (旧称 GCP) が提供するオブジェクトストレージサービスです。

一方で Amazon S3 は Amazon Web Services (AWS) が提供するオブジェクトストレージサービスです。

これら2つのサービスはよく似ており、比較対象にもなります。

オブジェクトストレージが何か、また Cloud Storage の詳細については以下の記事にて解説していますのでご参照ください。

共通点

基本スペック

Cloud Storage と Amazon S3 はともにオブジェクトストレージ (キー・バリューストア) であり バケットオブジェクト という概念、 フラットな構成Web API による I/O などの共通点があります。

また、以下のような基本性能も共通しています。

  • 容量無制限
  • 99.999999999% (イレブンナイン) の耐久性
  • 複数のデータセンターに冗長化
  • 1 オブジェクトの最大サイズは 5 TiB
  • IAM やオブジェクトレベル ACL によるアクセス制御
  • データ保管料金に加えリクエスト回数に対する料金やネットワーク利用料金がかかるなどの課金体系
  • Read-after-Write の強い整合性

これらのことから、ユースケースがほぼ同じであり、基本的な性能ではどちらも引けを取らないものだということが分かります。

管理機能・付加機能

以下のような管理機能も共通です。

  • 監査ログ
  • ライフサイクル管理 (自動でストレージクラスを変更したり古いファイルを削除)
  • オブジェクトへのメタデータ付与
  • メトリクスのモニタリング
  • 規制/法令対応のための削除ロック

その他に、以下のような機能も共通しています。

  • 静的ウェブサイトホスティング機能
  • オブジェクト変更をトリガとしたメッセージキューイングサービスへの通知

ストレージクラスと料金の違い

ストレージクラスの違い

Cloud Storage と Amazon S3 はともに ストレージクラス の概念を持っており、保管期間やアクセス頻度により使い分けます。

頻繁にアクセスされるオブジェクトを配置する標準的なストレージのほか、アクセス頻度が低いファイルを配置するストレージ、めったにアクセスされないアーカイブ用のストレージなどがあります。
アーカイブ寄りのクラスほど、保存データサイズに対する料金は安い反面、書き込み・読み取りリクエスト回数や取り出しデータ量に対する料金が高いことでバランスが取られています。

Cloud Storage と Amazon S3 のストレージクラスを比較すると以下のようになります。
(いずれも東京リージョン、 2022 年 3 月現在)

Cloud Storage (料金ページ) (ストレージクラスに関するドキュメント)

ストレージクラス 保管料金 (GB/月) 最低保管期間 レイテンシ
Standard Storage $0.023 なし ミリ秒レベル
Nearline Storage $0.016 30 days ミリ秒レベル
Coldline Storage $0.006 90 days ミリ秒レベル
Archive Storage $0.0025 365 days ミリ秒レベル

Amazon S3 (料金ページ) (ストレージクラスに関するドキュメント)

ストレージクラス 保管料金 (GB/月) 最低保管期間 レイテンシ
S3 Standard $0.025 (最初の 50 TB)
$0.024 (次の 450 TB)
$0.023 (500 TB 以上)
なし ミリ秒レベル
S3 Standard - Infrequent Access $0.0138 30 days ミリ秒レベル
S3 One Zone - Infrequent Access $0.011 30 days ミリ秒レベル
S3 Glacier Instant Retrieval $0.005 90 days ミリ秒レベル
S3 Glacier Flexible Retrieval $0.0045 90 days 数分から数時間
S3 Glacier Deep Archive $0.002 180 days 数時間
S3 Intelligent - Tiering (料金ページ参照) - -

細かな違いはありますが、概ね「標準ストレージ」「30日程度保管・月1回程度のアクセス向けのストレージ」「90日程度保管・四半期に一度程度のアクセス向けのストレージ」「年単位の長期保管向けの最も安価なストレージ」がどちらにも用意されていることが分かります。

一方で Amazon S3 のほうが選択できるストレージクラスが多く、ユースケースに応じてより柔軟に選択することができます。
また S3 Intelligent - Tiering というクラスが存在し、これはオブジェクトのアクセス頻度によって自動的に最適なストレージクラスに振り分けてくれる機能です (しかし扱いとしては S3 Intelligent - Tiering 自体がストレージクラスの一種に位置づけられています) 。

なお「最低保管期間」の意味については、 Cloud Storage / Amazon S3 ともに「オブジェクトを生成してからこの日数を超えないうちにオブジェクトを削除等すると、この日数分の保管料金がかかる」という仕組みになっています。

また大きな違いとしては Cloud Storage の Archive Storage では、オブジェクト取得にかかる時間が ミリ秒単位 とされていることです。
一方で Amazon S3 の Glacier では Flexible Retrieval で 数分から数時間単位 、 Glacier Deep Archive で 数時間単位 です (利用するオプションによっても変わります) 。

ストレージクラスごとの料金

前述の表ではデータサイズに対してかかる保管料金のみを記載しました。
しかし Cloud Storage / Amazon S3 の両方で、ほかにも「リクエスト回数に対する課金」「データ取り出し量に対する課金」「ネットワーク利用に対する課金」が存在します。

これらについても比較してみます。いずれも 2022 年 3 月現在の東京リージョンの料金を記載していきます。

標準ストレージ

まずは 標準ストレージ の料金です。

ストレージクラス 保管料金(GB/月) 書込(/1,000回) 読取(/ 1,000回) データ取出リクエスト(/ 1,000回) データ取出量 (GB) 最低保管期間
Cloud Storage - Standard $0.023 $0.005 $0.0004 なし なし なし
Amazon S3 - Standard ・ $0.025 (最初の 50 TB)
・ $0.024 (次の 450 TB)
・ $0.023 (500 TB 以上)
$0.0047 $0.00037 なし なし なし

データ保存料金や書込/読取リクエスト数に対する料金に若干の違いはありますが、ほぼ同等クラスといえます。
また Amazon S3 ではデータ保管量が大きくなるにつれ、単位あたりの料金が安くなっています。

Nearline / Infrequent Access

次に Cloud Storage の Nearline Storage と Amazon S3 の Infrequent Access (Standard と One Zone の2種類) の違いです。
これらのストレージクラスは、標準ストレージよりはアクセス頻度が低いが、まったくアクセスが無いわけでもない... 概ね月に1〜数回程度のアクセスがあるオブジェクトを入れるためのクラスです。
バックアップ用途、災害対策用途、ログの長期保存などに適しています。

ストレージクラス 保管料金(GB/月) 書込(/1,000回) 読取(/ 1,000回) データ取出リクエスト(/ 1,000回) データ取出量 (GB) 最低保管期間
Cloud Storage - Nearline $0.016 $0.01 $0.001 なし $0.01 30 days
Amazon S3 - Standard - Infrequent Access $0.0138 $0.01 $0.001 なし $0.01 30 days
Amazon S3 - One Zone - Infrequent Access $0.011 $0.01 $0.001 なし $0.01 30 days

こちらは、若干 Amazon S3 のほうが安くなっています。
なお Amazon S3 の Standard - Infrequent Access と One Zone - Infrequent Access の違いですが、後者は冗長性が 1 ゾーンに閉じており、データの可用性・堅牢性を下げる代わりにより安い料金で提供されています。

Coldline / Glacier Instant Retrieval / Glacier Flexible Retrieval

次に Cloud Storage の Coldline Storage と Amazon S3 の Glacier Instant Retrieval および Glacier Flexible Retrieval を比較します。
これらのストレージクラスは、概ね3ヶ月に一度以下程度のアクセス頻度のオブジェクトを配置するためのクラスです。

ストレージクラス 保管料金(GB/月) 書込(/1,000回) 読取(/ 1,000回) データ取出リクエスト(/ 1,000回) データ取出量 (GB) 最低保管期間 取得にかかる時間
Cloud Storage - Coldline $0.006 $0.01 $0.005 なし $0.02 90 days ミリ秒レベル
Amazon S3 - Glacier Instant Retrieval $0.005 $0.02 $0.01 なし $0.03 90 days ミリ秒レベル
Amazon S3 - Glacier Flexible Retrieval $0.0045 $0.03426 $0.00037 $11.00 (Expedited) $0.033 (Expedited) 90 days 1〜5 分以内 (Expedited)

Cloud Storage の Coldline と Amazon S3 の Glacier Instant Retrieval が同格だと考えて良いでしょう。
データサイズに対する料金は若干 Glacier Instant Retrieval の方が安くなっていますが、取り出しにかかる料金等は Cloud Storage - Coldline Storage のほうが安いです。

Amazon S3 の Glacier Flexible Retrieval は取り出しのためのオプションが複数ありますが、今回は Cloud Storage に合わせて素早い取り出しが可能な Expedited モードの料金を記載しました。
ほかにも 3〜5 時間単位で取り出し可能な Standard モードや 3〜12 時間程度 かかるが一括取り出しに適した Bulk モードなどがあります (ドキュメント) 。

Archive / Glacier Deep Archive

最後に Cloud Storage の Archive Storage と Amazon S3 の Glacier Deep Archive を比較します。
これらのストレージクラスは、概ね年単位に一度以下のアクセス頻度のオブジェクトを配置するためのクラスです。

ストレージクラス 保管料金(GB/月) 書込(/1,000回) 読取(/ 1,000回) データ取出リクエスト(/ 1,000回) データ取出量 (GB) 最低保管期間 取得にかかる時間
Cloud Storage - Archive $0.0025 $0.50 $0.50 なし $0.05 365 days ミリ秒レベル
Amazon S3 - Glacier Deep Archive $0.002 $0.065 $0.00037 $0.1142 (Standard) $0.022 180 days 3〜5 時間 (Standard)

ここでも料金には僅かな違いがあり、データ保管料金は Glacier の方が若干安いですが、取り出しにかかる金額は Cloud Storage の方が安くなっています。

その他の大きな違いは Cloud Storage - Archive Storage は ミリ秒レベルのレイテンシ であるのに対し、 Amazon S3 - Glacier Deep Archive は 数時間が必要 な点です。
前述の通り Glacier には複数の取り出しタイプがありますが、 Deep Archive では Expedited モードは使えず Standard か Bulk になります。

ここまで記載したように、 Cloud Storage と Amazon S3 では料金面で若干の差があります。
傾向としてはデータサイズに対する料金は Amazon S3 の方が若干安く、リクエスト数に対する料金は Cloud Storage の方が若干安いです。

差が小さいとはいえ データ保管ボリュームがかなり巨大な場合 や、アプリケーションからの アクセス頻度がかなり多い場合 は、差が出てくることになります。

ネットワーク料金

Cloud Storage / Amazon S3 の両方で、ストレージへのデータのアップロードが無料な一方、 ストレージからのダウンロード のボリュームに応じて料金が発生します。

Cloud Storage

ティア 料金
0 - 1 TB $0.12
1 - 10 TB $0.11
10 TB - $0.08

Amazon S3

ティア 料金
0 - 10 TB $0.114 per GB
10 - 50 TB $0.089 per GB
50 - 150 TB $0.086 per GB
150 TB - $0.084 per GB

これらを比べると、大きな違いはなく、データ転送ボリュームがかなり巨大になったときに差が出てきます。

なおポイントとして、Amazon S3 には 月 100 GB までのデータ転送量の無料枠 があります。
(この利用枠は Amazon S3 だけでなく Amazon EC2 など他のサービスとも共有されます。) 小〜中規模の利用であれば、この無料枠で大半が賄えるでしょう。

一方で Google Cloud Storage では 「月に 1 GB のデータ転送量」「月 5 GB のデータ保管量」「月 5,000 回の書き込みリクエスト」「月 50,000 回の読み込みリクエスト」の無料枠があるもののこれが適用されるのは us-east1, us-west1, us-central1 の 3 リージョンだけ です。日本のユーザーが最も使うであろう東京・大阪リージョンでは適用されません (2022 年 3 月現在) 。

暗号化の違い

Cloud Storage では 全てのデータがデフォルトでサーバサイドで暗号化 されます。
この暗号化は 無効化することができません ので Cloud Storage では必ず保存時のデータが暗号化されることになります。

デフォルトでは Google が管理する暗号化鍵が利用されますが、ユーザ持ち込みの鍵を利用することも可能です。

一方で Amazon S3 では暗号化はオプションであり オフにすることができます
バケットごとの設定として暗号化をデフォルトとする選択が可能なほか、オブジェクトごとに暗号化の有無を選択できます。

Amazon S3 でも Amazon が管理する暗号化鍵を利用するか、ユーザ持ち込みの鍵を利用することが可能です。

暗号化の違いという点では Cloud Storage では暗号化をそもそもオフにできないため、設定漏れ等を未然に防ぐことができるといえます。

バケットのリージョン

Cloud Storage 、 Amazon S3 ともにバケット作成時にリージョンを指定します。

Amazon S3 では単一のリージョンを指定する一方、 Cloud Storage では 単一リージョンの他に「 デュアルリージョン 」「 マルチリージョン 」が選択できます。

デュアルリージョンやマルチリージョンを指定すると、データは複数のリージョンに非同期で自動的にレプリケーションされます。

リージョン間でデータをコピーする目的としては、 DR 目的での堅牢性・可用性の向上や、国を跨いで利用されるアプリケーションやウェブサイトのためにレイテンシを小さくすることが挙げられます。

Amazon S3 でも明示的に クロスリージョンレプリケーション を設定すれば同様のことが可能です。

Cloud Storage の方が、単にバケットの設定をマルチリージョン/クロスリージョンとするだけでリージョン間コピーが可能であり、かつアプリケーションや利用者側からは透過的に一つのバケット・一つのオブジェクトを指定するだけで済むため、より 実装がシンプル になるといえます。

データ連携

AWS の場合

Amazon S3 は マネージドの RDB サービスである Amazon RDSAmazon Aurora やデータウェアハウスである Amazon Redshift とのデータ連携が可能です。

また Amazon Kinesis Data Firehose など、各種 AWS サービスとの連携が容易にできるほか、 AWS サービスによってはログファイルの出力先が Amazon S3 になっているなど、 AWS をフル活用している場合は Amazon S3 を自然に活用することになります。

AWS を利用している場合は Amazon S3 がデータ保管の要 となります。

そのため AWS におけるデータ活用基盤では Amazon S3 がデータレイクとして使われる ケースが標準的です。
※ RA3 ノードタイプのマネージドストレージは Amazon S3 相当のため安価であり、構造化データは始めからここに配置する場合もあります。

AWS におけるデータ活用基盤のストレージ

Google Cloud の場合

同様に Cloud Storage では マネージドの RDB サービスである Cloud SQL や、世界的に非常に人気の高いデータウェアハウスである BigQuery とのデータ連携が可能です。

BigQuery のストレージは非常に安価です。
BigQuery では通常のストレージが $0.023 /GB 、 90 日間変更がなかったデータは Long-term Storage とされ $0.016 /GB になります。
これは Cloud Storage の Standard ($0.023 /GB)Nearline ($0.016 /GB) の保管金額と同じです。

分析対象となり得るデータであり BigQuery のテーブルに入れられる構造化データであれば、 Cloud Storage でなく始めから BigQuery に入れる という選択肢が出てきます。

そのため Google Cloud におけるデータ活用基盤では、 データレイクとして構造化データは BigQuery に非構造化データは Cloud Storage に 入れるというケースがよくあります。

Google Cloud におけるデータ活用基盤のストレージ

Amazon S3 vs Cloud Storage

クラウドサービスを比較検討している方の中には「 Amazon S3 と Cloud Storage はどちらのほうが 良い のか?」という疑問を持つ方もいらっしゃるかもしれません。

一つの考え方としてはこれらのサービスを 単純にストレージサービスとしての観点だけで見てしまう と Amazon S3 vs Cloud Storage という単純比較には あまり意味がない と言えます。

これまでに比較したように、これら 2 サービスは機能、堅牢性、料金などにおいてほとんど同等レベルを達成しています。
そうなったときに比較検討の基準となりえるのは、 他のクラウドサービスとの組み合わせ です。

"データ連携" の項で書いたように Amazon S3 は AWS の、 Cloud Storage は Google Cloud のデータ分析系サービスとの親和性が高いです。

例えば業務システムが AWS 上に配置されており、分析基盤も AWS の Amazon Redshift 等で構成されている場合は、データレイクのストレージは Amazon S3 が唯一の選択肢となります。

一方で業務システムが AWS にあるとしても、高性能・安価な BigQuery をデータウェアハウスとして利用したい場合、非構造化データは Cloud Storage に、構造化データは BigQuery に送信・保存するという選択肢は十分ありえます。

データの流れを上流から下流まで見たときに、データ連携において 「料金・性能・実装や運用の容易さ」の観点でどこにデータを配置するのが最も効率が良いか 、という点に着目してストレージを選択するべきです。

そのため Amazon S3 や Cloud Storage の機能のみならず、データの下流である Amazon Redshift, BigQuery, Snowflake などのデータウェアハウスサービスや BI ツールなどの仕様を確認して、オブジェクトストレージとの連携方法を把握することが望ましいでしょう。

なお参考として Google Cloud の BigQuery では Cloud Storage とは容易にデータを連携できることに加え BigQuery Omni 機能によって Amazon S3 のオブジェクトを外部テーブルとして定義し、直接クエリを投げることが可能です。(2022 年 3 月現在、東京リージョン未対応)

杉村 勇馬 (記事一覧) (Facebook)

クラウドソリューション部 部長

元・警察官という経歴を持つ現・エンジニア。クラウド管理運用やネットワークに知見。AWS 12冠、Google Cloud認定資格10冠。

2022年5月現在、ハマっているものはモンスターエナジーウルトラ。