Stellen Sie Lambda-Funktionen sicher mit Python bereit, das mit denselben Optionen wie Amazon Linux erstellt wurde

Probleme, die durch die Lambda for Python-Bereitstellungsumgebung verursacht wurden

Dies ist besonders häufig der Fall, wenn Bibliotheken verwendet werden, die C-Erweiterungen verwenden. Unterschiedliche Optionen für die Erstellungszeit können jedoch Probleme und Fehler verursachen. Insbesondere der Zeichencode ... In dem beobachteten Bereich verwendet die CircleCI-Umgebung "UCS2" und der Lambda-Standard (Amazon Linux) "UCS4", sodass ein Fehler auftreten kann. Ich erinnere mich nicht, was für ein Fehler es war, weil es eine Zeit verschiedener Versuche und Irrtümer war, aber ich habe erfahren, dass der Code, der in Python funktionierte und den ich mit pyenv in die Ubuntu-Umgebung gestellt habe, auf Lambda nicht funktionierte. ..

So lösen Sie das Problem

Verwenden Sie Amazon Linux

Erstens gibt es eine Methode zum Installieren und Bereitstellen der Pypi-Bibliothek usw. in einer von virtualenv unabhängigen Umgebung unter Amazon Linux. Am einfachsten und zuverlässigsten. Es ist jedoch nicht gut, einen EC2 nur für diesen Zweck einzurichten, und Sie werden wahrscheinlich Jenkins usw. verwenden, aber die Bedienung ist auch mühsam.

Erstellen Sie Python mit denselben Optionen wie Amazon Linux

Sie können dies überall verwenden. Es ist jedoch mühsam, darauf zu achten, dass die vorhandene Umgebung nicht verschmutzt wird, und CI as a Service wird jedes Mal weggeworfen, sodass die Erstellung bei jeder Bereitstellung einige Zeit in Anspruch nimmt. Es gibt eine Möglichkeit, das Image mithilfe eines Dienstes zu brennen, mit dem Sie ein Docker-Image einfügen können, der sich jedoch etwas übertrieben anfühlt.

Installieren Sie ein Paket mit vorgefertigtem Python mit denselben Optionen wie Amazon Linux

Dies ist diesmal mein Favorit. Wenn Sie "rpm", "deb" usw. haben, die mit den gleichen Optionen wie Amazon Linux erstellt wurden und eine unabhängige Python-Laufzeit bieten, können Sie diese einfach, schnell und sicher verwenden.

** Also ja. Ich machte. ** **. http://qiita.com/marcy-terui/items/9b3610bed4e5fcafd9b9 Es gibt einige Optionen, die ich entfernt habe, weil ich mich nicht auf einige systemglobale Bibliotheken verlassen kann, aber es sollte kein Problem geben, da ich sie normalerweise nicht verwendet habe.

Wie installiert man

yum

① Repository hinzufügen

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

① Repository hinzufügen

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

wie benutzt man

Die folgenden Ausführungs-Binärdateien (Skripte) sind unter "/ opt / lamvery / bin" verfügbar. Verwenden Sie sie daher, indem Sie sie gegebenenfalls durch Ihren PATH führen.

Als Referenz finden Sie hier ein Beschreibungsbeispiel für die Verwendung mit 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

Schließlich

Die Verwendung von "Lamvery" in "virtualenv" macht es sehr einfach, Lambda für Python-Funktionen bereitzustellen. Wenn Sie interessiert sind, lesen Sie bitte auch dies. Natürlich können Sie damit nur Python verwenden.

Über "Lamvery", ein Bereitstellungs- und Verwaltungstool für AWS Lambda http://qiita.com/marcy-terui/items/1617ab4e20e3339d1930

Die Lambda-Funktion bietet Best Practice mit CircleCI + Lamvery http://qiita.com/marcy-terui/items/900b72efb38f9b26e8f0

Das war Stemmer.

Recommended Posts

Stellen Sie Lambda-Funktionen sicher mit Python bereit, das mit denselben Optionen wie Amazon Linux erstellt wurde
Laden Sie eine externe Bibliothek aus einer Lambda-Funktion mit AWS Lambda Layers. Die Python-Umgebung für Amazon Linux 2 ist ebenfalls vorhanden. (Python3.6, Anaconda)
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Hinter dem Flyer: Docker mit Python verwenden
Arbeiten mit OpenStack mit dem Python SDK
[Python] Ich habe die gleiche Berechnung versucht wie die Vorhersage von LSTM von Grund auf [Keras]
[AWS Lambda] Erstellen Sie ein Bereitstellungspaket mit dem Amazon Linux Docker-Image
Die Lambda-Funktion bietet Best Practice mit CircleCI + Lamvery
Wenn eine lokale Variable mit demselben Namen wie die globale Variable in der Funktion definiert ist