(Ceci est un mémo sur python de GAE 1gen que j'ai écrit il y a longtemps, mais je vais le laisser tomber car il est dans le brouillon. Je pense que ce n'est pas nécessaire car GAE 2gen est maintenant le courant dominant)
Lorsque vous faites référence à GCS à partir de GAE / py, il y a un cas de nom de fichier qui nécessite un encodage URL, donc j'en étais un peu accro, alors prenez-en note. De plus, ce problème n'est pas un problème lorsque vous touchez vous-même l'API REST, etc., c'est juste une histoire que le traitement des devis de la bibliothèque de stockage cloud pour GAE n'était pas cohérent.
La documentation AppEngine fait référence à une bibliothèque appelée bibliothèque cliente Google Cloud Storage ().
Le nom est incohérent,
pip install GoogleAppEngineCloudStorageClient
C'est une bibliothèque qui peut être faite.
Le nom du référentiel sur github est appengine-gcs-client, donc ce nom peut être correct. Il semble qu'il y en ait un pour java et un pour python, mais cette fois, nous parlons d'une bibliothèque pour python.
En tant que fonction, je pense que l'interface pour accéder à l'API REST de Cloud Storage en utilisant les informations d'identification d'AppEngine est enveloppée de manière fichier.
La seule chose qui est restée bloquée cette fois est que la demande n'a pas été effectuée conformément aux spécifications de l'API REST. Cela était dû au fait qu'il y avait une partie de l'implémentation de la bibliothèque cliente où le processus de devis d'URL était omis.
J'étais accro à la méthode copy2 (src, dst)
, et le src de celui-ci était encodé en URL. C'était un phénomène que la chaîne de caractères transmise à d'autres méthodes et dst était encodée en URL même si ce n'était pas le cas.
La raison est simple: les autres arguments sont principalement passés en tant que paramètres de chemin, donc le traitement ʻurllib.quote () est écrit, alors que Le src de la méthode copy2 est le paramètre d'en-tête de l'API REST [
x-goog-copy-source](https://cloud.google.com/storage/docs/xml-api/reference-headers?hl=ja#xgoogcopy) Parce qu'il a été passé comme ʻurllib.quote ()
le traitement n'a pas été écrit.