Как развернуть базу данных 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!
Предпосылки
Чтобы выполнить шаги, описанные в этой статье, вы должны сначала убедиться, что вы выполнили несколько предполагаемых предварительных требований. Я ожидаю, что вы уже выполнили эти требования:
- Создал аккаунт AWS
- Используют PowerShell Core (я использую PowerShell 6.2.0.)
- Загрузил и установил модуль AWS.Tools.RDS PowerShell (я использую версию 3.3.590.)
- Аутентифицированный в вашем аккаунте 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 по своему усмотрению.