Cloud Storage ではストリーミング転送がサポートされるため、データを最初にファイルに保存することなく、Cloud Storage アカウントと相互にデータのストリーミングを行うことができます。ストリーミングは、次のような場合に役立ちます。
プロセスからアップロード データを生成する場合や、状況に応じてオブジェクトを圧縮する場合など、アップロードの開始時に最終的なサイズがわからないデータをアップロードする場合。
Cloud Storage からプロセスにデータをダウンロードする場合。
ストリーミング時にチェックサム検証を使用する
チェックサムはアップロードの最初のリクエストでしか提供されないため、ストリーミング時に Cloud Storage のチェックサム検証を利用できないことも少なくありません。チェックサム検証は常に使用することをおすすめします。ストリーミング アップロードの完了後に手動で行うこともできますが、転送の完了後に検証を行った場合、破損を確認して削除する前に、破損したデータがアクセスされる可能性があります。
アップロードが完了してデータがアクセス可能になる前にチェックサム検証を行う必要がある場合は、ストリーミング アップロードを使用しないでください。オブジェクトの最終処理の前にチェックサム検証を行う別のアップロード オプションを使用する必要があります。
同様に、ダウンロードが完了してデータがアクセス可能になる前にチェックサム検証を行う必要がある場合は、ストリーミング ダウンロードを使用しないでください。ストリーミング ダウンロードでは Range
ヘッダーが使用されますが、Cloud Storage はこのようなリクエストに対してチェックサム検証を行いません。
前提条件
前提条件は使用するツールによって異なります。
コンソール
Google Cloud コンソールを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定のアクションに必要な権限の一覧については、Google Cloud コンソールに適用される IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
コマンドライン
コマンドライン ユーティリティを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定の操作に必要な権限の一覧については、gsutil コマンドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
コードサンプル
Cloud Storage クライアント ライブラリを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。特に断りのない限り、クライアント ライブラリのリクエストは JSON API を介して行われます。
特定のアクションに必要な権限の一覧については、JSON メソッドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
REST API
JSON API
JSON API を使用してこのガイドを完了するには、適切な IAM 権限が付与されている必要があります。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定のアクションに必要な権限の一覧については、JSON メソッドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。または、特定の制限された権限を持つカスタムロールを作成することもできます。
ストリーミング アップロード
次の例は、プロセスから Cloud Storage オブジェクトに対してストリーミング アップロードを行う方法を示しています。
コンソール
Google Cloud コンソールでは、ストリーミング アップロードはサポートされていません。代わりに gcloud CLI を使用してください。
コマンドライン
gcloud
データを
gcloud storage cp
コマンドに連結し、ソース URL に対してダッシュを使用します。PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
ここで
PROCESS_NAME
は、データを収集するプロセスの名前です。例:collect_measurements
BUCKET_NAME
は、オブジェクトを含むバケットの名前です。例:my_app_bucket
OBJECT_NAME
は、データから作成されるオブジェクトの名前です。例:data_measurements
gsutil
データを
gsutil cp
コマンドに連結し、ソース URL に対してダッシュを使用します。PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME
ここで
PROCESS_NAME
は、データを収集するプロセスの名前です。例:collect_measurements
BUCKET_NAME
は、オブジェクトを含むバケットの名前です。例:my_app_bucket
OBJECT_NAME
は、データから作成されるオブジェクトの名前です。例:data_measurements
コードサンプル
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
REST API
JSON API
ストリーミング アップロードを行うには、次の点を考慮したうえで、再開可能なアップロードの手順を行います。
ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。
最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの
Content-Range
ヘッダーの合計ファイルサイズに*
を使用します。たとえば、最初にアップロードしたチャンクのサイズが 512 KiB の場合、チャンクの
Content-Range
ヘッダーはbytes 0-524287/*
になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range
ヘッダーにはbytes 524288-588287/588288
という値が設定されます。
XML API
ストリーミング アップロードを実行するには、次のいずれかの方法を使用します。
次の調整を行った再開可能なアップロード:
ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。
最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの
Content-Range
ヘッダーの合計ファイルサイズに*
を使用します。たとえば、最初にアップロードしたチャンクのサイズが 512 KiB の場合、チャンクの
Content-Range
ヘッダーはbytes 0-524287/*
になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range
ヘッダーにはbytes 524288-588287/588288
という値が設定されます。
ストリーミング ダウンロード
次の例は、Cloud Storage オブジェクトからプロセスへのダウンロードを実行する方法を示しています。
コンソール
Google Cloud コンソールでは、ストリーミング ダウンロードはサポートされていません。代わりに gcloud CLI を使用してください。
コマンドライン
gcloud
リンク先 URL にダッシュを使用して
gcloud storage cp
コマンドを実行し、データをプロセスに連結します。gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
ここで
BUCKET_NAME
は、オブジェクトを含むバケットの名前です。例:my_app_bucket
OBJECT_NAME
は、プロセスにストリーミングするオブジェクトの名前です。例:data_measurements
PROCESS_NAME
は、データをフィードするプロセスの名前です。例:analyze_data
Cloud Storage オブジェクトのデータを、sort などの Linux の標準コマンドにストリーミングすることもできます。
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
リンク先 URL にダッシュを使用して
gsutil cp
コマンドを実行し、データをプロセスに連結します。gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
ここで
BUCKET_NAME
は、オブジェクトを含むバケットの名前です。例:my_app_bucket
OBJECT_NAME
は、プロセスにストリーミングするオブジェクトの名前です。例:data_measurements
PROCESS_NAME
は、データをフィードするプロセスの名前です。例:analyze_data
Cloud Storage オブジェクトのデータを、sort などの Linux の標準コマンドにストリーミングすることもできます。
gsutil cp gs://my_app_bucket/data_measurements - | sort
コードサンプル
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
REST API
JSON API
ストリーミング ダウンロードを行う場合は、次の点を考慮して、オブジェクトのダウンロード手順を行います。
ダウンロードを開始する前に、オブジェクトのメタデータを取得し、オブジェクトの世代番号を保存しておきます。元のリクエストに上書きされるときに異なる 2 世代のデータがダウンロードされないように、各リクエストにこの世代番号を含めます。
リクエストで
Range
ヘッダーを使用してオブジェクト全体の一部を取得し、それを目的のローカル プロセスに送信します。オブジェクト全体が取得されるまで、オブジェクトの連続部分に対してリクエストを続行します。
XML API
ストリーミング ダウンロードを行う場合は、次の点を考慮して、オブジェクトのダウンロード手順を行います。
ダウンロードを開始する前に、オブジェクトのメタデータを取得し、オブジェクトの世代番号を保存しておきます。元のリクエストに上書きされるときに異なる 2 世代のデータがダウンロードされないように、各リクエストにこの世代番号を含めます。
リクエストで
Range
ヘッダーを使用してオブジェクト全体の一部を取得し、それを目的のローカル プロセスに送信します。オブジェクト全体が取得されるまで、オブジェクトの連続部分に対してリクエストを続行します。
次のステップ
- 解凍トランス コーディングの詳細を確認する。
- アップロードとダウンロードの詳細を確認する。