Authentification d'un module Go privé sur Google App Engine Standard à l'aide de Go 1.11
Dans Go 1.11, l'introduction de modules offre un moyen plus efficace de gestion des dépendances. Cependant, lors de l'utilisation de modules privés sur Google App Engine Standard, des problèmes d'authentification peuvent survenir. Ce problème devient évident lorsque vous tentez de déployer une application gcloud et que vous rencontrez une erreur 403 Forbidden.
Pour résoudre ce problème, des approches traditionnelles telles que la vente ou l'utilisation d'outils de gestion des dépendances tiers (par exemple, DEP) ont été utilisées. Cependant, avec le nouveau système de modules, ces solutions peuvent ne pas être idéales.
Solution utilisant le remplacement du module
Au lieu de gérer les informations d'identification, une solution viable consiste à utiliser Go's Le module remplace la fonctionnalité pour demander à GAE d'utiliser le code local. Cette approche implique :
Configuration de la structure de répertoires :
Organisez votre projet avec la structure de répertoires suivante :
myService/ |__ src/ | |__ service.go | |__ go.mod |__ build/ |__ gae/ |__ src/ // Symlink to ../../src |__ modules/ // Git ignored |__ app.go |__ go.mod |__ app.yaml
Modification de GAE go.mod :
Créez un fichier go.mod dans le répertoire gae et spécifiez les dépendances, y compris le chemin local de votre module privé en utilisant replace :
module myServiceGAE require ( bitbucket.org/me/myService v0.0.0 google.golang.org/appengine v1.4.0 ) replace bitbucket.org/me/myService => ./src
Clonage ou copie de modules privés :
Dans le dossier modules sous le répertoire gae, clonez ou copiez vos modules privés avant construire le projet.
Cette approche vous permet de garder le code de votre module privé séparé de votre projet principal, tout en garantissant que GAE utilise la bonne version lors du déploiement.
Avantages :
Inconvénients :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!