Wie verwende ich Container-Images mit Lambda?

Lesedauer: 3 Minute
0

Ich möchte AWS-Lambda-Container-Images mit Abhängigkeiten erstellen. Wie gehe ich dabei vor?

Auflösung

Stellen Sie sicher, dass Sie über Berechtigungen für den IAM-Benutzer oder die IAM-Rolle verfügen, die die Lambda-Container-Images erstellt. Führen Sie dann die folgenden Schritte aus, um Docker zum Bereitstellen Ihrer Container-Images zu verwenden:

1.    Gehen Sie zur Get-Docker-Webseite. Wählen Sie die Docker-Desktop-Anwendung, die Ihren Anforderungen entspricht. Folgen Sie den Anweisungen, um Docker Desktop zu installieren.
Hinweis: Docker ist eine Website eines Drittanbieters.

2.    Erstellen Sie auf Ihrem lokalen Computer einen Ordner mit drei Dateien: Docker-Datei, requirements.txt mit Bibliotheken und app.py mit Importanweisungen. Hinweis: Verwenden Sie die neueste Version der öffentlichen Registrierung von Python für Amazon Elastic Container Registry (Amazon ECR).

Diese Beispiel Dockerdatei verwendet Python 3.8:

FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt .
RUN pip3 install -r requirements.txt —target "${LAMBDA_TASK_ROOT}"

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ]

Diese Beispieldatei app.py enthält eine Beispiel-Importanweisung:

import sys
def handler(event, context):
    return 'Hello from AWS Lambda using Python' + sys.version + '!'

3.    Erstellen Sie Ihr Docker-Image mit dem Befehl docker build und einem Image-Namen.

Dies ist ein Docker-Build-Befehl mit einem „hello-world“-Beispiel:

docker build -t hello-world .

4.    Starten Sie das Docker-Image mit dem Befehl docker run.

Dies ist ein Befehl docker run mit einem „hello-world“-Beispiel:

docker run -p 9000:8080 hello-world

5.    Testen Sie Ihre Anwendung mit dem Lambda Runtime Interface Emulator (RIE). Veröffentlichen Sie in einem neuen Terminalfenster ein Ereignis mit einem curl-Befehl an den folgenden Endpunkt:

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

Dieser Befehl ruft die im Container-Image ausgeführte Funktion auf und gibt dann eine Antwort zurück.

6.    Authentifizieren Sie die Docker-CLI bei Ihrer Amazon-ECR-Registrierung. Ändern Sie die Konto-ID und die AWS-Region im Befehl, um sicherzustellen, dass sie Ihren Anforderungen entspricht.

Dies ist ein Beispiel für die Authentifizierung der Docker-CLI bei der Amazon-ECR-Registrierung:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com

7.    Erstellen Sie ein Repository in Amazon ECR mit dem Befehl create-repository.

Dies ist ein Beispiel für den Befehl create-repository:

aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE

8.    Kennzeichnen Sie Ihr Bild mit dem Befehl docker tag so, dass es Ihrem Repository-Namen übereinstimmt. Stellen Sie das Image anschließend mithilfe des Befehls docker push in Amazon ECR bereit.

Ändern Sie die Konto-ID und die AWS-Region in diesen Befehlen, um sicherzustellen, dass sie Ihren Anforderungen entsprechen.

Dies ist ein Beispiel für einen Befehl docker tag:

docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Dies ist ein Beispiel für einen Befehl docker push:

docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

9.    Erstellen Sie mit Ihrem Container-Image in der Amazon-ECR-Containerregistrierung eine Lambda-Funktion und führen Sie sie aus. Weitere Informationen finden Sie unter Erstellen einer Funktion.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr