このページでは、ローカル ファイル システムから Cloud Storage バケットにオブジェクトをアップロードする方法について説明します。アップロードされるオブジェクトは、保存するデータとそれに関連するメタデータから構成されます。ファイルサイズに基づいた最適なアップロード方法を選択する方法など、コンセプトの概要については、アップロードとダウンロードをご覧ください。
メモリからアップロードする手順については、メモリからオブジェクトをアップロードするをご覧ください。
必要なロール
バケットにオブジェクトをアップロードするために必要な権限を取得するには、バケットに対する Storage オブジェクト ユーザー(roles/storage.objectUser
)IAM ロールを付与するよう管理者に依頼してください。この事前定義ロールには、バケットにオブジェクトをアップロードするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.objects.create
storage.objects.delete
- この権限は、既存のオブジェクトを上書きするアップロードにのみ必要です。
storage.objects.get
- この権限は、Google Cloud CLI を使用してこのページのタスクを実行する場合にのみ必要です。
storage.objects.list
- この権限は、Google Cloud CLI を使用してこのページのタスクを実行する場合にのみ必要です。この権限は、アップロードしたオブジェクトを Google Cloud コンソールで確認する場合にも必要です。
このページのタスクを Google Cloud コンソールで実行する場合は、storage.buckets.list
権限も必要ですが、これは Storage オブジェクト ユーザー(roles/storage.objectUser
)ロールには含まれていません。この権限を取得するには、プロジェクトに対するストレージ管理者(roles/storage.admin
)ロールを付与するよう管理者に依頼してください。
これらの権限は、他の事前定義ロールやカスタムロールを使用して取得することもできます。
バケットに対するロールの付与については、バケットで IAM を使用するをご覧ください。
バケットにオブジェクトをアップロードする
オブジェクトをバケットにアップロードするには、次の手順を行います。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、オブジェクトをアップロードするバケットの名前をクリックします。
バケットの [オブジェクト] タブで次のいずれかを行います。
デスクトップまたはファイル マネージャーから Google Cloud コンソールのメインペインにファイルをドラッグします。
[ファイルをアップロード] ボタンをクリックして、表示されたダイアログでアップロードするファイルを選択し、[開く] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage cp
コマンドを使用します。
gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME
ここで
OBJECT_LOCATION
は、オブジェクトへのローカルパスです。例:Desktop/dog.png
。DESTINATION_BUCKET_NAME
は、オブジェクトをアップロードするバケットの名前です。例:my-bucket
。
成功した場合は、次の例のようなレスポンスになります。
Completed files 1/1 | 164.3kiB/164.3kiB
コマンドフラグを使用すると、アップロードしたオブジェクトの一部として、固定キーとカスタム オブジェクト メタデータを設定できます。
クライアント ライブラリ
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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Terraform
Terraform リソースを使用してオブジェクトをアップロードできます。content
または source
を指定する必要があります。
REST API
JSON API
JSON API は、メディアのアップロード(リクエストにオブジェクト データのみが含まれる)と JSON API マルチパート アップロード(リクエストにオブジェクト データとオブジェクト メタデータの両方が含まれる)を区別します。
メディア アップロード(オブジェクト メタデータのない単一のリクエストのアップロード)
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、POST
Object リクエストで JSON API を呼び出します。curl -X POST --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME"
ここで
OBJECT_LOCATION
は、オブジェクトへのローカルパスです。例:Desktop/dog.png
OBJECT_CONTENT_TYPE
は、オブジェクトのコンテンツ タイプです。例:image/png
。BUCKET_NAME
は、オブジェクトをアップロードするバケットの名前です。例:my-bucket
。OBJECT_NAME
は、オブジェクトに付ける URL エンコードの名前です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
JSON API マルチパート アップロード(オブジェクトのメタデータを含む単一リクエストのアップロード)
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる
multipart/related
ファイルを作成します。--BOUNDARY_STRING Content-Type: application/json; charset=UTF-8 OBJECT_METADATA --BOUNDARY_STRING Content-Type: OBJECT_CONTENT_TYPE OBJECT_DATA --BOUNDARY_STRING--
ここで
BOUNDARY_STRING
は、マルチパート ファイルのさまざまな部分を識別するように定義する文字列です。例:separator_string
。OBJECT_METADATA
は、ファイルに含めるメタデータ(JSON 形式)です。少なくとも、このセクションにはオブジェクトのname
属性({"name": "myObject"}
など)を含める必要があります。OBJECT_CONTENT_TYPE
は、オブジェクトのコンテンツ タイプです。例:text/plain
。OBJECT_DATA
はオブジェクトのデータです。
次に例を示します。
--separator_string Content-Type: application/json; charset=UTF-8 {"name":"my-document.txt"} --separator_string Content-Type: text/plain This is a text file. --separator_string--
cURL
を使用して、POST
Object リクエストで JSON API を呼び出します。curl -X POST --data-binary @MULTIPART_FILE_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: multipart/related; boundary=BOUNDARY_STRING" \ -H "Content-Length: MULTIPART_FILE_SIZE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=multipart"
ここで
MULTIPART_FILE_LOCATION
は、手順 2 で作成したマルチパート ファイルのローカルパスです。例:Desktop/my-upload.multipart
BOUNDARY_STRING
は、手順 2 で定義した境界文字列です。例:my-boundary
。MULTIPART_FILE_SIZE
は、手順 2 で作成したマルチパート ファイルの合計サイズ(バイト単位)です。例:2000000
BUCKET_NAME
は、オブジェクトをアップロードするバケットの名前です。例:my-bucket
。
リクエストが成功すると、HTTP 200 OK
ステータス コードとファイルのメタデータがサーバーから返されます。
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、PUT
Object リクエストで XML API を呼び出します。curl -X PUT --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
ここで
OBJECT_LOCATION
は、オブジェクトへのローカルパスです。例:Desktop/dog.png
OBJECT_CONTENT_TYPE
は、オブジェクトのコンテンツ タイプです。例:image/png
。BUCKET_NAME
は、オブジェクトをアップロードするバケットの名前です。例:my-bucket
。OBJECT_NAME
は、オブジェクトに付ける URL エンコードの名前です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
Content-Type
を設定する前の例と同じ方法で、リクエストのヘッダーにアップロードしたオブジェクトの一部として、追加のオブジェクト メタデータを設定できます。XML API を使用する場合は、オブジェクトを書き込むときだけに(オブジェクトのアップロード、コピー、置き換えなど)メタデータを設定できます。詳細については、オブジェクトのメタデータの編集をご覧ください。
次のステップ
- オブジェクトの命名要件について学習する。
- Compute Engine インスタンスからオブジェクトを転送する。
- クラウド プロバイダまたはその他のオンライン ソースからデータを転送する(URL リストを使用するなど)。
- オブジェクトとバケットにアクセスできるユーザーを制御する。
- オブジェクトのメタデータを表示する(オブジェクトの URL など)。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す