Déployez en toute sécurité des fonctions Lambda à l'aide de Python construit avec les mêmes options qu'Amazon Linux

Problèmes causés par l'environnement de déploiement Lambda pour Python

Ceci est particulièrement courant lors de l'utilisation de bibliothèques qui utilisent des extensions C, mais différentes options de construction peuvent provoquer des problèmes et des erreurs. Surtout le code de caractère ... Dans la plage observée, l'environnement CircleCI utilise ʻUCS2, et le standard Lambda (Amazon Linux) utilise ʻUCS4, donc une erreur peut se produire. Je ne me souviens pas de quel genre d'erreur c'était parce que c'était une période d'essais et d'erreurs, mais j'ai constaté que le code qui fonctionnait avec Python que j'ai mis dans l'environnement Ubuntu à portée de main avec pyenv ne fonctionnait pas sur Lambda. ..

Comment résoudre le problème

Utilisez Amazon Linux

Tout d'abord, il existe une méthode d'installation et de déploiement de la bibliothèque pypi, etc. dans un environnement indépendant de virtualenv sur Amazon Linux. Le plus simple et le plus fiable. Cependant, il n'est pas bon de configurer un EC2 uniquement dans ce but, et vous utiliserez probablement Jenkins etc., mais l'opération est également gênante.

Créez Python avec les mêmes options qu'Amazon Linux

Vous pouvez l'utiliser n'importe où. Cependant, il est difficile de prendre soin de ne pas polluer l'environnement existant, et CI en tant que service est jeté à chaque fois, de sorte qu'il faut du temps à construire à chaque fois qu'il est déployé. Il existe un moyen de graver l'image à l'aide d'un service qui vous permet d'apporter une image Docker, mais cela semble un peu exagéré.

Installez un package contenant Python prédéfini avec les mêmes options qu'Amazon Linux

C'est mon préféré cette fois. Si vous avez rpm, deb, etc., qui sont construits avec les mêmes options qu'Amazon Linux et fournissent un runtime Python indépendant, vous pouvez l'utiliser facilement, rapidement et en toute sécurité.

** Donc oui. J'ai fait. ** ** http://qiita.com/marcy-terui/items/9b3610bed4e5fcafd9b9 Il y a certaines options que j'ai supprimées car je ne peux pas dépendre de certaines bibliothèques globales du système, mais il ne devrait y avoir aucun problème car je ne les utilisais généralement pas.

Comment installer

yum

① Ajouter un référentiel

echo "
[bintraybintray-willyworks-rpm]
name=bintray-willyworks-rpm
baseurl=https://dl.bintray.com/willyworks/rpm/centos/\$releaserver/\$basearch/
gpgcheck=0
enabled=1
" | sudo tee -a /etc/yum.repos.d/bintray-willyworks-rpm.repo

② Installation

sudo yum install lamvery

apt

① Ajouter un référentiel

echo "deb https://dl.bintray.com/willyworks/deb trusty main" | sudo tee -a /etc/apt/sources.list

② Installation

sudo apt-get update
sudo apt-get install install lamvery

comment utiliser

Les binaires (scripts) d'exécution suivants sont disponibles sous / opt / lamvery / bin, veuillez donc les utiliser en les passant par votre PATH si nécessaire.

--Python 2.7.9 (au 18 mars 2016)

Pour référence, voici un exemple de description lors de son utilisation avec CircleCI.

circle.yml


---
machine:
  environment:
    PATH: /opt/lamvery/bin:$PATH

dependencies:
  pre:
    - |
      echo "deb https://dl.bintray.com/willyworks/deb trusty main" | sudo tee -a /etc/apt/sources.list
      sudo apt-get update
      sudo apt-get install lamvery

finalement

L'utilisation de lamvery dans virtualenv facilite le déploiement de Lambda pour les fonctions Python. Si vous êtes intéressé, veuillez également vous y référer. Bien sûr, vous pouvez l'utiliser pour n'utiliser que Python.

À propos de «Lamvery», un outil de déploiement et de gestion pour AWS Lambda http://qiita.com/marcy-terui/items/1617ab4e20e3339d1930

La fonction Lambda déploie les meilleures pratiques avec CircleCI + Lamvery http://qiita.com/marcy-terui/items/900b72efb38f9b26e8f0

C'était Stemmer.

Recommended Posts

Déployez en toute sécurité des fonctions Lambda à l'aide de Python construit avec les mêmes options qu'Amazon Linux
Chargez une bibliothèque externe à partir d'une fonction Lambda à l'aide des couches AWS Lambda. L'environnement Python pour Amazon Linux 2 est également en place. (Python3.6, Anaconda)
Déployer la fonction Python 3 avec Serverless Framework sur AWS Lambda
[Python] Faire de la fonction une fonction lambda
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Derrière le flyer: utiliser Docker avec Python
Travailler avec OpenStack à l'aide du SDK Python
[Python] J'ai essayé le même calcul que la prédiction de LSTM à partir de zéro [Keras]
[AWS Lambda] Créer un package de déploiement à l'aide de l'image Amazon Linux Docker
La fonction Lambda déploie les meilleures pratiques avec CircleCI + Lamvery
Lorsqu'une variable locale portant le même nom que la variable globale est définie dans la fonction