このページでは、公共インターネット上ですべての人が閲覧できるオブジェクトの作成方法を示します。公開されたデータへのアクセス方法については、一般公開データへのアクセスをご覧ください。
オブジェクトが公開されて共有されると、そのオブジェクトが公開されている限り、そのオブジェクトの URI を知っているすべてのユーザーがオブジェクトにアクセスできます。
必要なロール
オブジェクトを一般公開するために必要な権限を取得するには、次のロールを付与するよう管理者に依頼してください。
個々のオブジェクトを一般公開する: Storage オブジェクト管理者(
roles/storage.objectAdmin
)- Google Cloud コンソールの使用を予定している場合は、Storage オブジェクト管理者ロールではなく、ストレージ管理者(
roles/storage.admin
)ロールが必要です。
- Google Cloud コンソールの使用を予定している場合は、Storage オブジェクト管理者ロールではなく、ストレージ管理者(
バケット内のすべてのオブジェクトを一般公開するには、ストレージ管理者(
roles/storage.admin
)またはストレージのレガシー バケット オーナー(roles/storage.legacyBucketOwner
)の権限が必要です。
これらのロールには、オブジェクトを公開するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
次の権限は、Google Cloud コンソールを使用してこのページのタスクを実行する場合にのみ必要です。
storage.buckets.list
storage.objects.list
これらの権限は、他の事前定義ロールやカスタムロールを使用して取得することもできます。
バケットに対してロールを付与する手順については、バケットで IAM を使用するをご覧ください。
個々のオブジェクトを公開する
公共のインターネット上のすべてのユーザーが個々のオブジェクトを読み取れるようにするには、プリンシパル allUsers
に READER
ロールを付与します。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
一般公開するオブジェクトが含まれているバケットの名前をクリックします。オブジェクトがサブディレクトリ内にある場合はその場所に移動します。
オブジェクトの名前をクリックします。
[アクセス権を編集] をクリックします。
表示されたオーバーレイで、[add_boxエントリを追加] ボタンをクリックします。
allUsers の権限を追加します。
- [エンティティ] には [公開] を選択します。
- [名前] には [allUsers] を選択します。
- [アクセス権] には [読み取り] を選択します。
[保存] をクリックします。
公開アクセスが付与されると、[公開アクセス] 列に [URL をコピー] が表示されます。このボタンをクリックすると、オブジェクトの公開 URL を取得できます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
開発環境で、
--add-acl-grant
フラグを指定してobjects update
コマンドを実行します。gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
ここで
BUCKET_NAME
は、公開するオブジェクトを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、公開するオブジェクトの名前です。例:pets/dog.png
クライアント ライブラリ
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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる JSON ファイルを作成します。
{ "entity": "allUsers", "role": "READER" }
cURL
を使用してInsert
ACL リクエストで JSON API を呼び出します。curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/acl"
ここで
JSON_FILE_NAME
は、手順 2 で作成したファイルのパスです。BUCKET_NAME
は、公開するオブジェクトを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、公開するオブジェクトの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる XML ファイルを作成します。
<AccessControlList> <Entries> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
cURL
を使用して、Set Object ACL
リクエストで XML API を呼び出します。curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?acl"
ここで
XML_FILE_NAME
は、手順 2 で作成したファイルのパスです。BUCKET_NAME
は、公開するオブジェクトを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、公開するオブジェクトの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
バケット内のすべてのオブジェクトを公開する
公共のインターネット上のすべてのユーザーがバケット内のすべてのオブジェクトを閲覧できるようにするには、プリンシパル allUsers
に Storage オブジェクト閲覧者(roles/storage.objectViewer
)のロールを付与します。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、公開するバケットの名前をクリックします。
ページ上部にある [権限] タブを選択します。
[権限] セクションで、[
アクセスを許可] ボタンをクリックします。[アクセスを許可] ダイアログが表示されます。
[新しいプリンシパル] フィールドに「
allUsers
」と入力します。[ロールを選択] プルダウンで、フィルタ ボックスに「Storage オブジェクト閲覧者」と入力し、フィルタ処理された結果から [Storage オブジェクト閲覧者] を選択します。
[保存] をクリックします。
[一般公開アクセスを許可] をクリックします。
公開アクセスが付与されると、各オブジェクトの [公開アクセス] 列に [URL をコピー] が表示されます。このボタンをクリックすると、オブジェクトの公開 URL を取得できます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
開発環境で、
buckets add-iam-policy-binding
コマンドを実行します。gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
ここで、
BUCKET_NAME
は、オブジェクトを公開するバケットの名前です。例:my-bucket
クライアント ライブラリ
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 リソースを使用します。
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
cURL
を使用して JSON API を呼び出し、PUT
Bucket リクエストを行います。curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
JSON_FILE_NAME
は、手順 2 で作成したファイルのパスです。BUCKET_NAME
は、オブジェクトを公開するバケットの名前です。例:my-bucket
XML API
XML API では、バケット内のすべてのオブジェクトを公開して読み取り可能にすることはできません。Google Cloud コンソールまたは gcloud storage
を使用します。
次のステップ
- 公開されたデータにアクセスする。
- バケットとオブジェクトのアクセス制御オプションの詳細について学習する。