Как-aws lambda (4 части серии)
Зачем использовать CDK?
CDK Позвольте вам обеспечить всю свою службу AWS с помощью языка программирования, который вы используете.
В этом примере я определим Lambda и Lambda слои, используя Python CDK.
Во-первых, сделайте новый проект
CDK INIT MY-образец-приложение – Anganguage Python
Затем активируйте виртуальную ENV
.env \ Scripts \ Activate.bat
Настройте структуру проекта
my-sample-app |-lambda |--boto3Folder |--MyFirstLambdaFunction |---app.py |--All the lambda folder here |-MySampleAppStack |--my_sample_stack.py
Что такое слой лямбда? Собственные слова: Лоуры лямбда – это место, которое вы устанавливаете свою библиотеку в облаке. Обычно вы просто PIP Установить некоторую библиотеку
Для вашего проекта Python справа? Лоуры лямбда просто делают это, вы устанавливаете библиотеку внутри локальной папки, затем CDK поможет вам упаковать все файл внутри этой папки и загрузить его в облаку, затем вы можете использовать его в другом месте.
Первая установка библиотеки Boto3 внутри лямбда/boto3folder
pip install --target=d:\yourLocalPath\my-sample-app\lambda\boto3Folder boto3
Этим, вы устанавливаете BOTO3
Библиотека в My-образец-приложение/лямбда/boto3folder
Тогда вы должны увидеть файл и папку внутри Boto3folder.
Тогда внутри my_sample_stack.py
Определите слой лямбда как следует следующим образом:
from aws_cdk.aws_lambda_python import PythonFunction, PythonLayerVersion class MySampleStack(core.Stack): def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: super().__init__(scope, id, **kwargs) # All the aws resources define here # Here define a Lambda Layer boto3_lambda_layer = PythonLayerVersion( self, 'Boto3LambdaLayer', entry='lambda/boto3Folder', compatible_runtimes=[lambda_.Runtime.PYTHON_3_8], description='Boto3 Library', layer_version_name='Whatever name you want' )
В этих нескольких линиях кода вы определили слой лямбда, скажите CDK, где находится папка в Вход
В нашем случае это лямбда/boto3folder
и другая необходимая информация.
Итак, теперь у вас есть ламбда, теперь мы хотим использовать эти слои лямбда, внутри функции лямбда.
В Mysamplestack
Выше добавьте это, чтобы определить функцию лямбда:
my_first_lambda_function=PythonFunction( self, 'MyFirstLambda', entry='lambda/MyFirstLambdaFunction', index='app.py', runtime=lambda_.Runtime.PYTHON_3_8, layers=[boto3_lambda_layer], # here you use the lambda layer above handler='MyFirstLambdaHandler', timeout=core.Duration.seconds(10) )
Это вы определяете функцию лямбда, которая будет использовать Lambda слои. В вашем Myfirstlambdafunction/app.py
Вы можете использовать BOTO3
как обычно.
Внутри myfirstlambdafunction/app.py
import boto3 def MyFirstLambdaHandler(event, context): client = boto3.client('dynamodb') # do all the stuff with the client
cdk deploy
Все ресурсы начнут обеспечивать в облаке.
Зачем использовать Lambda слои? 1) Избегайте установки одной и той же библиотеки снова и снова. Позвольте сказать, что у вас есть 10 функций Lambda, все будет использовать 2 же библиотеки, то вам нужно будет установить 10 отдельных времен на 10 лямбда. Используйте Lambda слои, установите 1 раз, вы это на 10 разных лямбда.
2) Уменьшите размер вашей функции лямбда. Если ваша функция лямбда составляет более 10 МБ, вы не сможете редактировать его в консоли aws lambda.
Резюме В этой статье вы узнали
- Как создать Lambda слой и функцию лямбда
- Как использовать слой лямбда внутри лямбда
- Почему вам нужно использовать Lambda слой?
Я надеюсь, что вы узнали что-то. Хорошего дня.
В следующей части серии я расскажу о настройке переменной среды для функции лямбда с использованием CDK.
Прежде чем идти, Если вам нравится эта серия, или найди это полезное, чтобы купить мне кофе 😊🤞 на 5 долларов США или более. Я подготовим Github Repo для всего этого учебного пособия и договориться в отдельный коммит для каждой части. Это доступно только для моего сторонника, потому что я провел много времени, чтобы подготовить это. Во всяком случае, я ценю вас здесь. Хорошего дня.
Крича мне в Twitter: @upupkenchoong
Как-aws lambda (4 части серии)
Оригинал: “https://dev.to/upupkenchoong/how-to-provision-lambda-and-lambda-layer-with-cdk-2ff4”