ストリーミング転送

Cloud Storage ではストリーミング転送がサポートされるため、データを最初にファイルに保存することなく、Cloud Storage アカウントと相互にデータのストリーミングを行うことができます。

ストリーミング アップロードは、プロセスからアップロード データを生成する場合や、状況に応じてオブジェクトを圧縮する場合など、アップロードの開始時に最終的なサイズがわからないデータをアップロードする際に役立ちます。

ストリーミング ダウンロードは、Cloud Storage からプロセスにデータをダウンロードする場合に便利です。

アップロードのストリーミング

次の例は、プロセスから Cloud Storage オブジェクトに対してストリーミング アップロードを行う方法を示しています。

gsutil

  1. データを 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++ を使用してオブジェクトのアップロードをストリーミングするには、WriteObject のリファレンス ドキュメントをご覧ください。

C#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

C# を使用してオブジェクトのアップロードをストリーミングするには、SimpleUpload のリファレンス ドキュメントをご覧ください。

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Go を使用してオブジェクトのアップロードをストリーミングするには、NewWriter のリファレンス ドキュメントをご覧ください。

Go では、アップロードとダウンロードにそれぞれ標準の io.Writerio.Reader インターフェースを使用し、どちらもストリーミングが可能です。

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Java を使用してオブジェクトのアップロードをストリーミングするには、writer リファレンス ドキュメントをご覧ください。

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

Node.js を使用してオブジェクトのアップロードをストリーミングするには、createWriteStream リファレンス ドキュメントをご覧ください。

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

PHP を使用してオブジェクトのアップロードをストリーミングするには、upload リファレンス ドキュメントをご覧ください。

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

現時点では、Python クライアント ライブラリを使用してアップロードをストリーミングすることはできません。

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

現時点では、Ruby クライアント ライブラリを使用してアップロードをストリーミングすることはできません。

REST API

JSON API

ストリーミング アップロードを行うには、次の点を考慮したうえで、再開可能なアップロードの手順に従います。

  • ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。

  • 最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの Content-Range ヘッダーの合計ファイルサイズに * を使用します。

    たとえば、最初にアップロードしたチャンクのサイズが 512 K の場合、チャンクの Content-Range ヘッダーは 0-524287/* になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range ヘッダーには 524288-588287/588288 という値が設定されます。

XML API

ストリーミング アップロードを行うには、次の点を考慮したうえで、再開可能なアップロードの手順に従います。

  • ファイルデータ自体をアップロードする場合は、複数のチャンクのアップロードを使用します。

  • 最終チャンクになるまで合計のファイルサイズがわからないため、中間チャンクの Content-Range ヘッダーの合計ファイルサイズに * を使用します。

    たとえば、最初にアップロードしたチャンクのサイズが 512 K の場合、チャンクの Content-Range ヘッダーは 0-524287/* になります。最初のチャンクのアップロード後に 64,000 バイト残っている場合は、残りのバイトを含む最終チャンクを送信します。Content-Range ヘッダーには 524288-588287/588288 という値が設定されます。

ダウンロードのストリーミング

次の例は、Cloud Storage オブジェクトからプロセスへのダウンロードを実行する方法を示しています。

gsutil

  1. リンク先 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++ を使用してオブジェクトのダウンロードをストリーミングするには、ReadObject のリファレンス ドキュメントをご覧ください。

C#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

C# を使用してオブジェクトのダウンロードをストリーミングするには、SimpleDownload のリファレンス ドキュメントをご覧ください。

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Go を使用してオブジェクトのダウンロードをストリーミングするには、NewReader リファレンス ドキュメントをご覧ください。

Go では、アップロードとダウンロードにそれぞれ標準の io.Writerio.Reader インターフェースを使用し、どちらもストリーミングが可能です。

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Java を使用してオブジェクトのダウンロードをストリーミングするには、reader リファレンス ドキュメントをご覧ください。

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

Node.js を使用してオブジェクトのダウンロードをストリーミングするには、createReadStream リファレンス ドキュメントをご覧ください。

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

PHP を使用してオブジェクトのダウンロードをストリーミングするには、downloadAsStreams リファレンス ドキュメントをご覧ください。

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

現時点では、Python クライアント ライブラリを使用してダウンロードをストリーミングすることはできません。

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

現時点では、Ruby クライアント ライブラリを使用してダウンロードをストリーミングすることはできません。