Mencipta lapisan AWS dengan Docker.

Barbara Streisand
Lepaskan: 2024-11-07 10:21:02
asal
373 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

Contoh dengan pdf2image:

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

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"]
Salin selepas log masuk

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/
Salin selepas log masuk

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

Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!