Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mencipta lapisan AWS dengan Docker.

Mencipta lapisan AWS dengan Docker.

Barbara Streisand
Barbara Streisandasal
2024-11-07 10:21:02361semak imbas

Creating AWS layer with Docker.

Apabila kita perlu mencipta lapisan dalam AWS, untuk fungsi lambda, dan lapisan ini mempunyai beberapa kebergantungan SO untuk operasinya, jadi kita menghadapi masalah, dokumentasi aws untuk ini, boleh jadi tidak mencukupi.

Jadi, dalam kes ini, kita boleh membina binari yang hilang dalam lapisan yang diperlukan.

Nah, untuk contoh ini, kita akan membuat demo menggunakan Python 3.x dan perpustakaan Pdf2Image

Prasyarat

  • Pemasangan Docker
  • Python 3.x
  • Konfigurasi AWS CLI (pilihan)
  • Akses AWS Lambda

1. menyediakan alam sekitar

mkdir lambda-layer
cd lambda-layer
mkdir python
cd python

2. Memasang kebergantungan python

pip3 install [your_dependencies] \
    --platform manylinux2014_x86_64 \
    --target . \
    --only-binary=:all: \
    --implementation cp \
    --python-version [TU_VERSION_PYTHON] \
    --no-deps

Contoh dengan pdf2image:

pip3 install pdf2image Pillow \
    --platform manylinux2014_x86_64 \
    --target . \
    --only-binary=:all: \
    --implementation cp \
    --python-version 3.10 \
    --no-deps

3. Pangkalan Fail 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"]

4. Bina dan ekstrak

# image build
docker build -t lambda-layer .

# extract layer.zip
docker run --rm -v "$(pwd)":/out lambda-layer cp /layer.zip /out/

5. menggunakan lapisan

Selepas langkah sebelumnya, kami boleh memuat naik lapisan kami seperti biasa dan mengimportnya ke dalam projek kami

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

Rujukan

  • Dokumentasi AWS Lambda Layers
  • Pengurusan Pakej Python
  • Dokumentasi Docker

Atas ialah kandungan terperinci Mencipta lapisan AWS dengan Docker.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn