Рубрики
Uncategorized

RDS Auto Restart Защита

RDS Auto RESTART Защита. Tagged с AWS, RDS, Cloudopz, DevOps.

Абстрактный

  • Клиенты, нуждающиеся в том, чтобы сохранить экземпляр Amazon Relational Database Service (Amazon RDS), остановившись более 7 дней, ищите способы эффективного переосмысления базы данных после того, как он был автоматически запускается Amazon RDS Анкет Если база данных запускается и нет механизма, чтобы остановить ее; Клиенты начинают платить за почасовую стоимость экземпляра

  • Остановка и запуск экземпляра БД быстрее, чем создание моментального снимка БД, а затем восстановить снимок.

  • Этот блог предоставляет пошаговый подход для автоматической остановки кластера RDS с полностью без сервера и использования Pulumi для создания ресурсов AWS

Оглавление

  • Обзор Пулуми
  • Обзор решения
  • Создайте кластер RDS с несколькими экземплярами
  • Создать тему SNS и подписаться на событие RDS Cluster
  • Создать функцию Lambda, которая подписывается на тему SNS
  • Создать функцию Lambda для получения кластера RDS и экземпляров статус
  • Создать функцию Lambda, чтобы остановить кластер RDS
  • Создайте функцию Lambda, чтобы отправить Slack
  • SFN IAM Роль для запуска функций Lambda
  • Pulumi Deploy Stack
  • Вывод

🚀 Обзор Pulumi

  • Почему Пулуми? Pulumi позволяет разработчикам писать инфраструктуру в качестве кода на своих любимых языках, таких как TypeScript, JavaScript, Python и Go.

  • Вот общие шаги за шагом для создания Pulumi Project и его стека

  1. Создайте новый проект
pulumi new aws-typescript
  1. Настройка AWS профиль
  2. При создании/init a Stack Pulumi Stack init Pulumi. .yaml не создан, поэтому мы должны установить конфигурацию сами
pulumi config set aws:region ap-northeast-2
pulumi config set aws:profile myprofile
  1. ПУЛУМИ БАШ
  2. Почувствуете лень для печати? Настройка Bashcompletion для Pulumi
pulumi gen-completion bash > /etc/bash_completion.d/pulumi
  • Обновление .bashrc для псевдонимы
# add Pulumi to the PATH
export PATH=$PATH:$HOME/.pulumi/bin
alias plm='/home/vudao/.pulumi/bin/pulumi'
complete -F __start_pulumi plm
  1. Импортировать существующие ресурсы
  2. Для создания нового кластера RDS для проверки потока мы можем импортировать существующую группу безопасности или что -либо еще в стеке
pulumi import aws:ec2/securityGroup:SecurityGroup vpc_sg sg-13a02c7a
  1. Обновить стек
  2. Если мы вручную удалим ресурсы, которые управляются стеком, мы можем запустить обновление, чтобы обновить статус ресурса стека
pulumi refresh

🚀 Обзор решения

  • Решение опирается на уведомления о событиях RDS. После того, как AWS запускается из -за превышения максимального времени в состоянии остановки; Событие (RDS-EVENT-0154) генерируется RDS.

  • Событие RDS подтолкнуто к выделенной теме SNS sns-rds-event Анкет

  • Функция Lambda Start-Step-Func-RDS подписан на тему SNS sns-rds-event

    • Функция фильтрует сообщения с Код события : RDS-EVENT-0153 (Кластер DB запускается из -за того, что он превышает максимально разрешенное время, которое остановлено.), Плюс функция подтверждает, что экземпляр RDS помечен Автозарекция защита и что значение тега установлено на Да Анкет
    • Как только все условия будут выполнены, функция Lambda запускает функцию AWS -шага.
  • Машина State Functions Functions интегрируется с двумя функциями Lambda, чтобы получить состояние экземпляра, а также попытаться остановить экземпляр RDS.

    • В случае, если состояние экземпляра не «доступно», государственная машина ждет 5 минут, а затем перепроверяет состояние.
    • Наконец, когда состояние экземпляра Amazon RDS «доступно»; Государственная машина попытается остановить экземпляр Amazon RDS.
  • Примечание. Этот блог для обработки RDS Cluster с несколькими намерениями, для одного экземпляра, Catch RDS-EVENT-0154 : Экземпляр DB начинается из -за его превышения максимально разрешенного времени, которое останавливается.

Давайте начнем писать IAC с помощью Pulumi и TypeScript

🚀 Создайте кластер RDS с несколькими экземплярами

  • Создайте кластер RDS с одним или несколькими случаями
  • Используя импортированный существующий VPC (необязательно)

rds.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Создать тему SNS и подписаться на событие на RDS Cluster

  • Создайте тему SNS для получения событий от RDS Cluster
  • Создать подписку на события:
    • Цель: тема SNS
    • Тип источника: кластеры (и указывают на кластер, который создан с шага выше)
    • Конкретные категории событий: уведомление

index.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Создать функцию Lambda, которая подписывается на тему SNS

  • Функция лямбда будет вызвана темой SNS, когда есть событие
  • Функция Lambda анализирует сообщение о событии, чтобы фильтровать идентификатор события RDS-EVENT-0153 и проверяет тег кластера RDS для ключа: значение автоза защита: Да Анкет Если все условия совпадают, то функция лямбда выполняет статусную машину состояния

  • Создайте роль IAM, которая потребляется Lambda Function

Ям-рол Введите полноэкранный режим Выйдите из полноэкранного режима

  • Создать функцию Lambda, которая является подпиской темы SNS

СТАРТ-ШАН-ФУНК-ЛАБДА Введите полноэкранный режим Выйдите из полноэкранного режима

  • Создать машину состояния функции шага с плавными определениями

Stepfunc.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Создайте функцию лямбда для получения кластера RDS и статуса экземпляров

retive-rds-status.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Создайте функцию лямбды, чтобы остановить кластер RDS

Stop-rds.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Создайте функцию Lambda, чтобы отправить Slack

Send-slack.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 SFN IAM Роль для запуска функций Lambda

sfn-role.ts Введите полноэкранный режим Выйдите из полноэкранного режима

🚀 Pulumi Deploy Stack

🚀 Заключение

  • Теперь мы можем сэкономить время и сэкономить деньги на этом решении. Плюс, мы получим Slack Message, когда есть события

  • Хотя Pulumi поддерживает многие облака и предварительного проводника и может визит диаграмма ресурсов в стеке, но есть больше вариантов, таких как комплект разработки AWS (CDK)

Ref: Полевые примечания: остановка автоматического запускаемого экземпляра базы данных с Amazon RDS

🚀 Vu Dao 🚀 Следуйте

Vumdao/Вумдао

Оригинал: «https://dev.to/aws-builders/rds-auto-restart-protection-1bd9»