Hier ist mein bestehender py-Code für Hochladen von Daten zu Blobstore.Umzug Blobstore zu GCS: Google App Engine Python
from google.appengine.api import files
def save_data_to_blob_store(data):
# Create the file
file_name = files.blobstore.create(mime_type='application/octet-stream')
# Open the file and write to it
with files.open(file_name, 'a') as f:
f.write(data)
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)
return str(blob_key)
Jetzt versuche ich Blobstore & Umzug nach GCS verbitten. Ich habe Code geschrieben, funktioniert aber nicht wie erwartet.
def save_data_to_gcs(request):
file_name = '/gs/bucket-name-1/new_file' # change bucket/object names to suit your needs
writable_file_name = files.gs.create(file_name, mime_type='application/octet-stream',
acl='public-read')
with files.open(writable_file_name, 'a') as f:
f.write('Hello World!\n')
f.write('This is a Google Cloud Storage object!\n')
files.finalize(writable_file_name)
Während dieses Verfahren ausgeführt wird, GAE einen Fehler auf Produktion zu werfen,
Exception in request:
Traceback (most recent call last):
File "/base/data/home/apps/s~bfsolu/248.371810019093562707/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/base/data/home/apps/s~bfsolu/248.371810019093562707/myapp/utils.py", line 51, in save_data_to_gcs
acl='public-read')
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/files/gs.py", line 326, in create
return files._create(_GS_FILESYSTEM, filename=filename, params=params)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/files/file.py", line 647, in _create
_make_call('Create', request, response)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/files/file.py", line 252, in _make_call
_raise_app_error(e)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/files/file.py", line 210, in _raise_app_error
raise PermissionDeniedError(e)
PermissionDeniedError: ApplicationError: 8
Jeder kann mir helfen, in save_data_to_gcs Verfahren zu korrigieren, würde zu schätzen wissen.
Danke.
Haben Sie GCS aktiviert (Abrechnung aktiviert, usw.)? In Google Cloud Console, nicht geben Sie Ihre App Zugriff auf Ihre Eimer? Um dies zu erreichen, wählen Sie Ihren Eimer, klicken Sie auf ‚Bucket Berechtigungen‘, und fügen Sie neue ‚User‘ Berechtigungen und bietet die App E-Mail-Adresse ([email protected]) und ein Eigentümer zu machen. –
@MarkSimpson: Danke buddy..Its funktioniert wie Charme .. ich einen Gefallen brauche, Wie eindeutige Schlüssel von Dateien Rekord zu bekommen? –
OK, ich habe meinen Kommentar unten in eine Antwort umgewandelt. Bitte akzeptiere es als korrekt. Veröffentlichen Sie diese neue Frage separat. Es hat nichts mit diesem Problem zu tun. Vielen Dank. –