J'ai créé une application Google App Engine qui écoute les notifications de stockage Google Cloud et chaque fois qu'un nouvel objet est créé sur GCS, l'application doit ouvrir le nouvel objet et effectuer des opérations en fonction de son contenu. Je ne peux pas accéder au contenu de l'objet lorsque l'application et le bucket gcs sont dans des projets différents.
Configuration:
J'ai créé un compte de service dans le projet A avec les autorisations Admin d'objet de stockage, associé l'application GAE avec lui, activé le compte de service en utilisant :
gcloud auth activate-service-account \[COMPTE\] --key-file=KEY\_FILE
J'ai ensuite créé un bucket gs://some_bucket dans le projet B dans la même région que mon application GAE, et j'ai ajouté mon compte de service en tant que propriétaire du bucket.
J'ai ajouté mon compte de service en tant que membre du projet B avec des autorisations "Admin d'objet de stockage".
J'ai créé un canal watchbucket entre mon application et le bucket en utilisant
gsutil notification watchbucket -i \[ChannelId\] -t \[Token\] https://\[nom-de-l'application\].appspot.com/ gs://some\_bucket
Maintenant, mon application reçoit des requêtes post, je peux les analyser, trouver le bucket source, la taille, le nom de l'objet, etc. mais je ne peux pas lire les objets eux-mêmes. Je reçois l'erreur suivante.
{Localisation : ""; Message : "Accès refusé : Fichier gs://some\_bucket/some\_object : Accès refusé"; Raison : "accessDenied"}
J'ai testé la configuration ci-dessus dans le même projet (projet A), et je peux lire les objets et opérer dessus. Il s'agit d'un problème de permissions que je n'arrive pas à résoudre.