Git Product home page Git Product logo

yandex-cloud-examples / yc-serverless-servlet Goto Github PK

View Code? Open in Web Editor NEW
0.0 5.0 1.0 12 KB

Cоздание веб-приложения для управления списком задач с помощью serverless-технологий и Java Servlet API.

Home Page: https://yandex.cloud/ru/docs/functions/tutorials/java-servlet-todo-list

License: Apache License 2.0

Java 68.32% HTML 31.68%
cloud-functions java-servlet-api serverless yandex-cloud yandexcloud ydb

yc-serverless-servlet's Introduction

Руководство по развертыванию небольшого ToDo-list'а на серверлесс стеке при помощи Java Servlet API

  1. Заводим serverless базу данных. Для этого в списке сервисов находим Yandex Database, нажимаем Создать базу данных, тип базы данных выбираем serverless, далее переходим во вкладку Навигация и создаем таблицу Tasks. Это можно сделать либо из UI, либо простым SQL-запросом:

    create table Tasks (
        TaskId Utf8,
        Name Utf8,
        Description Utf8,
        CreatedAt Datetime,
        primary key (TaskId)
    );
  2. Заводим в текущей директории сервисный аккаунт (для этого переходим в корень директории и слева в меню выбираем Сервисные аккаунты), после чего добавляем ему права viewer и editor

  3. Создаем три функции (по одной на каждый сервлет), заливаем в каждую из них данный проект, указываем среду исполнения java11 и точку входа, в зависимости от текущего сервлета. Обязательно указываем сервисный аккаунт, созданный в предыдущем пункте. Каждой функции в переменные окружения добавляем:

    • DATABASE - значение поля База данных вашей базы данных (например, /ru-centralx/yyyyyyyyyy/zzzzzzzzzz)
    • ENDPOINT - значение поля Эндпоинт вашей базы данных (например, ydb.serverless.yandexcloud.net:2135)

    Должны получиться функции с такими точками входа:

    • yandex.cloud.examples.serverless.todo.AddTaskServlet
    • yandex.cloud.examples.serverless.todo.ListTasksServlet
    • yandex.cloud.examples.serverless.todo.DeleteTaskServlet

    Чтобы задеплоить функцию, нужно:

    • Заархивировать содержимое проекта (например, zip target.zip -r src pom.xml)
    • Исполнить простую команду (должна быть установлена и настроена утилита yc, подробнее читать здесь)
     yc serverless function version create \
         --function-id=<текущий id функции> \
         --runtime=java11 \
         --entrypoint=<текущая точка входа> \
         --memory=128mb \
         --execution-timeout=3s \
         --source-path=target.zip \
         --environment="DATABASE=<значение поля База данных>;ENDPOINT=<значение поля Эндпоинт>"

    Команду необходимо выполнить 3 раза, каждый раз подставляя одну из точек входа, id соответствующей ей функции и значения переменных окружения.

    • ИЛИ создать версию через UI, для этого нужно зайти в функцию, открыть вкладку Редактор, во вкладке Способ выбрать ZIP, залить туда архив с проектом. Затем проставить параметры:
      • Точка входа: текущая точка входа (например, yandex.cloud.examples.serverless.todo.AddTaskServlet для функции, которая отвечает за этот сервлет)
      • Таймаут, c: 3
      • Память: 128 МБ
      • Сервисный аккаунт: выбрать сервисный аккаунт, созданный в пункте 2
      • Переменные окружения:
        • DATABASE: значение поля База данных
        • ENDPOINT: значение поля Эндпоинт
  4. Создаем бакет в s3, заливаем туда index.html (находится в src/main/resources/index.html)

  5. Создаем API Gateway, в поле paths спецификации стираем все содержимое, пишем туда:

      /:
        get:
          x-yc-apigateway-integration:
            type: object-storage
            bucket: <bucket>
            object: index.html
            presigned_redirect: false
            service_account: <service_account>
          operationId: static
      /add:
        post:
          x-yc-apigateway-integration:
            type: cloud-functions
            function_id: <add_servlet_function>
          operationId: addTask
      /list:
        get:
          x-yc-apigateway-integration:
            type: cloud-functions
            function_id: <list_servlet_function>
          operationId: listTasks
      /delete:
        delete:
          x-yc-apigateway-integration:
            type: cloud-functions
            function_id: <delete_servlet_function>
          operationId: deleteTask
    

    Здесь вместо <bucket> пишем имя бакета, в котором лежит файл index.html, вместо <service_account> id сервисного аккаунта, созданного в пункте 2. А вместо остальных параметров id соответствующих функций

Готово! Теперь при переходе по ссылке, указанной в API Gateway должен отобразиться ваш ToDo-list

Полезные ссылки:

yc-serverless-servlet's People

Contributors

myusosnovskay avatar yc-examples-sa[bot] avatar

Watchers

Anton Chernousov avatar Dmitry Naumov avatar Ivan Zuev avatar Sergey Kanunnikov avatar  avatar

Forkers

dkaragodin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.