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.