13 votes

Impossible de sauvegarder le datastore de l'application GAE dans le seau GS.

J'essaie de sauvegarder le datastore GAE dans le seau GS comme décrit ici : https://developers.google.com/appengine/docs/adminconsole/datastoreadmin#Backup_And_Restore . J'ai essayé de fournir le nom du seau dans les formulaires :

bucket 
/gs/bucket
/gs/bucket/path

mais rien de tout cela ne fonctionne. Chaque fois, je reçois un message :

There was a problem kicking some off the jobs/tasks:
Invalid bucket name: 'bucket'

Qu'est-ce que je fais de mal ? Est-il possible de sauvegarder toutes les données (y compris les fichiers blob) sur GS sans écrire de code personnalisé ?

21voto

Andrew Dyster Points 1156

J'ai réussi à le faire fonctionner en ajoutant le compte de service e-mail en tant qu'utilisateur privilégié avec droit d'écriture.

Voilà ce que j'ai fait :

  1. Créer un seau via l'interface web (STORAGE>CLOUD STORAGE>Navigateur de stockage > Nouveau seau)
  2. Ajouter APPID@appspot.gserviceaccount.com en tant qu'utilisateur privilégié avec la permission de modifier (Permissions>Ajouter un membre)

Même s'il faisait partie du même projet, pour une raison quelconque, j'ai dû ajouter l'e-mail du projet en tant qu'utilisateur privilégié.

7voto

fejta Points 2823

Je soupçonne que le seau n'existe pas ou que le moteur d'application n'a pas la permission d'écrire dans le seau.

Assurez-vous que les éléments suivants sont vrais :

  1. Vous avez créé BUCKET . Utilisez quelque chose comme gsutil pour créer le godet si nécessaire.
    • gsutil mb gs://BUCKET
  2. Assurez-vous que votre compte de service de moteur d'application a un accès WRITE à BUCKET .
  3. Maintenant, démarrez la sauvegarde en utilisant le formulaire /gs/BUCKET

Si vous recevez un Bucket "/gs/BUCKET" is not accessible alors votre seau n'existe pas, ou bien APP_NAME@appspot.gserviceaccount.com n'a pas accès à votre godet.

NOTE : le formulaire est /gs/BUCKET . Les éléments suivants sont faux : BUCKET , gs://BUCKET , gs/BUCKET etc.

Vérifiez que le seau existe avec les bonnes permissions avec la commande suivante :

gsutil getacl gs://BUCKET  # Note the URI form here instead of a path.

Recherchez une entrée comme la suivante :

<Entry>
  <Scope type="UserByEmail">
    <EmailAddress>APP_NAME@appspot.gserviceaccount.com</EmailAddress>
  </Scope>
  <Permission>WRITE</Permission>
</Entry>

Si vous n'en voyez pas, vous pouvez en ajouter un de la manière suivante :

gsutil getacl gs://BUCKET > acl.xml
vim acl.xml  # Or your favorite editor
# Add the xml above
gsutil setacl acl.xml gs://BUCKET

Maintenant, les étapes ci-dessus vont fonctionner.

0voto

TheJacobTaylor Points 2982

Je viens de passer un moment à me débattre avec ça moi-même. Merci @fejta pour votre aide.

Je n'ai pas réussi à comprendre. J'avais ajouté mon utilisateur au projet, vérifié que je pouvais écrire, mis à jour manuellement l'ACL (ce qui n'aurait pas dû être nécessaire), ...

En fin de compte, la création d'un seau à partir de la ligne de commande via :

gsutil mb gs://BUCKET

au lieu de l'interface utilisateur web a fonctionné pour moi. Les multiples compartiments créés avant ou après l'ajout de l'utilisateur à l'équipe ont tous donné lieu au message "Invalid bucket name" (nom de compartiment non valide).

Je l'ai abordé avec :

/gs/BUCKET

0voto

Rad Apdal Points 379

Assurez-vous de bien suivre les instructions ici :

https://cloud.google.com/appengine/docs/standard/python/console/datastore-backing-up-restoring#restoring_data_to_another_app

Les choses à vérifier :

  1. ajouter une autorisation ACL à votre application cible
  2. si la sauvegarde est déjà créée avant l'ajout de la permission au seau, trouver la sauvegarde et ajouter la permission.
  3. ajouter [PROJECT_ID]@appspot.gserviceaccount.com en tant que membre de votre application source avec le rôle d'éditeur
  4. le chemin à importer dans votre application source est /gs/bucket

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X