Cloud Storage では、データをファイルに保存することなく、データをバケットにストリーミングできます。これは、プロセスからアップロード データを生成する場合や、状況に応じてオブジェクトを圧縮する場合など、アップロードの開始時に最終的なサイズがわからないデータをアップロードする場合に役に立ちます。
ストリーミング時にチェックサム検証を使用する
チェックサムはアップロードの最初のリクエストでしか提供されないため、ストリーミング時に Cloud Storage のチェックサム検証を利用できないことも少なくありません。チェックサム検証は常に使用することをおすすめします。ストリーミング アップロードの完了後に手動で行うこともできますが、転送の完了後に検証を行った場合、破損を確認して削除する前に、破損したデータがアクセスされる可能性があります。
アップロードが完了してデータがアクセス可能になる前にチェックサムを検証する必要がある場合は、ストリーミング アップロードを使用しないでください。オブジェクトの最終処理の前にチェックサム検証を行う別のアップロード オプションを使用する必要があります。
必要なロール
アップロードのストリーミングに必要な権限を取得するには、次のいずれかのロールの付与を管理者に依頼します。
オブジェクト保持ロックを含むアップロードの場合は、バケットに対する Storage オブジェクト管理者(
roles/storage.objectAdmin
)IAM ロールの付与を管理者に依頼します。それ以外の場合は、バケットに対するストレージ オブジェクト ユーザー(
roles/storage.objectUser
)の IAM ロールの付与を管理者に依頼します。
これらの事前定義ロールには、Cloud Storage へのアップロードのストリーミングに必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.objects.create
storage.objects.delete
- この権限は、既存のオブジェクトを上書きするアップロードにのみ必要です。
storage.objects.get
storage.objects.list
- この権限は、ここで説明する操作を Google Cloud CLI で行う場合にのみ必要です。
storage.objects.setRetention
- この権限は、オブジェクト保持ロックを含むアップロードでのみ必要です。
これらの権限は、他の事前定義ロールやカスタムロールを使用して取得することもできます。
バケットに対するロールの付与については、バケットで IAM を使用するをご覧ください。
ストリーミング アップロード
次の例は、プロセスから Cloud Storage オブジェクトに対してストリーミング アップロードを行う方法を示しています。
コンソール
Google Cloud コンソールでは、ストリーミング アップロードはサポートされていません。代わりに gcloud CLI を使用してください。
コマンドライン
データを
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
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST API
JSON API
ストリーミング アップロードを実行するには、次のいずれかの方法を使用します。
次の調整を行った再開可能なアップロード。
ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。
最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの
Content-Range
ヘッダーの合計ファイルサイズに*
を使用します。たとえば、最初にアップロードしたチャンクのサイズが 512 KiB の場合、チャンクの
Content-Range
ヘッダーはbytes 0-524287/*
になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range
ヘッダーにはbytes 524288-588287/588288
という値が設定されます。
次の調整を行った単一リクエストのアップロード:
Transfer-Encoding: chunked
ヘッダーを含め、Content-Length
ヘッダーを除外します。仕様に従ってリクエストを作成し、オブジェクト データが利用可能になったらチャンクで送信します。
XML API
ストリーミング アップロードを実行するには、次のいずれかの方法を使用します。
次の調整を行った再開可能なアップロード:
ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。
最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの
Content-Range
ヘッダーの合計ファイルサイズに*
を使用します。たとえば、最初にアップロードしたチャンクのサイズが 512 KiB の場合、チャンクの
Content-Range
ヘッダーはbytes 0-524287/*
になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range
ヘッダーにはbytes 524288-588287/588288
という値が設定されます。
次の調整を行った単一リクエストのアップロード:
Transfer-Encoding: chunked
ヘッダーを含め、Content-Length
ヘッダーを除外します。仕様に従ってリクエストを作成し、オブジェクト データが利用可能になったらチャンクで送信します。
リクエストで
Authorization
ヘッダーに署名が使用されている場合、ストリーミング アップロードを実行できません。
次のステップ
- ストリーミング ダウンロード。
- 解凍トランス コーディングの詳細を確認する。
- アップロードとダウンロードの詳細を確認する。