Comme le titre l'indique, j'ai rencontré un problème de construction échouant lorsque CI / CD de Python Function avec AWS Amplify.
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
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
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.
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.