So können Sie cloudstorage-Dateien mit dem app engine SDK bereitstellen

8

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%     
voscausa 04.03.2014, 14:37
quelle

3 Antworten

8

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.

    
voscausa 12.03.2014, 15:15
quelle
4

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'.

    
Andrei Volgin 04.03.2014 15:54
quelle
0

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).

    
pestilence669 30.06.2017 21:58
quelle