Création d'une couche AWS avec Docker.

Barbara Streisand
Libérer: 2024-11-07 10:21:02
original
373 Les gens l'ont consulté

Creating AWS layer with Docker.

Lorsque nous devons créer une couche dans AWS, pour les fonctions lambda, et que cette couche a des dépendances SO pour ses opérations, nous sommes donc dans un problème, la documentation aws pour cela, peut être insuffisant.

Donc, dans ce cas, nous pouvons construire les binaires manquants dans la couche requise.

Eh bien, pour cet exemple, nous allons faire la démo en utilisant Python 3.x et la bibliothèque Pdf2Image

Conditions préalables

  • Docker installé
  • Python 3.x
  • AWS CLI configuré (facultatif)
  • Accéder à AWS Lambda

1. préparer l’environnement

mkdir lambda-layer
cd lambda-layer
mkdir python
cd python
Copier après la connexion

2. Installation des dépendances python

pip3 install [your_dependencies] \
    --platform manylinux2014_x86_64 \
    --target . \
    --only-binary=:all: \
    --implementation cp \
    --python-version [TU_VERSION_PYTHON] \
    --no-deps
Copier après la connexion

Exemple avec pdf2image :

pip3 install pdf2image Pillow \
    --platform manylinux2014_x86_64 \
    --target . \
    --only-binary=:all: \
    --implementation cp \
    --python-version 3.10 \
    --no-deps
Copier après la connexion

3. Base de fichiers Docker

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"]
Copier après la connexion

4. Construire et extraire

# image build
docker build -t lambda-layer .

# extract layer.zip
docker run --rm -v "$(pwd)":/out lambda-layer cp /layer.zip /out/
Copier après la connexion

5. utiliser le calque

Après les étapes précédentes, nous pouvons télécharger notre calque comme toujours et l'importer dans nos projets

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)}'
        }

Copier après la connexion

Références

  • Documentation des couches AWS Lambda
  • Gestion des packages Python
  • Documentation Docker

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!