Comment résoudre le problème de l'échec de la construction lorsque CI / CD de Python Function avec AWS Amplify

Comme le titre l'indique, j'ai rencontré un problème de construction échouant lorsque CI / CD de Python Function avec AWS Amplify.

Conclusion (comment gérer)

J'ai pu passer la construction en ajoutant ce qui suit à amplify.yml dans les paramètres de construction.

version: 1
backend:
  phases:
    build:
      commands:
        #Ajout d'ici>>>
        - export BASE_PATH=$(pwd)
        - yum install -y gcc openssl-devel bzip2-devel libffi-devel python3.8-pip
        - cd /opt && wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
        - cd /opt && tar xzf Python-3.8.2.tgz 
        - cd /opt/Python-3.8.2 && ./configure --enable-optimizations
        - cd /opt/Python-3.8.2 && make altinstall
        - pip3.8 install --user pipenv
        - ln -fs /usr/local/bin/python3.8 /usr/bin/python3
        - ln -fs /usr/local/bin/pip3.8 /usr/bin/pip3
        - cd $BASE_PATH
        # <<<Ajouté jusqu'à ici
        - '# Execute Amplify CLI with the helper script'
        - amplifyPush --simple

Problèmes survenus

Dans la phase de construction CI / CD, il est indiqué que Python 3.8 ou supérieur est requis, comme indiqué ci-dessous.

2020-10-27T19:21:49.678Z [INFO]: python3 found but version Python 3.7.4 is less than the minimum required version.
                                 You must have python >= 3.8 installed and available on your PATH as "python3". It can be installed from https://www.python.org/downloads
                                 You must have pipenv installed and available on your PATH as "pipenv". It can be installed by running "pip3 install --user pipenv".
2020-10-27T19:21:49.679Z [WARNING]: ✖ An error occurred when pushing the resources to the cloud
                                    ✖ There was an error initializing your environment.
2020-10-27T19:21:49.687Z [INFO]: init failed
2020-10-27T19:21:49.688Z [INFO]: Error: Missing required dependencies to package tatamifmmusiclibrary7312699f
                                 at buildResource (/root/.nvm/versions/node/v10.16.0/lib/node_modules/@aws-amplify/cli/node_modules/amplify-provider-awscloudformation/src/build-resources.js:30:11)
                                 at process._tickCallback (internal/process/next_tick.js:68:7)
2020-10-27T19:21:49.699Z [ERROR]: !!! Build failed
2020-10-27T19:21:49.699Z [ERROR]: !!! Non-Zero Exit Code detected
2020-10-27T19:21:49.699Z [INFO]: # Starting environment caching...
2020-10-27T19:21:49.700Z [INFO]: # Environment caching completed

Cause

Quand je fais ʻamplify add function` dans Amplify CLI et sélectionne Python au moment de l'exécution, il semble que Python 3.8 soit sélectionné en interne. D'autre part, Python installé sur Amazon Linux 2 utilisé pour CI / CD est 3.7.4, donc une incompatibilité de version se produira.

Conseils de solution

D'après mon expérience, les problèmes Amplify sont souvent soulevés dans GitHub Issue. Cette question a déjà été abordée dans le numéro suivant.

Amplify can't find Python3.8 on build phase of CI/CD #595

Il semble que certaines personnes aient créé des images personnalisées, mais je ne veux pas utiliser d'images non officielles, j'ai donc décidé qu'il serait préférable d'installer Python 3.8 même si la construction prenait un certain temps. Je pense que la version de Python installée sur Amazon Linux 2 finira par augmenter, c'est donc une bonne idée de prendre une mesure temporaire.

Recommended Posts

Comment résoudre le problème de l'échec de la construction lorsque CI / CD de Python Function avec AWS Amplify
Comment gérer le problème de l'échec de la construction de pandas 1.1.0 ou version ultérieure sur Alpine Linux
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Comment gérer le problème de déformation des caractères japonais lors de la sortie de journaux à l'aide du formateur de journaux JSON
[systemd] Comment faire face au problème que fancontrol ne fonctionne pas après la suspension
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
Une histoire sur la façon de traiter le problème CORS
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Comment gérer le phénomène que Python (notebook Jupyter) exécuté sur WSL devient abandonné
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
Comment gérer l'erreur selon laquelle le conteneur MySQL de Docker ne démarre pas sur Docker Toolbox
Comment obtenir les informations des organisations, Cost Explorer d'un autre compte AWS avec Lambda (python)
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture
Comment gérer l'erreur d'installation de python dans pyenv (BUILD FAILED)
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
[Python] Explique comment utiliser la fonction format avec un exemple
Comment gérer les erreurs lors de l'installation de Python et de pip avec choco
Comment traiter l'erreur "Impossible de charger le module" canberra-gtk-module "qui apparaît lorsque vous exécutez OpenCV
Le 16ème problème d'écriture en temps réel hors ligne a été résolu avec Python
Comment couper la partie inférieure droite de l'image avec Python OpenCV
[Python] Explique comment utiliser la fonction range avec un exemple concret
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Le 16ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Le 19ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Le 15e problème d'écriture en temps réel hors ligne a été résolu avec python
[AWS] Comment gérer WordPress "Une erreur s'est produite lors du recadrage d'une image."
Comment gérer les erreurs en frappant pip ②
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Comment résoudre le problème que seul le processus reste lorsque vous appuyez sur X sur l'écran imshow d'OpenCV
Lorsque vous utilisez PyQtGraph avec Python Pyside, faites attention à l'ordre d'importation
Solution au problème qui ne se termine pas lors de l'installation d'OpenCV (PEP517)
Comment spécifier des attributs avec Mock of Python
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste
Comment mettre à niveau correctement le logiciel lors de la construction de Linux (CentOS) avec Vagrant ~ En utilisant l'exemple de mise à niveau de Python 2.7 vers Python 3.6 ~
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
[AWS] Comment gérer Wordpress "La réponse n'est pas la bonne réponse JSON"
[Python] Comment gérer l'erreur d'instance is "is instance () arg 2 doit être un type ou un tuple de types"
Comment gérer "^ [[A ^ [[B ^ [[C ^ [[D"]] en appuyant sur la touche de direction lors de l'exécution de python sur mac
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Un mémo sur la façon de surmonter le problème difficile de la capture d'effets avec l'IA
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
[AWS] J'ai essayé de créer un environnement Python avec un environnement de développement eb [Elastic Beanstalk]
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Comment obtenir le nombre de chiffres en Python
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Comment résoudre la fonction récursive qui a résolu abc115-D
[Python] Comment spécifier l'emplacement de téléchargement avec youtube-dl
[Python] Comment gérer l'erreur de lecture pandas read_html
python Spécifie la fonction à exécuter lorsque le programme se termine
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment frapper le document de Magic Function (Line Magic)
J'ai essayé de résoudre le problème avec Python Vol.1
[Python] Comment réécrire le style de table avec python-pptx [python-pptx]
J'ai posé le problème de la séquence tribonatch en C ++ et le nombre d'appels de fonction lors de l'écriture avec une fonction de récurrence (python est également disponible)