Поиск по сайту:

Как развернуть базу данных MSSQL с помощью Amazon Web Services (AWS) RDS и PowerShell


Решение Amazon Web Services (AWS) для реляционной базы данных называется Amazon Relational Database (RDS). RDS — это сервис AWS, который позволяет вам управлять реляционными базами данных в облаке. RDS предоставляет различные типы баз данных, но сегодня вы научитесь развертывать MSSQL.

Как и во многих других сервисах AWS, вы можете управлять базами данных RDS несколькими способами, например с помощью Консоли управления AWS, инструмента AWS CLI, любого количества SDK или с помощью PowerShell. Выбор того, какой метод лучше, остается за вами. (Если вы работаете в команде с гуру PowerShell или у вас уже есть несколько сценариев автоматизации AWS, написанных на PowerShell, сценарий PowerShell может хорошо справиться с этой задачей.)

В этой статье вы узнаете, как использовать PowerShell и модуль AWS PowerShell для быстрого развертывания экземпляра AWS RDS!

Предпосылки

Чтобы выполнить шаги, описанные в этой статье, вы должны сначала убедиться, что вы выполнили несколько предполагаемых предварительных требований. Я ожидаю, что вы уже выполнили эти требования:

  1. Создал аккаунт AWS
  2. Используют PowerShell Core (я использую PowerShell 6.2.0.)
  3. Загрузил и установил модуль AWS.Tools.RDS PowerShell  (я использую версию 3.3.590.)
  4. Аутентифицированный в вашем аккаунте AWS пользователь root или пользователь IAM с правами на создание экземпляра RDS

Как только вы подтвердите, что соответствуете всем этим требованиям, давайте начнем!

Выбор экземпляра RDS для развертывания

Прежде чем приступить к написанию кода, вы должны выяснить, какой экземпляр RDS нужно создать. Чтобы развернуть экземпляр RDS с помощью PowerShell, вам необходимо знать несколько ключевых атрибутов:

  • Имя экземпляра
  • Подсистема (SQL Server, MariaDB, MySql и т. д.)
  • Класс экземпляра, определяющий, на каких ресурсах будет работать база данных SQL Server
  • Основное имя пользователя и пароль
  • Насколько велика должна быть база данных в гигабайтах

В этой статье объясняется, как найти каждый из этих атрибутов для создания экземпляра RDS с помощью PowerShell.

Поиск доступных версий движка

Пока вы создаете экземпляр MSSQL RDS с помощью этой статьи, важно знать, что у вас есть другие варианты. Запустите команду Get-RDSDBEngineVersion и сгруппируйте по имени ядра, чтобы просмотреть список доступных типов баз данных.

PS> Get-RDSDBEngineVersion | Group-Object -Property Engine

Count Name                      Group
----- ----                      -----
   11 aurora                    {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   11 aurora-mysql              {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   11 aurora-postgresql         {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
    1 docdb                     {Amazon.RDS.Model.DBEngineVersion}
   19 mariadb                   {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   27 mysql                     {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
    1 neptune                   {Amazon.RDS.Model.DBEngineVersion}
   42 oracle-ee                 {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   20 oracle-se                 {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   20 oracle-se1                {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   21 oracle-se2                {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   55 postgres                  {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   18 sqlserver-ee              {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   19 sqlserver-ex              {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   19 sqlserver-se              {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion, Amaz...
   19 sqlserver-web             {Amazon.RDS.Model.DBEngineVersion, Amazon.RDS.Model.DBEngineVersion

Поскольку вы развернули экземпляр MSSQL RDS, изучите эту версию еще немного, чтобы увидеть все доступные версии.

Get-RDSDBEngineVersion -Engine 'sqlserver-ex' | Format-Table -Property EngineVersion

Поиск класса экземпляра

Экземпляру RDS требуется класс экземпляра, который определяет тип ресурсов, выделенных для запуска экземпляра. К сожалению, не существует способа найти доступные экземпляры с помощью PowerShell. Вместо этого вы можете перейти на страницу «Типы инстансов Amazon RDS», чтобы просмотреть доступные варианты.

Создание экземпляра RDS

К настоящему времени у вас должно быть имя экземпляра RDS, который вы хотите создать, механизм, класс экземпляра и имя пользователя/пароль, которые нужно ему назначить. Пришло время создать его.

Чтобы создать новый экземпляр RDS с помощью PowerShell, используйте командлет New-RDSDBInstance. Этот единственный командлет позволяет передать все параметры, необходимые для создания экземпляра.

Ниже вы можете увидеть пример использования командлета New-RDSDBInstance для создания экземпляра с помощью:

  • Название CloudSavvy
  • Ядро базы данных MSSQL (последняя версия SQL Express)
  • Класс экземпляра db.t2.micro
  • Пользователь sa с паролем password
  • Размер 20 ГБ
  • Интерфейс, позволяющий подключаться через Интернет.

В примере выходные данные команды назначаются переменной с именем $instance.

$parameters = @{
    DBInstanceIdentifier = 'ClouddSavvy'
    Engine = 'sqlserver-ex'
    DBInstanceClass = 'db.t2.micro'
    MasterUsername = 'sa'
    MasterUserPassword = 'password' ## Do not to include a forward slash, @ symbol, double quotes or spaces
    AllocatedStorage = 20 ## Gigabytes
    PubliclyAccessible = $true ## to connect over the Internet
}
$instance = New-RDSDBInstance @parameters

Когда запускается команда New-RDSDBInstance, она возвращает управление консоли PowerShell до создания экземпляра. Чтобы отслеживать процесс создания, вы можете отслеживать свойство DBInstanceStatus, возвращаемое Get-RDSDBInstance.

PS62> (Get-RDSDBInstance -DBInstanceIdentifier $instance.DBInstanceIdentifier).DBInstanceStatus
creating

Используя немного магии PowerShell с циклом while, вы можете создать код, который будет ждать, пока экземпляр перейдет в состояние available, прежде чем отпустить управление.

В следующем примере PowerShell проверяет состояние доступно каждые 30 секунд. Как только экземпляр входит в это состояние, он освобождает управление.

while ((Get-RDSDBInstance -DBInstanceIdentifier $instance.DBInstanceIdentifier).DBInstanceStatus -ne 'available') {
    Write-Host 'Waiting for instance to be created...'
    Start-Sleep -Seconds 30
}

Как только PowerShell освободит управление, вы сможете проверить Консоль управления AWS и убедиться, что экземпляр RDS создан. Для этого вы можете либо перейти в раздел службы RDS, либо перейти по этой ссылке, но обязательно заменить ее на название региона, с которым вы работаете:

https://console.aws.amazon.com/rds/home?region=#dbinstances:

Краткое содержание

Следуя пошаговому процессу, вы теперь знаете, как развернуть экземпляр AWS RDS с помощью PowerShell. И, используя код, обсуждаемый в этой статье, вы можете использовать его в более крупных сценариях автоматизации или создать экземпляр через консоль PowerShell по своему усмотрению.