Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Бессерверные технологии
  2. Сокращатель ссылок

Сокращатель ссылок

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте хостинг страницы сокращателя
  • Создайте сервисный аккаунт
  • Создайте БД в Managed Service for YDB
  • Настройте функцию в Cloud Functions
  • Опубликуйте сервис через API Gateway
  • Проверьте работу сокращателя
  • Удалите компоненты сервиса

С помощью этого сценария вы создадите сервис для сокращения URL, используя serverless-технологии, доступные в Yandex Cloud.

Сервис принимает обращения пользователей через публичный API-шлюз. Пользователь получает с хостинга HTML-страницу с полем для ввода URL. Функция отправляет введенный URL на хранение в serverless-базу данных, сокращает его и возвращает пользователю. При обращении пользователя по сокращенному URL, функция находит в БД полный URL и перенаправляет на него запрос пользователя.

Чтобы настроить и протестировать сервис:

  1. Подготовьте облако к работе.
  2. Настройте хостинг страницы сокращателя.
  3. Создайте сервисный аккаунт.
  4. Создайте БД в Yandex Managed Service for YDB.
  5. Настройте функцию в Yandex Cloud Functions.
  6. Опубликуйте сервис через Yandex API Gateway.
  7. Проверьте работу сокращателя.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость ресурсов для сценария входят:

  • Плата за использование хранилища (см. тарифы Yandex Object Storage).
  • Плата за обращения к базе данных (см. тарифы Managed Service for YDB).
  • Плата за вызовы функции (см. тарифы Cloud Functions).
  • Плата за запросы к API-шлюзу (см. тарифы API Gateway).

Настройте хостинг страницы сокращателя

Чтобы создать бакет, разместить в нем HTML-страницу вашего сервиса и настроить бакет для хостинга статических сайтов:

Консоль управления
  1. В консоли управления выберите свой рабочий каталог.

  2. Выберите сервис Object Storage.

  3. Нажмите кнопку Создать бакет.

  4. На странице создания бакета:

    1. Введите имя бакета, например, for-serverless-shortener.

      Важно

      Имена бакетов уникальны для всего Object Storage, т. е. нельзя создать два бакета с одинаковыми именами даже в разных каталогах разных облаков.

    2. Задайте максимальный размер 1 ГБ.

    3. Выберите доступ на чтение объектов Публичный.

    4. Нажмите кнопку Создать бакет для завершения операции.

  5. Скопируйте HTML-код и вставьте его в файл index.html:

    HTML-код
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Сокращатель URL</title>
      <!-- предостережет от лишнего GET запроса на адрес /favicon.ico -->
      <link rel="icon" href="data:;base64,iVBORw0KGgo=">
    </head>
    
    <body>
      <h1>Добро пожаловать</h1>
      <form action="javascript:shorten()">
        <label for="url">Введите ссылку:</label><br>
        <input id="url" name="url" type="text"><br>
        <input type="submit" value="Сократить">
      </form>
      <p id="shortened"></p>
    </body>
    
    <script>
      function shorten() {
        const link = document.getElementById("url").value
        fetch("/shorten", {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: link
        })
        .then(response => response.json())
        .then(data => {
          const url = data.url
          document.getElementById("shortened").innerHTML = `<a href=${url}>${url}</a>`
        })
        .catch(error => {
          document.getElementById("shortened").innerHTML = `<p>Произошла ошибка ${error}, попробуйте еще раз</p>`
        })
      }
    </script>
    
    </html>
    
  6. Нажмите на имя созданного бакета.

  7. Нажмите кнопку Загрузить объекты.

  8. Укажите подготовленный ранее файл index.html.

  9. Нажмите кнопку Загрузить.

  10. В левой панели выберите вкладку Веб-сайт.

  11. Выберите опцию Хостинг.

  12. Укажите главную страницу сайта — index.html.

  13. Нажмите кнопу Сохранить.

Создайте сервисный аккаунт

Чтобы создать сервисный аккаунт для взаимодействия компонентов сервиса:

Консоль управления
  1. Перейдите в свой рабочий каталог.

  2. В левой панели выберите вкладку Сервисные аккаунты.

  3. Нажмите кнопку Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта serverless-shortener.

  5. Нажмите Добавить роль и выберите роль editor.

  6. Нажмите кнопку Создать.

  7. Нажмите на имя созданного сервисного аккаунта.

    Сохраните идентификатор созданного сервисного аккаунта, он понадобится на следующих шагах.

Создайте БД в Managed Service for YDB

Чтобы создать базу данных Managed Service for YDB и настроить ее для хранения ссылок:

Консоль управления
  1. Перейдите в свой рабочий каталог.

  2. В списке сервисов выберите Managed Service for YDB.

  3. Нажмите кнопку Создать базу данных.

  4. Введите имя базы for-serverless-shortener.

  5. Выберите тип базы данных Serverless.

  6. Нажмите кнопку Создать базу данных.

  7. Дождитесь запуска базы данных.

    В процессе создания база будет иметь статус Provisioning, а когда станет готова к использованию — статус изменится на Running.

  8. Нажмите на имя созданной БД.

    Сохраните значения полей Эндпоинт, База данных и Протокол блока YDB эндпоинт, они понадобится на следующих шагах.

  9. В левой панели выберите вкладку Навигация.

  10. Нажмите кнопку SQL-запрос.

  11. Скопируйте SQL-запрос и вставьте его в поле Запрос:

    CREATE TABLE links
    (
      id Utf8,
      link Utf8,
      PRIMARY KEY (id)
    );
    
  12. Нажмите кнопку Выполнить.

Настройте функцию в Cloud Functions

Чтобы создать и настроить функцию сокращения URL:

Консоль управления
  1. Перейдите в свой рабочий каталог.

  2. В списке сервисов выберите Cloud Functions.

  3. Нажмите кнопку Создать функцию.

  4. Введите имя for-serverless-shortener.

  5. Нажмите кнопку Создать.

  6. В выпадающем списке Python выберете среду выполнения python37.

  7. Нажмите кнопку Продолжить.

  8. Скопируйте код функции и вставьте его в файл index.py в блоке Код функции.

    Код функции
    from kikimr.public.sdk.python import client as ydb
    
    import urllib.parse
    import hashlib
    import base64
    import json
    import os
    
    def decode(event, body):
      # Тело запроса может быть закодировано.
      is_base64_encoded = event.get('isBase64Encoded')
      if is_base64_encoded:
        body = str(base64.b64decode(body), 'utf-8')
      return body
    
    def response(statusCode, headers, isBase64Encoded, body):
      return {
        'statusCode': statusCode,
        'headers': headers,
        'isBase64Encoded': isBase64Encoded,
        'body': body,
      }
    
    def get_config():
      endpoint = os.getenv("endpoint")
      database = os.getenv("database")
      if endpoint is None or database is None:
        raise AssertionError("Нужно указать обе переменные окружения")
      credentials = ydb.construct_credentials_from_environ()
      return ydb.DriverConfig(endpoint, database, credentials=credentials)
    
    def execute(config, query, params):
      with ydb.Driver(config) as driver:
        try:
          driver.wait(timeout=5)
        except TimeoutError:
          print("Connect failed to YDB")
          print("Last reported errors by discovery:")
          print(driver.discovery_debug_details())
          return None
    
        session = driver.table_client.session().create()
        prepared_query = session.prepare(query)
    
        return session.transaction(ydb.SerializableReadWrite()).execute(
          prepared_query,
          params,
          commit_tx=True
        )
    
    
    def insert_link(id, link):
      config = get_config()
      query = """
        DECLARE $id AS Utf8;
        DECLARE $link AS Utf8;
    
        UPSERT INTO links (id, link) VALUES ($id, $link);
        """
      params = {'$id': id, '$link': link}
      execute(config, query, params)
    
    def find_link(id):
      print(id)
      config = get_config()
      query = """
        DECLARE $id AS Utf8;
    
        SELECT link FROM links where id=$id;
        """
      params = {'$id': id}
      result_set = execute(config, query, params)
      if not result_set or not result_set[0].rows:
        return None
    
      return result_set[0].rows[0].link
    
    def shorten(event):
      body = event.get('body')
    
      if body:
        body = decode(event, body)
        original_host = event.get('headers').get('Origin')
        link_id = hashlib.sha256(body.encode('utf8')).hexdigest()[:6]
        # В ссылке могут быть закодированные символы, например, %. Это помешает работе API Gateway при редиректе,
        # поэтому следует избавиться от них вызовом urllib.parse.unquote.
        insert_link(link_id, urllib.parse.unquote(body))
        return response(200, {'Content-Type': 'application/json'}, False, json.dumps({'url': f'{original_host}/r/{link_id}'}))
    
      return response(400, {}, False, 'В теле запроса отсутствует параметр url')
    
    def redirect(event):
      link_id = event.get('pathParams').get('id')
      redirect_to = find_link(link_id)
    
      if redirect_to:
        return response(302, {'Location': redirect_to}, False, '')
    
      return response(404, {}, False, 'Данной ссылки не существует')
    
    # Эти проверки нужны, поскольку функция у нас одна.
    # В идеале сделать по функции на каждый путь в API Gateway.
    def get_result(url, event):
      if url == "/shorten":
        return shorten(event)
      if url.startswith("/r/"):
        return redirect(event)
    
      return response(404, {}, False, 'Данного пути не существует')
    
    def handler(event, context):
      url = event.get('url')
      if url:
        # Из API Gateway URL может прийти со знаком вопроса на конце.
        if url[-1] == '?':
          url = url[:-1]
        return get_result(url, event)
    
      return response(404, {}, False, 'Эту функцию следует вызывать при помощи API Gateway.')
    
  9. Скопируйте следующий текст и вставьте его в файл requirements.txt в блоке Код функции:

    ydb
    
  10. Укажите точку входа index.handler.

  11. Задайте таймаут 5.

  12. Выберите сервисный аккаунт serverless-shortener.

  13. Добавьте переменные окружения:

    • endpoint — введите строку, сформированную из протокола и эндпоинта базы данных.

      Например, если протокол grpcs, а эндпоинт ydb.serverless.yandexcloud.net:2135, введите grpcs://ydb.serverless.yandexcloud.net:2135.

    • database — введите сохраненное ранее значение поля База данных.

    • USE_METADATA_CREDENTIALS — введите 1.

  14. В верхней правой части блока Редактор нажмите кнопку Создать версию.

  15. В блоке Общая информация включите опцию Публичная функция.

Сохраните идентификатор созданной функции, он понадобится на следующих шагах.

Опубликуйте сервис через API Gateway

Чтобы опубликовать сервис через API Gateway:

Консоль управления
  1. Перейдите в свой рабочий каталог.

  2. В списке сервисов выберите API Gateway.

  3. Нажмите кнопку Создать API-шлюз.

  4. В поле Имя введите for-serverless-shortener.

  5. Скопируйте и вставьте следующий код в блок Спецификация:

    Спецификация
    openapi: 3.0.0
    info:
      title: for-serverless-shortener
      version: 1.0.0
    paths:
      /:
        get:
          x-yc-apigateway-integration:
            type: object_storage
            bucket: for-serverless-shortener # <-- название бакета
            object: index.html # <-- название html-файла
            presigned_redirect: false
            service_account: <service_account_id> # <-- ID сервисного аккаунта
          operationId: static
      /shorten:
        post:
          x-yc-apigateway-integration:
            type: cloud_functions
            function_id: <function_id> # <-- ID функции
          operationId: shorten
      /r/{id}:
        get:
          x-yc-apigateway-integration:
            type: cloud_functions
            function_id: <function_id> # <-- ID функции
          operationId: redirect
          parameters:
          - description: id of the url
            explode: false
            in: path
            name: id
            required: true
            schema:
              type: string
            style: simple
    

    Внесите правки в код спецификации:

    • Замените <service_account_id> идентификатором созданного ранее сервисного аккаунта.
    • Замените <function_id> идентификатором созданной ранее функции.
  6. Нажмите кнопку Создать.

  7. Нажмите на имя созданного API-шлюза.

  8. Скопируйте значение url из спецификации.

    Используйте этот URL для работы с созданным сервисом.

Проверьте работу сокращателя

Чтобы проверить правильность взаимодействие компонентов сервиса:

  1. Откройте в браузере скопированный URL.

  2. В поле для ввода введите ссылку, которую вы хотите сократить.

  3. Нажмите кнопку Сократить.

    Ниже отобразится сокращенная ссылка.

  4. Перейдите по сокращенной ссылке, должна открыться та же страница, что и по ссылке до сокращения.

Удалите компоненты сервиса

Чтобы удалить все созданные компоненты сервиса:

Консоль управления
  1. Удалите API-шлюз:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите API Gateway.
    3. Справа от имени созданного API-шлюза нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  2. Удалите функцию:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Cloud Functions.
    3. Справа от имени созданной функции нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  3. Удалите БД:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Managed Service for YDB.
    3. Справа от имени созданной базы данных нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  4. Удалите сервисный аккаунт:
    1. Перейдите в свой рабочий каталог.
    2. В левой панели выберите вкладку Сервисные аккаунты.
    3. Справа от имени созданного сервисного аккаунта нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  5. Удалите бакет:
    1. Перейдите в свой рабочий каталог.
    2. Выберите сервис Object Storage.
    3. Нажмите на имя созданного бакета.
    4. Справа от имени созданного объекта нажмите и выберите Удалить.
    5. Нажмите кнопку Удалить.
    6. Вернитесь на страницу Бакеты.
    7. Справа от имени созданного бакета нажмите и выберите Удалить.
    8. Нажмите кнопку Удалить.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте хостинг страницы сокращателя
  • Создайте сервисный аккаунт
  • Создайте БД в Managed Service for YDB
  • Настройте функцию в Cloud Functions
  • Опубликуйте сервис через API Gateway
  • Проверьте работу сокращателя
  • Удалите компоненты сервиса