

# ソリューションを更新する
<a name="update-the-solution"></a>

Instance Scheduler は、AWS CloudFormation を使用してインプレースで安全に更新できるように設計されています。これを行う一般的な手順は次のとおりです。

1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)にサインインし、ハブスタックがインストールされているアカウント/リージョンで `instance-scheduler-on-aws` を選択してから **[スタックの更新]** を選択します。

1. **[直接更新を実行]** を選択します。

1. **[既存のテンプレートを置換]** を選択します。

1. **[テンプレートを指定]** で、以下を実行します。
   + **[Amazon S3 URL]** を選択します。
   + [最新のテンプレート](aws-cloudformation-templates.md)のリンクをコピーします。
   + **[Amazon S3 URL]** ボックスにリンクを貼り付けます。
   + 正しいテンプレート URL が **[Amazon S3 URL]** テキストボックスに表示されていることを確認し、**[次へ]** を選択します。**[次へ]** をもう一度選択します。

1. **[パラメータ]** で、テンプレートのパラメータを確認し、必要に応じて変更します (必要なパラメータの更新については、以下の重大な変更点のリストを参照してください)。各パラメータの詳細については、「[ステップ 1. Instance Scheduler スタックを起動する」を参照してください](step-1-launch-the-instance-scheduler-hub-stack.md)。

1. **[次へ]** を選択します。

1. **[スタックオプションの設定]** ページで、**[次へ]** を選択します。

1. **[レビュー]** ページで、設定を確認して確定します。テンプレートが AWS Identity and Access Management (IAM) リソースを作成することを承認するボックスを必ずオンにします。

1. **[変更セットの表示]** を選択して、変更を確認します。

1. **[スタックの更新]** を選択してスタックをデプロイします。

AWS CloudFormation コンソールの **[ステータス]** 列でスタックのステータスを確認できます。数分後に **UPDATE\$1COMPLETE** ステータスが表示されます。

各スポークアカウントの aws-instance-scheduler-remote スタックに対して上記の手順を繰り返します。

## 特定のバージョンの下位互換性のない変更点
<a name="breaking-changes"></a>

ソリューションを更新する場合、重要なデータが失われたり、スケジューリングが中断されたりすることなく、任意の古いバージョンから新しいバージョンに直接アップグレードできます。各メジャーバージョンの動作および下位互換性のない変更のリストについては、以下を参照してください。

完全な変更ログは、[ソリューションの GitHub ページで](https://github.com/aws-solutions/instance-scheduler-on-aws/releases)確認できます。

## v1.5.0
<a name="updating-to-v1.5.x"></a>

バージョン 1.5.0 では、クロスアカウントスケジューリングロール ARN のリストを提供する必要がなくなり、AWS Organization を通じてそれらを自動的に管理できるようになりました。AWS Organizations を使用しない場合は、代わりにスポークアカウント ID のリストを指定でき、Instance Scheduler がスケジューリングロールを管理します。

v1.5.0 以降に更新する場合は、以下を行う必要があります。

1. 次のパラメーターを更新しながら、通常の更新手順に従ってハブスタックのテンプレートを更新します。

   1. このソリューションの一意の名前空間を選択します。

   1. **[Use AWS Organizations]** で、今後スポークアカウントの登録を管理するかどうかを選択します。

      1. **[Yes]** を選択した場合は、**組織 ID / リモートアカウント ID** を AWS Organization の ID に置き換えます。

      1. **[No]** を選択した場合は、**OrganizationID/RemoteAccountIDs** をスポークアカウントのアカウント ID のカンマ区切りリストに置き換えます。

1. 次のパラメーターを更新しながら、通常の更新手順に従ってすべてのリモートスタックを更新します。

   1. Namespace - ハブアカウントに選択したものと同じ。

   1. AWS Organizations を使用する - ハブアカウントと同じ。

   1. Hub Account ID - ハブアカウントのアカウント ID (以前と同じのため変更なし)。

## v3.0.0
<a name="updating-to-v3.x"></a>

v3.0.0 EC2 Auto Scaling グループのサポートを追加し、ソリューションのコア Lambda 関数を個別の関数に分割し、各関数に専用の責任を割り当てることで、各関数のセキュリティ分離を強化します。このリリースでは、スケジューリングオペレーションに関するインサイトを向上させるために、「SchedulingDecision」ログを含めるようにスケジューリングログの動作も更新されています。

v3.0.0 には、以前のバージョンと比較して以下の下位互換性のない変更点が含まれています。
+ 1.5.x の「CloudWatch メトリクス」機能は [Operational Insights ダッシュボード](monitor-the-solution.md#operational-insights-dashboard)に置き換えられました。
+ CloudWatch のスケジュールごとのメトリクスは、Schedule/Service/MetricName から Schedule/Service/SchedulingInterval/MetricName に移動されました。
+ 既存のメトリクスはすべて残りますが、新しいメトリクスが新しい名前空間の下にまとめられ、ソリューションダッシュボードで使用できるようになります。
+ EC2 DB インスタンスの暗号化された EBS ボリュームで使用する KMS キー ARN を、対応するアカウントのハブ/スポーク CloudFormation スタックに提供することが必須になりました (詳細については、「[暗号化された EC2 EBS ボリューム](security-1.md#encrypted-ec2-ebs-volumes)」を参照)。
  + 暗号化された EBS ボリュームで EC2 をスケジュールする場合は、使用されている KMS キー ARN をハブ/スポークスタックパラメータにコピーする必要があります。
+ スケジュールされたサービスの CloudFormation パラメータは、サポートされているサービスごとに個々のパラメータに分割されています。
  + すべてのサービスはデフォルトで有効になり、個別に無効にできます。
+ Instance Scheduler 3.0 には、古いバージョンの Instance Scheduler CLI との下位互換性がありません。
  + CLI コマンドを引き続き使用するには、Instance Scheduler CLI の最新バージョンに更新する必要があります。

上記に加えて、メンテナンスウィンドウテーブルのスキーマが更新されており、更新の一環として置き換えられます。これにより、v3.x への更新後最初の数分間、EC2 メンテナンスウィンドウの追跡がリセットされます。まれに、現在メンテナンスウィンドウ内のインスタンスが更新直後に通常より早く停止することがあります。このデータが再生成された後、スケジューリングオペレーションは通常どおり続行されます。

## v3.1.0
<a name="updating-to-v3.1.x"></a>

v3.1.0 は、AWS タグ付けイベントを使用してリソースがスケジューリング用にタグ付けされるタイミングを追跡するように、ソリューションのコアインフラストラクチャをリファクタリングします。組織のアクセス許可により、これらのタグ付けイベントをメンバーアカウントから中央ハブアカウントに送信できることを確認してください。

v3.1.0 以降に更新した場合
+ スポークアカウントは、ハブアカウントとは独立してスケジュールされたリージョンを宣言するようになります。各スポークスタックは、そのアカウントでスケジュールするリージョンを、**リージョン** (複数可) パラメータを使用して指定する必要があります。
+ 合計アカウント数が 40 を超えるデプロイでは、AWS Organizations モードが必要になりました。40 を超えるアカウントがあり、Organizations モードを使用していない場合は、更新中に有効にする必要があります。
+ スケジュールする AWS License Manager で EC2 インスタンスを管理している場合は、License Manager 構成 ARN をハブ/スポーク CloudFormation スタックの **License Manager 構成 ARN** パラメータに追加します。詳細については、「[EC2 License Manager](security-1.md#ec2-license-manager)」を参照してください。
+ このソリューションでは、スケジューリング用にタグ付けされてスケジューラによって管理されていることを示すと、IS-ManagedBy タグがリソースに自動的に適用されます。
+  *(v3.2.0 で復元)* スケジュールされたインスタンスのサイズ変更 (スケジュールで `period-name@size` を定義) は v3.1.0 で一時的に削除されましたが、v3.2.0 以降で再実装されています。「[インスタンスタイプ](schedule-reference.md#instance-type)」を参照してください。
+ SSM パラメータ (ハブスタックのアカウントパラメータに渡される `{param: ssm-param-name}`) を使用したメンバーアカウントの一覧表示はサポートされなくなりました。すべての信頼されたアカウントは、デプロイ時にハブスタックに渡される必要があります
+ Instance Scheduler では、スケジューリング中にリソースに最大 6 つの一意のタグが必要です。組織のタグ付け戦略の残りの部分と組み合わせる場合は、リソースに十分なタグ付け容量があることを確認してください。
+ スケジュールごとのメトリクスが CloudWatch から削除されました。
+ ソリューションログは、個別の管理ロググループとスケジューリングロググループに再パッケージ化され、CloudWatch Log Insights によるクエリ用に最適化されました。詳細については、「[ソリューションのモニタリング](monitor-the-solution.md)」を参照してください。
+ 開始タグと停止タグは、CloudFormation パラメータを使用して設定できなくなりました。このソリューションでは、スケジューリングアクションを追跡するために、より豊富な情報を含む固定タグ名を使用するようになりました。

**重要**  
Instance Scheduler は、通常のオペレーション中にマネージドリソースに最大 6 つの一意のタグを書き込みます。タグガバナンスポリシー (AWS Config ルール、タグポリシー、自動修復など) が、これらのタグを許可するように設定されていることを確認します。タグの完全なリストとガバナンスに関する重要な考慮事項については、「[情報タグ](monitor-the-solution.md#informational-tags)」を参照してください。