Spec-Zone.ru › Deno 2

Как развернуть Deno на AWS Lambda

AWS Lambda — это серверless вычислительная услуга, предоставляемая Amazon Web Services. Она позволяет запускать код без выделения или управления серверами.

Вот пошаговое руководство по развертыванию приложения Deno на AWS Lambda с использованием Docker.

Предварительные условия для этого:

  • docker командную строку
  • аккаунт AWS
  • aws командную строку

Шаг 1: Создайте приложение Deno

Создайте новое приложение Deno, используя следующий код:

main.ts
Deno.serve((req) => new Response("Hello World!"));

Сохраните этот код в файле с именем main.ts.

Шаг 2: Создайте Dockerfile

Создайте новый файл с именем Dockerfile со следующим содержимым:

# Set up the base image
FROM public.ecr.aws/awsguru/aws-lambda-adapter:0.8.4 AS aws-lambda-adapter
FROM denoland/deno:bin-1.45.2 AS deno_bin
FROM debian:bookworm-20230703-slim AS deno_runtime
COPY --from=aws-lambda-adapter /lambda-adapter /opt/extensions/lambda-adapter
COPY --from=deno_bin /deno /usr/local/bin/deno
ENV PORT=8000
EXPOSE 8000
RUN mkdir /var/deno_dir
ENV DENO_DIR=/var/deno_dir

# Copy the function code
WORKDIR "/var/task"
COPY . /var/task

# Warmup caches
RUN timeout 10s deno run -A main.ts || [ $? -eq 124 ] || exit 1

CMD ["deno", "run", "-A", "main.ts"]

Этот Dockerfile использует проект aws-lambda-adapter, чтобы адаптировать обычные HTTP-серверы, такие как Deno.serve, к API runtime AWS Lambda.

Мы также используем образ denoland/deno:bin-1.45.2, чтобы получить бинарник Deno, и debian:bookworm-20230703-slim в качестве базового образа. Образ debian:bookworm-20230703-slim используется для уменьшения размера образа.

Переменная среды PORT установлена в значение 8000, чтобы сообщить адаптеру AWS Lambda, что мы слушаем на порту 8000.

Переменная среды DENO_DIR установлена в значение /var/deno_dir, чтобы хранить кэшированный исходный код Deno и транспилированные модули в каталоге /var/deno_dir.

Шаг подготовки кэша используется для подготовки кэша Deno перед вызовом функции. Это делается для уменьшения времени холодного запуска функции. Эти кэши содержат скомпилированный код и зависимости вашего кода функции. Этот шаг запускает ваш сервер на 10 секунд, а затем завершается.

При использовании файла package.json, помните, что необходимо выполнить deno install для установки node_modules из вашего файла package.json перед подготовкой кэшей или запуском функции.

Шаг 3: Сборка Docker образа

Соберите Docker образ, используя следующую команду:

docker build -t hello-world .

Шаг 4: Создание репозитория Docker ECR и отправка образа

Используя AWS CLI, создайте репозиторий ECR и отправьте Docker образ в него:

aws ecr create-repository --repository-name hello-world --region us-east-1 | grep repositoryUri

Это должно вывести URI репозитория, похожий на <account_id>.dkr.ecr.us-east-1.amazonaws.com/hello-world.

Проверьте Docker с ECR, используя URI репозитория из предыдущего шага:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <account_id>.dkr.ecr.us-east-1.amazonaws.com

Пометьте Docker образ с URI репозитория, снова используя URI репозитория из предыдущих шагов:

docker tag hello-world:latest <account_id>.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Наконец, отправьте Docker образ в репозиторий ECR, используя URI репозитория из предыдущих шагов:

docker push <account_id>.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Шаг 5: Создание функции AWS Lambda

Теперь вы можете создать новую функцию AWS Lambda из консоли управления AWS.

  1. Перейдите в консоль управления AWS и перейдите к службе Lambda.
  2. Нажмите кнопку "Создать функцию".
  3. Выберите "Контейнерный образ".
  4. Введите имя функции, например, "hello-world".
  5. Нажмите кнопку "Просмотреть образы" и выберите образ, который вы отправили в ECR.
  6. Нажмите кнопку "Создать функцию".
  7. Подождите, пока функция не будет создана.
  8. Вкладке "Настройка", перейдите в раздел "URL функции" и нажмите "Создать URL функции".
  9. Выберите "NONE" для типа аутентификации (это сделает функцию lambda общедоступной).
  10. Нажмите кнопку "Сохранить".

Шаг 6: Тестирование функции Lambda

Теперь вы можете посетить URL вашей функции Lambda, чтобы увидеть ответ от вашего приложения Deno.

🦕 Вы успешно развернули приложение Deno на AWS Lambda с использованием Docker. Теперь вы можете использовать эту настройку для развертывания более сложных приложений Deno на AWS Lambda.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/aws_lambda

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API