Cloud Storage では、データをファイルに保存することなく、データをバケットにストリーミングできます。これは、プロセスからアップロード データを生成する場合や、状況に応じてオブジェクトを圧縮する場合など、アップロードの開始時に最終的なサイズがわからないデータをアップロードする場合に役に立ちます。
ストリーミング時にチェックサム検証を使用する
チェックサムはアップロードの最初のリクエストでしか提供されないため、ストリーミング時に Cloud Storage のチェックサム検証を利用できないことも少なくありません。チェックサム検証は常に使用することをおすすめします。ストリーミング アップロードの完了後に手動で行うこともできますが、転送の完了後に検証を行った場合、破損を確認して削除する前に、破損したデータがアクセスされる可能性があります。
アップロードが完了してデータがアクセス可能になる前にチェックサム検証を行う必要がある場合は、ストリーミング アップロードを使用しないでください。オブジェクトの最終処理の前にチェックサム検証を行う別のアップロード オプションを使用する必要があります。
前提条件
前提条件は使用するツールによって異なります。
コンソール
Google Cloud コンソールを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定のアクションに必要な権限の一覧については、Google Cloud コンソールに適用される IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
コマンドライン
コマンドライン ユーティリティを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定の操作に必要な権限の一覧については、gcloud storage
コマンドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
クライアント ライブラリ
Cloud Storage クライアント ライブラリを使用してこのガイドを完了するには、適切な IAM 権限が必要です。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特に断りのない限り、クライアント ライブラリのリクエストは JSON API を介して行われ、JSON メソッドの IAM 権限に記載されている権限が必要です。クライアント ライブラリを使用してリクエストを行うときに呼び出される JSON API メソッドを確認するには、元のリクエストをログに記録します。
関連する IAM ロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
REST API
JSON API
JSON API を使用してこのガイドを完了するには、適切な IAM 権限が付与されている必要があります。ストリーミングするバケットが、他のユーザーが作成したプロジェクトに存在する場合は、そのプロジェクトのオーナーから必要な権限を持つロールを付与してもらう必要があります。
特定のアクションに必要な権限の一覧については、JSON メソッドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
ストリーミング アップロード
次の例は、プロセスから 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
という値が設定されます。
XML API
ストリーミング アップロードを実行するには、次のいずれかの方法を使用します。
次の調整を行った再開可能なアップロード:
ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。
最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの
Content-Range
ヘッダーの合計ファイルサイズに*
を使用します。たとえば、最初にアップロードしたチャンクのサイズが 512 KiB の場合、チャンクの
Content-Range
ヘッダーはbytes 0-524287/*
になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range
ヘッダーにはbytes 524288-588287/588288
という値が設定されます。
次のステップ
- ストリーミング ダウンロード
- 解凍トランス コーディングの詳細を確認する。
- アップロードとダウンロードの詳細を確認する。