[PYTHON] Entwickeln, Ausführen und Bereitstellen von AWS Lambda remote mit dem Lambda-Uploader

Überblick

Installationsverfahren und Verwendung von Tools, mit denen Lambda auf einem Remotecomputer entwickelt, ausgeführt und bereitgestellt werden kann. Verwenden Sie Pythons Lambda-Uploader Pip.

Umgebung

Python-Installation

Siehe hier Python (pyenv + virtualenv) + CentOS7-Installationsnotiz

Installieren Sie den Lambda-Uploader

$ pip install lambda-uploader

Installieren Sie, da auch aws-cli verwendet wird

$ pip install awscli

Grundeinstellung

Registrieren Sie die AWS-Anmeldeinformationen mit dem folgenden Befehl.

$  aws configure --profile dev

AWS Access Key ID [None]: {Your Access Key Id}
AWS Secret Access Key [None]: {Your Secret Access Key}
Default region name [None]: ap-northeast-1
Default output format [None]: json

Bereiten Sie die erforderlichen Dateien vor

Erstellen Sie eine Datei mit der folgenden Verzeichniskonfiguration.

|- ~/lambda-uploader/
       |- bin/
          └ lambda-exec
       |- sample-api/ #Jeder Name kann verwendet werden Ein Verzeichnis für jede Lambda-Funktion
          └ requirements.txt
          └ lambda.json
          └ index.py
          └ event.json

Es muss nicht diese Konfiguration sein,

Diese vier Dateien werden immer für jede Funktion benötigt, und diese vier müssen sich in derselben Hierarchie befinden.

~/lambda-uploader/bin/lambda-exec

Ein Skript zum Ausführen von Lambda in einer Remote-Umgebung. Da der Befehl aws lang ist, erstellen Sie ihn mit den folgenden Inhalten, damit er problemlos ausgeführt werden kann.

#!/bin/bash

FUNCTION_NAME=$1
EVENT_JSON=$2

echo ${FUNCTION_NAME}
echo ${EVENT_JSON}

aws lambda invoke \
    --invocation-type RequestResponse \
    --function-name ${FUNCTION_NAME} \
    --payload file://${EVENT_JSON} \
    /tmp/lambda_outputfile.txt

echo ''
echo '[result]'
cat /tmp/lambda_outputfile.txt
echo ''

Ausführungsberechtigung erteilen

$ chmod +x ~/lambda-uploader/bin/lambda-exec

Fügen Sie bash_profile Folgendes hinzu, um den PFAD zu übergeben

$ vi ~/.bash_profile

export PATH=$PATH:"$HOME/lambda-uploader/bin"

Änderungen übernehmen

$ source ~/.bash_profile

~/lambda-uploader/sample-api/requirements.txt

Eine Datei mit einer Liste von Pip-Modulen. Generieren Sie mit dem folgenden Befehl.

$ pip freeze > requirements.txt

~/lambda-uploader/sample-api/lambda.json

Lambda-Konfigurationsdatei. Beschreiben Sie hier den Funktionsnamen usw.

{
  "name": "{Name der Lambda-Funktion}",
  "description": "{Beschreibung der Lambda-Funktion}",
  "region": "ap-northeast-1",
  "handler": "index.lambda_handler",
  "role": "arn:aws:iam::123456789012:role/role-name",
  "timeout": 300,
  "memory": 128
}

Handler bedeutet, dass die Funktion lambda_handler von index.py im obigen Beispiel ausgeführt wird.

Definieren Sie für die Rolle arn der Ausführungsrolle der Lambda-Funktion. Es ist notwendig, im Voraus eine separate Rolle zu erstellen.

Als Referenz habe ich beim Erstellen von Lambda, das mit API Gateway, SQS und SNS funktioniert, der IAM-Rolle die folgenden Berechtigungen erteilt.

~/lambda-uploader/sample-api/index.py

Erstellen Sie die Lambda-Funktion. Unten finden Sie ein Beispiel, das gerade eine POST-Anfrage empfängt und zurückgibt.

# -*- coding:utf-8 -*-

def lambda_handler(event, context):
    text = '%s is %s years old.' %(event['name'], event['age'])
    return text

~/lambda-uploader/sample-api/event.json

Definiert den Inhalt der POST-Anforderung, die während des Tests gestellt werden soll. (Leer ist zum Testen von GET-Anforderungen in Ordnung.)

{
    "name" : "Michael",
    "age" : "30"
}

Stellen Sie Lambda bereit

Stellen Sie die Lambda-Funktion in AWS bereit. Wechseln Sie in das Verzeichnis, in dem Sie lambda.json, index.py usw. haben, und führen Sie den Befehl deploy aus.

$ cd ~/lambda-uploader/sample-api

Befehl bereitstellen

$ lambda-uploader

Führen Sie die Lambda-Funktion aus

Führen Sie die Lambda-Funktion in der Remote-Umgebung aus. Es muss zuerst auf AWS bereitgestellt werden, um ausgeführt zu werden. Wechseln Sie erneut in das Verzeichnis, in dem sich lambda.json, index.py usw. befinden, und führen Sie es aus.

$ cd ~/lambda-uploader/sample-api

Mit dem folgenden Befehl ausführen Geben Sie den Lambda-Funktionsnamen im ersten Argument und die Datei event.json im zweiten Argument an.

$ lambda-exec {Lambda-Funktionsname} event.json

Wenn die folgende Antwort zurückgegeben wird, ist sie erfolgreich.

sample-api
event.json
{
    "StatusCode": 200
}

[result]
"Michael is 30 years old."

das ist alles

Referenz

AWS Lambda Python mit Lambda-Uploader bereitstellen

Recommended Posts

Entwickeln, Ausführen und Bereitstellen von AWS Lambda remote mit dem Lambda-Uploader
Entwickeln und Bereitstellen von Python-APIs mit Kubernetes und Docker
Web Scraping mit AWS Lambda
Zusammenfassung bei Verwendung von AWS Lambda (Python)
Führen Sie Python planmäßig auf AWS Lambda aus
Tweet WakaTime Zusammenfassung mit AWS Lambda
Führen Sie AWS Kinesis Firehose aus
Ich habe Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda verglichen
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Poste regelmäßig mit AWS Lambda auf Twitter!
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
[Python] Führen Sie Headless Chrome unter AWS Lambda aus
Führen Sie regelmäßig Python-Programme auf AWS Lambda aus
Unterschiede zwischen queryStringParameters und multiValueQueryStringParameters in AWS Lambda
Amazon API Gateway und AWS Lambda Python-Version