2013-01-17 4 views
36

Ich habe 1000 Dateien in Google Cloud Storage veröffentlicht oder allgemein eine Verzeichnishierarchie.Wie veröffentlichen Sie viele Dateien in Google Cloud Storage?

Im Web-UI kann ich scheinen, nur eins zu einem Zeitpunkt öffentlich zu machen.

Gibt es einen Weg, dies zu tun.

+0

Ich habe es gefunden. Sie können Folgendes ausführen: gsutil ls, um eine Liste von Dateien abzurufen. Dann können Sie die Liste mit gsutil setacl public-read * in xargs pipen. Sie können auch gsutil setdefacl public-read ausführen, damit zukünftige hochgeladene Dateien öffentlich zugänglich sind. – engineerchuan

Antwort

65

Run gsutil -m acl set -R -a public-read gs://bucket

  • Die -m Fragen mehr Anfragen zur gleichen Zeit.
  • Die -R Anforderungen für jedes Objekt in Ihrem Bucket.
  • Die -a gibt Anfragen für jede Version jedes Objekts aus.

Weitere Informationen finden Sie unter gsutil help acl.

An der API-Schicht gsutil Fragen die folgenden HTTP-Anfrage:

gsutil -D setacl public-read gs://bucket/obj 
+0

Danke dafür! Zurzeit wird die Anzeige 'gsutil acl set public-read gs: // bucket/object' angezeigt.Dies ist die Aktualisierungssyntax von 'setacl' zu 'acl set'? (https://developers.google.com/storage/docs/gsutil/commands/acl#set) –

+0

Liste vordefinierter ACLs (privat, öffentlich lesbar usw.): https://cloud.google.com/ storage/docs/access-control – ruhong

+0

Ich habe versucht, die ACL-Taktik und aktualisierte Dateien einfach auf nicht freigegeben :( – Darian311

42

Wenn Sie laufen: gsutil -m acl set -R -a public-read gs://bucket Sie öffentliche Lese definieren

PUT /bucket/obj?acl HTTP/1.1 
Host: storage.googleapis.com 
x-goog-acl: public-read 

Sie dies mit der -D Flagge mit gsutil sehen für alle Objekte, die sich momentan in Ihrem Bucket befinden, aber wenn Sie neue Dateien hochladen, sind sie standardmäßig nicht öffentlich.

Was ich fand, ist, dass es wert für einen Eimer Standard acl als öffentlich-lesen gsutil defacl set public-read gs://bucket

+1

Gute Idee. Leider funktioniert dies nur auf einem Top-Level-Bucket und kann nicht auf einen Ordner in einem Eimer verwendet werden andere Antwort funktioniert sogar auf einem Ordner. –

+1

Dieser Befehl funktioniert, sollte akzeptiert werden Antwort! –

+3

'gsutil defacl set public-read gs: // bucket' arbeitet mit allen zukünftigen Dateien einschließlich derjenigen in Unterverzeichnissen. Ignorieren Plastly Grove's Kommentar. – Albin

1

Sie alle Objekte in einem Eimer öffentlich machen zu definieren. Hier ist die link.

+0

Guys this sieht wie die Antwort aus. Ich habe gerade meine Bucket-Berechtigungen getestet. Ich habe mein Image geändert und neu hochgeladen und Google Storage hat die Berechtigungen nicht wie zuvor vermasselt Ich habe diesen Befehl ausgeführt: gsutil iam ch allUsers: objectViewer gs: // [BUCKET_NAME]. Nur für den Fall, dass Sie sich wundern, Amazon ist immer noch in Führung, um solche Dinge einfach zu machen. Wow viel zu viel Lernkurve, um das gleiche auf GS zu tun. – Darian311

1

und fügen Sie die auf Erik Namen zu kopieren, arbeitete für mich konsequent:

öffentlich

lesbar Gruppen von Objekten zu machen

Um alle Objekte in einem Eimer öffentlich lesbar zu machen:

CONSOLEGSUTILREST APIS Verwenden Sie den Befehl gsutil iam ch und ersetzen Sie [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME] 
2

Strom (Okt/2017) Dokumentation über Hosting eine statische Webseite gefunden here Punkte:

gsutil acl ch -r -u AllUsers:R gs://bucket-name

Wo die -r den rekursive Trick und -u AllUsers:R gibt den öffentlichen Lesezugriff.