web-dev-qa-db-ja.com

GCSバケットでのパブリック読み取りアクセスを許可しますか?

バケット内のファイルの匿名(またはアプリケーションドメインからのみ)読み取りアクセスを許可しようとしています。

ファイルを読み取ろうとすると

`` `

<Error>
    <Code>AccessDenied</Code>
    <Message>Access denied.</Message>
    <Details>
        Anonymous users does not have storage.objects.get access to object.
    </Details>
</Error>

`` `

また、Googleクラウドコンソールのオブジェクトのデフォルトの権限ダイアログでドメインを追加しようとしました。 「アクセス権の1つが無効です。グループとユーザーの承認済みIDまたはメールアドレス、およびドメインのドメインを入力してください」というエラーが表示されます

バケットのACLの作成も検討しましたpublic-read。これに関する私の唯一の問題は、バケットの所有権が削除されることです。特定のGoogleアクセスIDからのアップロードを許可するため、その所有権が必要です。

35

Gsutilを使用すると、所有権を削除せずに、バケット内に作成された新しいオブジェクトを一般に読み取り可能にすることができます。バケットで作成された新しいオブジェクトを一般に読めるようにするには:

gsutil defacl ch -u AllUsers:R gs://yourbucket

バケット内に既存のオブジェクトを公開して読みたい場合は、次を実行できます。

gsutil acl ch -u AllUsers:R gs://yourbucket/**

37
Travis Hobrla

コンソールからも実行できます。
https://console.cloud.google.com/storage/
バケットのアクセス許可の編集を選択します。
[メンバーの追加]オプションに[allUsers]を入力し、ロールとして[ストレージオブジェクトビューアー]を入力します。次に、「役割の選択」に進み、「ストレージ」と「ストレージオブジェクトのレガシー」を「ストレージオブジェクトビュー」に設定します。

GCS bucket access

32
adam shamsudeen

IAMロールを使用して、ファイルを読み取り可能にし、リストをブロックします。

gsutil iam ch allUsers:legacyObjectReader gs://bucket-name

ファイルを読み取り可能にし、リストを許可するには:

gsutil iam ch allUsers:objectViewer gs://bucket-name
9
Jacob
  1. Google Cloud Platform ConsoleでCloud Storageブラウザを開きます。
  2. バケットのリストで、公開するオブジェクトを含むバケットの名前をクリックし、オブジェクトがサブディレクトリにある場合はそのオブジェクトに移動します。
  3. 公開するオブジェクトに関連付けられたドロップダウンメニューをクリックします。
  4. ドロップダウンメニューは、オブジェクトの行の右端に3つの垂直ドットとして表示されます。
  5. ドロップダウンメニューから[権限の編集]を選択します。
  6. 表示されるオーバーレイで、[+アイテムを追加]ボタンをクリックします。
  7. AllUsersのアクセス許可を追加します。

    • エンティティのユーザーを選択します。
    • 名前に「allUsers」と入力します。
    • アクセス用のリーダーを選択します。
    • 保存をクリックします。
  8. パブリックに共有されると、パブリックアクセス列にリンクアイコンが表示されます。このアイコンをクリックして、オブジェクトのURLを取得できます。

データを公開する Google Cloud Docsの説明

3
Digimix

firebase functionsでファイルをアップロードする場合、トークンを渡さずにアクセスできるようにするには、参照オブジェクトでmakePublic()を呼び出す必要があります。

2
haxpanel