ウェブサイト検索

Amazon Web Services (AWS) RDS と PowerShell を使用して MSSQL データベースをデプロイする方法


Amazon Web Services (AWS)のリレーショナルデータベースのソリューションは、Amazon Relational Database (RDS)と呼ばれています。RDSは、クラウド内でリレーショナルデータベースを管理するためのAWSサービスです。RDSはさまざまな種類のデータベースを提供していますが、今日デプロイする方法を学ぶのはMSSQLです。

他の多くのAWSサービスと同様に、AWS Management Console、AWS CLIツール、複数のSDK、またはPowerShellを通じてRDSデータベースを管理することができます。最適な方法の選択はあなた次第です。(もしあなたのチームにPowerShellの専門家がいるか、すでにPowerShellでAWSの自動化スクリプトが書かれている場合は、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アカウントに認証されたルートユーザーまたはRDSインスタンスを作成する権限を持つIAMユーザー

これらの要件をすべて満たしていることを確認したら、始めましょう!

どの種類のRDSインスタンスをデプロイするかの決定

コーディングを始める前に、どの種類のRDSインスタンスを作成するかを決定しなければなりません。PowerShellでRDSインスタンスをデプロイするには、いくつかの重要な属性を知っている必要があります:

  • インスタンスの名前
  • エンジン(SQL Server、MariaDB、MySqlなど)
  • SQL Serverデータベースがどのようなリソースで実行されるかを割り当てるインスタンスクラス
  • ユーザー名とパスワードをマスターする
  • データベースは何ギガバイトの大きさにするべきか

この記事では、PowerShellを使用してRDSインスタンスを作成するために、これらの属性をどのように見つけるかを説明します。

利用可能なエンジンバージョンの検索

この記事を使用して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インスタンスの名前、エンジン、インスタンスクラス、そしてそれに割り当てるユーザー名/パスワードを用意しているはずです。さあ、作成する時が来ました。

PowerShellを使用して新しいRDSインスタンスを作成するには、New-RDSDBInstanceコマンドレットを使用します。この単一のコマンドレットを使用すると、インスタンスを作成するために必要なすべてのパラメータを渡すことができます。

以下に、New-RDSDBInstance コマンドレットを使用してインスタンスを作成する例を示します。

  • CloudSavvyの名前
  • MSSQLデータベースエンジン(SQL Expressの最新バージョン)
  • db.t2.micro インスタンスクラス
  • パスワードがpasswordのサユーザー
  • サイズは20GBです
  • インターネット上で接続を可能にするインターフェース

例では、コマンドの出力が$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コンソールに戻ります。作成プロセスを監視するには、Get-RDSDBInstanceによって返されるDBInstanceStatusプロパティを監視することができます。

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

少しのPowerShellの魔法を使ってwhileループを利用することで、インスタンスがavailable状態に入るのを待ち、制御を放すコードを作成することができます。

次の例では、PowerShellは30秒ごとにavailableのステータスを確認します。インスタンスがこの状態に入ると、すぐに制御を解除します。

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

PowerShellが制御を解除すると、AWS Management Consoleを確認してRDSインスタンスが作成されたことを確認できます。そのためには、RDSサービスセクションに移動するか、こちらのリンクに従ってください。ただし、作業しているリージョン名に置き換えることを忘れないでください:

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

要約

ステップバイステップのプロセスに従うことで、今では PowerShell を使って AWS RDS インスタンスをデプロイする方法を知っています。そして、この記事で説明されたコードを使用することで、これを大規模な自動化スクリプトで使用したり、PowerShell コンソールを介してインスタンスを作成したりすることができます。

関連記事: