Co je virtualenv a jak to pomůže balíček závislostí pro použití v AWS Lambda Funkce?

0

Otázka

Mám projekt, který používá virtualenv, aby balíček python 2.7 projekt s 3 závislostí jsem našel v requirements.txt soubor: boto3, botocore a pypdftk.

Boto3 je Amazon Web Services SDK pro Python, a tak je botocore (domnívám se.) Pypdftk je nějaké externí knihovny použité pro transformaci Pdf souborů v pythonu.

Teď jsem měl dostat tento projekt komprimovány do zip a nahrát na AWS Lambda, služby pro server méně computing.

Navíc, AWS Lambda podporuje pouze standardní python 3.9 knihovny a runtime. Takže, protože můj projekt má tyto externí knihovny a závislosti, zdá se, minulosti vývojka použít virtualenv:

  • balíček zastaralé verze python 2.7
  • balíček závislostí uvedených v requirements.txt soubor

AWS Lambda má funkci tzv. Vrstev, kde si můžete nahrát zip binárky rozšířit standardní jádro python3 knihovna.

V souhrnu:

Já jsem nedokázal pochopit, jak nahrát své komprimované python3.9 projektu.
Mohu nahrát tyto závislosti samostatně v AWS Lambda Vrstva?
NEBO kompresí můj soubor uvnitř virtualenv postarat o závislosti?
Podobně jako Docker Kontejner? Na virtualenv lodě s kompilátor/interpret a závislostí?

1

Nejlepší odpověď

1

Upgrade váš Python kód/závislosti na 3,9, v návaznosti na "jak na to" zde: https://docs.python.org/3/howto/pyporting.html

I když je možné nasadit 2.7 kód pomocí Docker image (která, alespoň prozatím , je stále poskytována AWS), že to není dlouhodobé řešení, a budete téměř jistě dát více práce, aby se to stalo.

Pro vaše další otázky

balíček zastaralé verze python 2.7

Virtuální prostředí vám nedovolí to udělat. Existují nástroje, jako je pyenv že dělat, ale oni nebudou pracovat pro Lambda, protože verze Pythonu, který se používá ke spuštění vašeho Lambda je součástí Lambda konfigurace, a nemůže být nahrazen.

balíček závislostí uvedených v requirements.txt soubor

Ano, to je to, co virtuální prostředí mohou být použity pro. Při aktivaci virtuální prostředí a spustit pip install, to bude instalovat balíčky do lib adresáře ve virtuálním prostředí.

K výrobě Lambda nasazení balíčku musíte ZIP zdrojového kódu spolu s nainstalovaných balíčků. Takže to trochu náročnější, balíčky jsou ve skutečnosti instalován v lib/python3.9/site-packages/a Lambda nechce vidět, že cesta; změnit do adresáře, zatímco budování ZIP.

Tady je oficiální doc pro tvorbu Python balíčků: https://docs.aws.amazon.com/lambda/latest/dg/python-package.html

Mohu nahrát tyto závislosti samostatně v AWS Lambda Vrstva?

Můžete, ale to je jen užitečné, pokud se chystáte sdílet závislostí mezi Lambdy. Jinak to zvyšuje složitost nasazení s malým přínosem.

2021-11-19 15:20:28

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................