Heim > Artikel > Backend-Entwicklung > Erstellen einer AWS-Ebene mit Docker.
Wenn wir in AWS eine Ebene für Lambda-Funktionen erstellen müssen und diese Ebene einige SO-Abhängigkeiten für ihre Vorgänge hat, wir uns also in einem Problem befinden, ist die AWS-Dokumentation dafür, kann unzureichend sein.
In diesem Fall können wir also die fehlenden Binärdateien in der erforderlichen Ebene erstellen.
Nun, für dieses Beispiel werden wir die Demo mit Python 3.x und der Pdf2Image-Bibliothek erstellen
mkdir lambda-layer cd lambda-layer mkdir python cd python
pip3 install [your_dependencies] \ --platform manylinux2014_x86_64 \ --target . \ --only-binary=:all: \ --implementation cp \ --python-version [TU_VERSION_PYTHON] \ --no-deps
Beispiel mit pdf2image:
pip3 install pdf2image Pillow \ --platform manylinux2014_x86_64 \ --target . \ --only-binary=:all: \ --implementation cp \ --python-version 3.10 \ --no-deps
FROM ubuntu:22.04 as builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ python3.10 \ python3-pip \ binutils \ zip \ [TUS_PAQUETES_ADICIONALES] \ --no-install-recommends \ && rm -rf /var/lib/apt/lists/* WORKDIR /lambda RUN mkdir -p /opt/python/lib/python3.10/site-packages/bin COPY python/ /opt/python/lib/python3.10/site-packages/ RUN cp [TUS_BINARIOS] /opt/python/lib/python3.10/site-packages/bin/ && \ chmod 755 /opt/python/lib/python3.10/site-packages/bin/* RUN cd /opt && zip -r9 /lambda/layer.zip python/ FROM alpine:3.18 COPY --from=builder /lambda/layer.zip / CMD ["/bin/sh"]
# image build docker build -t lambda-layer . # extract layer.zip docker run --rm -v "$(pwd)":/out lambda-layer cp /layer.zip /out/
Nach den vorherigen Schritten können wir wie immer unsere Ebene hochladen und in unsere Projekte importieren
import os import sys #Configuring paths SITE_PACKAGES = '/opt/python/lib/python3.10/site-packages' BIN_DIR = os.path.join(SITE_PACKAGES, 'bin') os.environ['PATH'] = f"{BIN_DIR}:{os.environ['PATH']}" sys.path.append(SITE_PACKAGES) #importing dependencies from pdf2image import [your_import] def lambda_handler(event, context): try: # your code here return { 'statusCode': 200, 'body': 'Success' } except Exception as e: return { 'statusCode': 500, 'body': f'Error: {str(e)}' }
Das obige ist der detaillierte Inhalt vonErstellen einer AWS-Ebene mit Docker.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!