In der App-Engine kann ich cloudstorage-Dateien wie eine PDF-Datei mit dem Standard-Bucket meiner Anwendung bereitstellen:
%Vor%Aber wie kann ich lokale Cloudspeicherdateien im SDK bereitstellen, ohne einen Blob-Schlüssel zu verwenden?
Ich schreibe so in den Standard-Bucket:
%Vor%Der Name des Standard-Buckets im SDK = 'app_default_bucket'
Im SDK-Datenspeicher habe ich eine Art: GsFileInfo : filename: /app_default_bucket/example.pdf
Update und Workaround: Sie können eine Bereitstellungs-URL für NON-Bilddateien wie css, js und pdf erhalten.
%Vor%UPDATE Ich habe diese Funktion gefunden, um cloudstorage-Dateien mit dem SDK zu bedienen:
Diese Funktion wurde noch nicht dokumentiert.
%Vor%Dies bedeutet, dass wir die img serving URL nicht benötigen, um NICHT-Bilder wie unten gezeigt zu servieren !!!
Um eine Serving-URL für cloudstorage-Dateien wie Bilder, CSS, JS und PDFs im default_bucket zu erstellen, verwende ich diesen Code zum Testen (SDK) und zur GAE-Produktion:
WICHTIG: images.get_serving_url () funktioniert auch für NICHT-Bilder im SDK !!
Im SDK benötigen Sie den Blobstore, um einen Blob zu lesen und eine Serving-URL für ein Cloudstorage-Objekt zu erstellen.
Ich habe auch den Code zum Lesen, Schreiben und Hochladen von Cloudstorage-Blobs in die SDK- und GAE-Produktion hinzugefügt.
Der Code kann hier gefunden werden.
Dies ist der Wert, den Sie im Entwicklungsmodus von app_identity_stub.py sehen:
%Vor%Die Kommentare in dieser Datei erklären es:
Dieser Dienst verhält sich genauso wie der Produktionsdienst, außer dass er verwendet wird Konstante Werte anstelle von App-spezifischen Werten
Sie sollten die richtige URL in Ihrem Produktionscode erhalten.
BEARBEITEN:
Dies ist aus dem Support-Forum:
Im Entwicklungsmodus simulieren die App-Engine-Tools Google Cloud Speicherdienste lokal. Objekte in dieser simulierten Umgebung sind nicht persistent, so dass Ihre App fehlschlägt, weil das gewünschte Objekt existiert nicht im lokalen Laden. Wenn Sie zuerst erstellen (und optional Schreiben Sie in das Objekt, das Sie lesen möchten, es sollte in Dev funktionieren Modus (hat es für mich getan). Natürlich sind Objekte im Produktionsservice persistent, so dass Sie keinen zusätzlichen Schritt benötigen App im Produktionsmodus (vorausgesetzt, das Objekt existiert bereits).
Hoffe das hilft,
Marc Google Cloud Storage-Team
Das bedeutet, dass Sie zuerst eine Datei schreiben müssen, dann können Sie sie verwenden. Wenn ich das richtig verstanden habe, können Sie zu diesem Zweck einen beliebigen Bucket-Namen verwenden, einschließlich 'app_default_bucket'.
Ich war hier früher auf der Suche nach Antworten und wollte nur teilen, was ich gefunden habe, jetzt, wo ich es funktioniert habe.
Sie können das jetzt tun, und es ist nur ein bisschen schmerzhaft. Das Tricksen der Image- oder Blobstore-API wird nicht unterstützt und scheint nicht mehr zu funktionieren.
Siehe:
Wenn Sie Ihre URLs signieren, können Sie für Ihre anonymen oder bezahlpflichtigen Inhalte automatisch ablaufende Links zu Ihren Inhalten hinzufügen. Sie möchten nicht Ihre gesamte Website auf diese Weise bereitstellen, aber für eine PDF oder was auch immer, ist dies eine gültige und halb sichere Option.
In der Dokumentation fehlt möglicherweise der Zeilenumbruch für die erweiterten kanonischen Header. Der Speicherendpunkt sagt Ihnen, was er erwartet, wenn die Signatur fehlerhaft ist.
Ihr Gastgeber sollte auch: Ссылка
sein Wenn Sie App Engine verwenden, lautet GoogleAccessId
: & lt; Projektname & gt; @ appspot.gserviceaccount.com
Siehe: app_identity.get_service_account_name()
Beispiel zum Generieren der Signatur:
%Vor% Das gibt ein Tupel von (privateKey, binarySignature)
zurück.
Jetzt müssen Sie die URL erstellen. Die Signatur sollte base64-codiert und dann urlencodiert sein. Im Folgenden wird beschrieben, wie die URL erstellt wird. Sie sollten wahrscheinlich den oben genannten Download-Host verwenden.
Beispiel-URL aus der Dokumentation:
%Vor%Ich hoffe, das hilft jemandem!
Oh ja, du musst nur die ganzen Sachen machen, wenn dein Eimer nicht öffentlich zugänglich ist (alles lesen).
Tags und Links python google-app-engine google-cloud-storage sdk serving