

# Automation ランブックを使用した EC2 Windows インスタンスのアップグレード
<a name="automated-upgrades"></a>

AWS Systems Manager オートメーションランブックを使用して、AWS で Windows および SQL Server インスタンスの自動アップグレードを実行することができます。

**Topics**
+ [関連サービス](#automated-related)
+ [実行オプション](#automated-execution-option)
+ [Windows Server をアップグレードする](#automated-upgrades-windows)
+ [SQL Server のアップグレード](#automated-upgrades-sql)

## 関連サービス
<a name="automated-related"></a>

自動アップグレードプロセスでは次の AWS サービスを使用します。
+ **AWS Systems Manager**。AWS Systems Manager はAWS リソースを集中管理する強力な統合インターフェイスです。詳細については*[AWS Systems Manager ユーザーガイド](https://docs.aws.amazon.com/systems-manager/latest/userguide/)*を参照してください。
+ AWS Systems Manager エージェント (SSM Agent) はAmazon EC2 インスタンス、オンプレミスのサーバー、または仮想マシン (VM) にインストールして設定できる Amazon のソフトウェアです。SSM Agent により、Systems Manager がこれらのリソースを更新、管理、および設定できるようにします。このエージェントは AWS クラウド上の Systems Manager サービスからのリクエストを処理し、リクエストに指定されたとおりにそれらを実行します。詳細については*AWS Systems Manager ユーザーガイド*の[SSM Agent を使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)を参照してください。
+ **AWS Systems Manager SSM ランブック**。SSM ランブックはマネージドインスタンスで Systems Manager が実行するアクションを定義します。SSM ランブックは JavaScript Object Notation (JSON) や YAML を使用し、これにはユーザーが指定するステップおよびパラメータが含まれます。このトピックでは2 つのオートメーション用 Systems Manager SSM ランブックを使用します。詳細については「AWS Systems Manager ユーザーガイド」の「[AWS Systems Manager オートメーションランブックリファレンス](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html)」を参照してください。**

## 実行オプション
<a name="automated-execution-option"></a>

Systems Manager コンソールで [**Automation**] を選択する際、[**実行**] を選択してください。Automation ドキュメントを選択すると、自動化の実行オプションを選択するよう求められます。以下のオプションから選択してください。このトピックで後ほど示すパスのステップでは[**シンプルな実行**] オプションを使用します。

**シンプルな実行**  
1 つのインスタンスを更新するが、自動化の各ステップを実行して結果を監査しない場合はこのオプションを選択してください。このオプションについては以降のアップグレード手順で詳しく説明します。

**レート制御**

アップグレードを複数のインスタンスに適用する場合はこのオプションを選択してください。以下の設定を定義します。
+ **パラメータ**

  [マルチアカウント] および [リージョン] でも設定されているこの設定では自動化の分岐方法を定義します。
+ **[Targets]** (ターゲット)

  自動化を適用するターゲットを選択してください。この設定は[マルチアカウント] および [リージョン] でも設定されます。
+ **パラメータ値**

  オートメーションドキュメントのパラメータで定義されている値を使用します。
+ **Resource Group** (リソースグループ)

  AWS ではリソースはユーザーが操作できるエンティティです。例えば、Amazon EC2 インスタンス、AWS CloudFormation スタック、または Amazon S3 バケットなどがあります。複数のリソースを使用する場合はタスクごとに 1 つの AWS サービスから別のサービスに移動するのではなく、グループとしてそれらを管理する方が有益な場合があります。場合によってはアプリケーション層を構成する EC2 インスタンスなど、多数の関連リソースを管理する場合があります。この場合はこれらのリソースに対して一括してアクションを実行する必要があります。
+ **タグ**

  タグはAWS リソースを目的、所有者、環境などさまざまな方法で分類するのに役立ちます。この分類は同じ種類のリソースが多い場合に便利です。割り当てたタグを使用して、特定のリソースをすばやく識別することができます。
+ **レート制御**

  レート制御は[マルチアカウント] および [リージョン] でも設定されます。レート制御のパラメータを設定する際、ターゲットカウントまたはターゲットの割合 (%) によって、自動化を適用するフリートの数を定義します。

 **マルチアカウントおよびマルチリージョン**

マルチアカウントとマルチリージョンの設定でも使用されるレート制御で指定されたパラメータに加えて、2 つの設定があります。
+ **アカウントと組織単位 (OU)**

  自動化を実行する複数のアカウントを指定します。
+ **AWS リージョン**

  自動化を実行する複数の AWS リージョン を指定します。

**手動による実行**  
このオプションは[**シンプルな実行**] に似ていますが、このオプションでは自動化の各ステップを進め、結果を監査することができます。

## Windows Server をアップグレードする
<a name="automated-upgrades-windows"></a>

`[AWSEC2-CloneInstanceAndUpgradeWindows](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awsec2-CloneInstanceAndUpgradeWindows.html)` ランブックではアカウントの Windows Server インスタンスから Amazon マシンイメージ (AMI) を作成し、この AMI を、サポートされている希望のバージョンにアップグレードします。このマルチステッププロセスは完了するまで 2 時間かかる場合があります。

自動アップグレードプロセスには 2 つの AMI が含まれています。
+ **現在実行中のインスタンス**。最初の AMI は現在実行中のインスタンスです。このインスタンスはアップグレードされません。この AMI は別のインスタンスを起動してインプレースアップグレードを実行するために使用されます。プロセスが完了したら、この AMI はアカウントから削除されます。ただし、元のインスタンスを保持するように特別にリクエストした場合を除きます。この設定を行うには`KeepPreUpgradeImageBackUp` パラメータを使用します (デフォルト値は `false` です。つまり、AMI はデフォルトで削除されます)。
+ **更新された AMI**。この AMI は自動化プロセスの結果です。

最終結果は1 つの AMI です。つまり、AMI の更新されたインスタンスです。

アップグレードが完了したら、Amazon VPC で新しい AMI を起動して、アプリケーション機能をテストできます。テストが終了したら、別のアップグレードを実行する前に、アプリケーションのダウンタイムをスケジュールしてから、アップグレードされたインスタンスに完全に切り替えます。

### 前提条件
<a name="automated-prereq-windows"></a>

AWS Systems Manager オートメーションドキュメントを使用して Windows Server のアップグレードを自動化するには以下のタスクを実行する必要があります。
+ 指定された IAM ポリシーを使用して IAM ロールを作成することで、Systems Manager が Amazon EC2 インスタンスに対して自動化タスクを実行できるようにし、Systems Manager を使用するための前提条件を満たしていることを確認します。詳細については「AWS Identity and Access Management ユーザーガイド」の「[AWS のサービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。**
+ [自動化の実行方法に関するオプションを選択してください。](#automated-execution-option)実行のオプションには[**シンプルな実行**]、[**レートの制御**]、[**複数のアカウントとリージョン**]、[**手動の実行**] があります。これらのパラメータの詳細については「[実行オプション](#automated-execution-option)」を参照してください。
+ インスタンスに SSM Agent がインストールされていることを確認します。詳細については「[Installing and configuring SSM Agent on Amazon EC2 instances for Windows Server (Windows Server の Amazon EC2 インスタンスで SSM Agent をインストールして設定する)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-windows.html)」を参照してください。
+ Windows PowerShell 3.0 以降をインスタンスにインストールする必要があります。
+ Microsoft Active Directory ドメインに参加しているインスタンスの場合はホスト名の競合を避けるために、ドメインコントローラーに接続できない `SubnetId` を指定することをお勧めします。
+ インスタンスサブネットにはインターネットへのアウトバウンド接続が必要です。これにより、Amazon S3 などの AWS のサービス へのアクセスと、Microsoft からのパッチのダウンロードが可能になります。この要件はサブネットがパブリックサブネットでインスタンスにパブリック IP アドレスがある場合、またはサブネットがインターネットトラフィックをパブリック NAT デバイスに送信するルートを持つプライベートサブネットの場合に満たされます。
+ このオートメーションはWindows Server 2008 R2、Windows Server 2012 R2、Windows Server 2016、および Windows Server 2019 を実行しているインスタンスで機能します。
+ インスタンスでブートディスクに 20 GB の空きディスク領域があることを確認します。
+ インスタンスが AWS の提供する Windows ライセンスを使用しない場合はWindows Server 2012 R2 インストールメディアを含む Amazon EBS スナップショット ID を指定します。これを実行するには:

  1. Amazon EC2 インスタンスで Windows Server 2012 以降が実行されていることを確認します。

  1. インスタンスが実行されているのと同じアベイラビリティーゾーンに 6 GB の Amazon EBS ボリュームを作成します。ボリュームをインスタンスにアタッチします。それをマウントします (例えばドライブ D として)。

  1. ISO を右クリックし、インスタンスにマウントします (例えばドライブ E として)。

  1. ISO の内容をドライブ E:\\ からドライブ D:\\ にコピーします。

  1. 上記のステップ 2 で作成した 6 GB ボリュームの Amazon EBS スナップショットを作成します。

### Windows Server のアップグレードの制限事項
<a name="automated-windows-limits"></a>

このオートメーションではWindows のドメインコントローラー、クラスター、または Windows デスクトップオペレーティングシステムのアップグレードはサポートされていません。さらに、このオートメーションでは以下のロールがインストールされた Windows Server の Amazon EC2 インスタンスもサポートされていません。
+ リモートデスクトップセッションホスト (RDSH)
+ リモートデスクトップ接続ブローカー (RDCB) 
+ リモートデスクトップ仮想化ホスト (RDVH) 
+ リモートデスクトップウェブアクセス (RDWA)

### Windows Server の自動アップグレードの実行のステップ
<a name="2008R2-2012R2"></a>

以下のステップに従い、[AWSEC2-CloneInstanceAndUpgradeWindows](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awsec2-CloneInstanceAndUpgradeWindows.html) オートメーションランブックを使用して Windows Server インスタンスをアップグレードします。

1. **AWS マネジメントコンソール**から Systems Manager を開きます。

1. 左のナビゲーションペインの **[Change Management]** (変更管理) で、**[Automation]** (オートメーション) を選択してください。

1. [**Execute automation (自動化の実行)**] を選択してください。

1. `AWSEC2-CloneInstanceAndUpgradeWindows` と呼ばれるオートメーションドキュメントを検索します。

1. ドキュメント名が表示されたら、選択してください。選択すると、ドキュメントの詳細が表示されます。

1. **[Execute automation]** (オートメーションの実行) を選択して、このドキュメントのパラメータを入力してください。ページの上部にある [**シンプルな実行**] は選択したままにします。

1. 次のガイダンスに従って、リクエストされたパラメータを入力してください。
   + `InstanceID`

     **タイプ:** 文字列

     (必須) SSM エージェントがインストールされている Windows Server 2008 R2、2012 R2、2016、2019 を実行しているインスタンス。
   + `InstanceProfile`. 

     **タイプ:** 文字列

     (必須) IAM インスタンスプロファイル。この IAM ロールはAmazon EC2 インスタンスと AWS AMI に対して Systems Manager のオートメーションを実行するために使用されます。詳細については、*AWS Systems Managerユーザーガイド*の「[EC2 インスタンスの権限の設定](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-permissions.html#instance-profile-add-permissions)」を参照してください。
   + `TargetWindowsVersion`

     **タイプ:** 文字列

     (必須) ターゲットの Windows バージョンを選択してください。
   + `SubnetId`

     **タイプ:** 文字列

     (必須) このサブネットはアップグレードプロセス用であり、ソース EC2 インスタンスの場所を指します。サブネットに Amazon S3 などの AWS サービス や Microsoft (パッチのダウンロード用) へのアウトバウンド接続があることを確認します。
   + `KeepPreUpgradedBackUp`

     **タイプ:** 文字列

     (オプション) このパラメータが `true` に設定されている場合は自動化によって、インスタンスから作成されたイメージが保持されます。デフォルトの設定は`false` です。
   + `RebootInstanceBeforeTakingImage`

     **タイプ:** 文字列

     (オプション) デフォルトは `false` です (再起動なし)。このパラメータが `true` に設定されている場合はSystems Managerによって、アップグレード用の AMI を作成する前にインスタンスが再起動されます。

1. パラメータを入力したら、[**実行**] を選択してください。自動化が開始したら、実行の進行状況をモニタリングすることができます。

1. 自動化が完了すると、AMI ID が表示されます。Windows OS がアップグレードされたことを確認するにはAMI を起動します。
**注記**  
自動化のすべてのステップを実行する必要はありません。それぞれのステップには自動化とインスタンスの動作に基づいた条件が付けられています。Systems Manager は必須でない一部のステップをスキップする場合があります。  
さらに、いくつかの手順がタイムアウトすることもあります。Systems Manager ではすべての最新パッチについて、インストールとアップグレードが試みられます。ただし、場合によっては特定のステップの定義可能なタイムアウト設定に基づいてパッチがタイムアウトします。この場合、Systems Manager の自動化は次のステップに進み、内部 OS ターゲットの Windows Server バージョンにアップグレードされるようにします。

1. 自動化が完了したら、AMI ID を使用して Amazon EC2 インスタンスを起動して、アップグレードを確認することができます。AWS AMI から Amazon EC2 インスタンスを作成する方法の詳細については「[カスタム AMI から EC2 インスタンスを起動する方法](https://repost.aws/knowledge-center/launch-instance-custom-ami)」を参照してください。

## SQL Server のアップグレード
<a name="automated-upgrades-sql"></a>

[AWSEC2-CloneInstanceAndUpgradeSQLServer](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awsec2-CloneInstanceAndUpgradeSQLServer.html) スクリプトではアカウントで SQL Server を実行している Amazon EC2 インスタンスから AMI を作成し、その AMI を SQL Server の新しいバージョンにアップグレードします。このマルチステッププロセスは完了するまで 2 時間かかる場合があります。

自動化はインスタンスから AMI を作成し、指定したサブネットで新しい AMI を起動します。その後、オートメーションはSQL Server のインプレースアップグレードを実行します。アップグレードが完了したら、自動化によって、アップグレードされたインスタンスを終了する前に新しい AMI が作成されます。

自動アップグレードプロセスには 2 つの AMI が含まれています。
+ **現在実行中のインスタンス**。最初の AMI は現在実行中のインスタンスです。このインスタンスはアップグレードされません。この AMI は別のインスタンスを起動してインプレースアップグレードを実行するために使用されます。プロセスが完了したら、この AMI はアカウントから削除されます。ただし、元のインスタンスを保持するように特別にリクエストした場合を除きます。この設定を行うには`KeepPreUpgradeImageBackUp` パラメータを使用します (デフォルト値は `false` です。つまり、AMI はデフォルトで削除されます)。
+ **更新された AMI**。この AMI は自動化プロセスの結果です。

最終結果は1 つの AMI です。つまり、AMI の更新されたインスタンスです。

アップグレードが完了したら、Amazon VPC で新しい AMI を起動して、アプリケーション機能をテストできます。テストが終了したら、別のアップグレードを実行する前に、アプリケーションのダウンタイムをスケジュールしてから、アップグレードされたインスタンスに完全に切り替えます。

### 前提条件
<a name="automated-prereq-sql"></a>

AWS Systems Manager オートメーションドキュメントを使用して SQL Server のアップグレードを自動化するには以下のタスクを実行する必要があります。
+ 指定された IAM ポリシーを使用して IAM ロールを作成することで、Systems Manager が Amazon EC2 インスタンスに対して自動化タスクを実行できるようにし、Systems Manager を使用するための前提条件を満たしていることを確認します。詳細については「AWS Identity and Access Management ユーザーガイド」の「[AWS のサービス に許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。
+ [自動化の実行方法に関するオプションを選択してください。](#automated-execution-option)実行のオプションには[**シンプルな実行**]、[**レートの制御**]、[**複数のアカウントとリージョン**]、[**手動の実行**] があります。これらのパラメータの詳細については「[実行オプション](#automated-execution-option)」を参照してください。
+ Amazon EC2 インスタンスではWindows Server 2008 R2 以降および SQL Server 2008 以降を使用する必要があります。
+ インスタンスに SSM Agent がインストールされていることを確認します。詳細については「[Windows Server の Amazon EC2 インスタンスで SSM Agent を使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-windows.html)」を参照してください。
+ インスタンスに十分な空きディスク容量があることを確認します。
  + Windows Server 2008 R2 から 2012 R2 にアップグレードする場合、または Windows Server 2012 R2 からそれ以降のオペレーティングシステムにアップグレードする場合はインスタンスのブートディスクに 20 GB の空きディスク容量があることを確認してください。
  + Windows Server 2008 R2 から 2016 以降にアップグレードする場合はインスタンスのブートディスクに 40 GB の空きディスク領域があるか、インスタンスを確認します。
+ Bring Your Own License (BYOL) SQL Server バージョンを使用するインスタンスの場合、次の前提条件が追加で適用されます。
  + ターゲットの SQL Server インストールメディアを含む Amazon EBS スナップショット ID を提供します。これを実行するには: 

    1. Amazon EC2 インスタンスで Windows Server 2008 R2 以降が実行されていることを確認します。

    1. インスタンスが実行されているのと同じアベイラビリティーゾーンに 6 GB の Amazon EBS ボリュームを作成します。ボリュームをインスタンスにアタッチします。それをマウントします (例えばドライブ D として)。

    1. ISO を右クリックし、インスタンスにマウントします (例えばドライブ E として)。

    1. ISO の内容をドライブ E:\\ からドライブ D:\\ にコピーします。

    1. ステップ 2 で作成した 6 GB ボリュームの Amazon EBS スナップショットを作成します。

### SQL Server 自動アップグレードの制限事項
<a name="automated-sql-limits"></a>

[AWSEC2-CloneInstanceAndUpgradeSQLServer](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awsec2-CloneInstanceAndUpgradeSQLServer.html) ランブックを使用して自動アップグレードを実行する場合は以下の制限が適用されます。
+ アップグレードはWindows 認証を使用して SQL Server 上でのみ実行できます。
+ インスタンスに保留中のセキュリティパッチの更新がないことを確認します。[**Control Panel (コントロール パネル)**] を開き、[**Check for updates (更新の確認)**] を選択してください。
+ HA およびミラーリングモードでの SQL Server のデプロイはサポートされていません。

### SQL Server の自動アップグレードの実行のステップ
<a name="SQL2008R2-SQL2016"></a>

以下のステップに従い、[AWSEC2-CloneInstanceAndUpgradeSQLServer](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awsec2-CloneInstanceAndUpgradeSQLServer.html) オートメーションランブックを使用して SQL Server をアップグレードします。

1. まだダウンロードしていない場合はSQL Server 2016 の .iso ファイルをダウンロードして、ソースサーバーにマウントします。

1. .iso ファイルがマウントされたら、コンポーネントファイルをすべてコピーし、任意のボリューム上に置きます。

1. そのボリュームの Amazon EBS スナップショットを取得し、後で使用できるようにそのスナップショット ID をクリップボードにコピーします。6\+6詳細については「**[Amazon EBS ユーザーガイド]**」の「[Amazon EBS スナップショットの作成](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-snapshot.html)」を参照してください。

1. インスタンスプロファイルを Amazon EC2 ソースインスタンスにアタッチします。これにより、Systems Manager はEC2 インスタンスと通信し、AWS Systems Manager サービスに追加されているコマンドを実行できるようになります。例えば、ロールに `SSM-EC2-Profile-Role` という名前を付け、そのロールに `AmazonSSMManagedInstanceCore ` ポリシーをアタッチします。

1. AWS Systems Manager コンソールの左のナビゲーションペインで、[**マネージドインスタンス**] を選択してください。EC2 インスタンスがマネージドインスタンスのリストに含まれていることを確認します。数分後にインスタンスが表示されない場合は*AWS Systems Manager ユーザーガイド*の[インスタンスがある場所](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-remote-commands.html#where-are-instances)を参照してください。

1. 左のナビゲーションペインの **[Change Management]** (変更管理) で、**[Automation]** (オートメーション) を選択してください。

1. [**Execute automation (自動化の実行)**] を選択してください。

1. `AWSEC2-CloneInstanceAndUpgradeSQLServer` と呼ばれるオートメーションドキュメントを検索します。

1. `AWSEC2-CloneInstanceAndUpgradeSQLServer` SSM ドキュメントを選択し、**[Next]** (次へ) を選択してください。

1. [**シンプルな実行**] オプションが選択されていることを確認します。

1. 次のガイダンスに従って、リクエストされたパラメータを入力してください。
   + `InstanceId` 

     **タイプ:** 文字列

     (必須) SQL Server 2008 R2 (またはそれ以降) を実行しているインスタンス。
   + `IamInstanceProfile`

     **タイプ:** 文字列

     (必須) IAM インスタンスプロファイル。
   + `SQLServerSnapshotId`

     **タイプ:** 文字列

     (必須) ターゲット SQL Server インストールメディア用のスナップショット ID。このパラメータはSQL Server ライセンス込みインスタンスには必要ありません。
   + `SubnetId`

     **タイプ:** 文字列

     (必須) このサブネットはアップグレードプロセス用であり、ソース EC2 インスタンスの場所を指します。サブネットに Amazon S3 などの AWS サービス や Microsoft (パッチのダウンロード用) へのアウトバウンド接続があることを確認します。
   + `KeepPreUpgradedBackUp`

     **タイプ:** 文字列

     (オプション) このパラメータが `true` に設定されている場合は自動化によって、インスタンスから作成されたイメージが保持されます。デフォルトの設定は`false` です。
   + `RebootInstanceBeforeTakingImage`

     **タイプ:** 文字列

     (オプション) デフォルトは `false` です (再起動なし)。このパラメータが `true` に設定されている場合はSystems Managerによって、アップグレード用の AMI を作成する前にインスタンスが再起動されます。
   + `TargetSQLVersion`

     **タイプ:** 文字列

     (オプション) ターゲット SQL Server のバージョン。デフォルトは `2016` です。

1. パラメータを入力したら、[**実行**] を選択してください。自動化が開始したら、実行の進行状況をモニタリングすることができます。

1. [**実行ステータス**] に [**成功**] と表示されている場合は[**出力**] を展開して AMI 情報を確認します。AMI ID を使用して、任意の VPC で SQL Server インスタンスを起動します。

1. Amazon EC2 コンソールを開きます。左のナビゲーションペインで [**AMI**] を選択してください。新しい AMI が表示されます。

1. SQL Server の新しいバージョンが正常にインストールされていることを確認するには新しい AMI を選択して、**[Launch]** (起動) を選択してください。

1. AMI で使用するインスタンスのタイプ、デプロイする VPC とサブネット、使用するストレージを選択してください。AMI から新しいインスタンスを起動しているため、起動している新しい EC2 インスタンスに含めるボリュームがオプションとして提示されます。これらのボリュームは必要に応じて削除または追加できます。

1. インスタンスを識別しやすいようにタグを追加します。

1. 1 つ以上のセキュリティグループをインスタンスに追加します。

1. [**インスタンスの作成**] を選択してください。

1. インスタンスのタグ名を選択し、[**アクション**] ドロップダウンの [**接続**] を選択してください。

1. SQL Server の新しいバージョンが新しいインスタンスのデータベースエンジンとして表示されていることを確認します。