# アップデート手順

EC2環境のアップデートについて説明します。

AWS CloudFormationが提供するスタックの更新を利用します。

## 事前準備

HULFT10 for Container Servicesのアップデートにあたって、事前に確認しておく情報があります。

### アップデートユーザーの権限設定

アップデートには導入ユーザーと同じ権限が必要です。

詳細は、「AWS Marketplaceからの環境構築」-「事前準備」の「導入ユーザーの権限設定（必須）」を参照してください。

### アップデートに必要な情報の確認

CloudFormationスタックの更新に必要な情報を、アップデート作業の前に取得しておきます。

アップデート作業の流れは以下のとおりです。

図1.7 アップデート作業の流れ

### 転送コンテナおよび管理コンテナの情報取得

転送コンテナおよび管理コンテナを停止するために必要な情報を取得します。

1. 作成済みのHULFT10 for Container Services Ver.10.0.0のCloudFormation Template2の実行スタックのリソースタブをクリックします。

2. 論理IDがECSSummary1の行の物理IDをクリックします。

   ECSSummary1でネストされたスタックのリソースの画面が開きます。

3. 論理IDがECS1の行の物理IDをクリックします。

   ECS1でネストされたスタックの情報画面が開きます。

4. リソースタブをクリックしてEcsCluster、EcsService、およびEcsService2の値を取得します。

### スタック更新用テンプレートURLの取得

Marketplaceから、スタックに対応した以下のアップデート用テンプレートのAmazon S3 URLを取得します。

- UpdateTemplate1

  URLリンクはDeployment templateのUpdateTemplate1として記載します。

- UpdateTemplate2

  URLリンクはDeployment templateのUpdateTemplate2として記載します。

### Amazon Aurora MySQLエンジンバージョンの取得

HULFT10 for Container Services Ver.10.1.0からのアップデートを行う場合、データベースのエンジンバージョン22DBEngineVersionの指定は必須となります。

アップデート先として選択できるのは、8.0.mysql_aurora.3.04.3、または特定のAmazon Aurora MySQLエンジンバージョンのみです。

特定のAmazon Aurora MySQLエンジンバージョンを取得するコマンドは以下のとおりです。

    aws rds describe-db-engine-versions --engine-version 8.0.mysql_aurora.3.04.3 --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

    8.0.mysql_aurora.3.06.1
    8.0.mysql_aurora.3.07.1

### アップデートで追加されたパラメーターの確認

アップデートで追加された機能を使用する場合は、追加されたパラメーターを確認し用意しておきます。

詳細は、以下を参照してください。

- Ver.10.2.0スタック更新時の変更点

- Ver.10.1.0スタック更新時の変更点

### データベーススナップショットの作成

HULFT10 for Container ServicesをVer.10.1.0からVer.10.2.0にアップデートすると、データベースもアップデートされます。

アップデートが失敗した場合にデータベースをロールバックできるように、アップデートする前にデータベースのスナップショットを作成してください。

スナップショットの作成の詳細は、以下のAWS公式ドキュメントを参照してください。

「DB クラスタースナップショットの作成」（2024年12月1日）

## スタックの更新

作成済みのHULFT10 for Container Services Ver.10.0.0のTemplate1およびTemplate2スタックに対し、Ver.10.1.0のUpdateTemplate1とUpdateTemplate2をそれぞれ指定してスタックを更新します。

スタックの更新でEC2環境をアップデートする手順の概要は以下のとおりです。

1. 転送コンテナの停止

   事前準備で取得した情報を利用してCLIまたはECSのページでサービスの停止を行います。

   CLIで転送コンテナを停止するコマンドの例

       aws ecs update-service --cluster EcsCluster --service EcsService2 --desired-count 0

   このコマンドの--clusterには、事前準備で取得したEcsClusterの値を指定します。

   このコマンドの--serviceには、事前準備で取得したEcsService2の値を指定します。

2. 管理コンテナの停止

   事前準備で取得した情報を利用してCLIまたはECSのページでサービスの停止を行います。

   CLIで管理コンテナを停止するコマンドの例

       aws ecs update-service --cluster EcsCluster --service EcsService --desired-count 0

   このコマンドの--clusterには、事前準備で取得したEcsClusterの値を指定します。

   このコマンドの--serviceには、事前準備で取得したEcsServiceの値を指定します。

3. CloudFormation Template1のスタックを更新します。

   1. 作成済みのHULFT10 for Container Services Ver.10.0.0のCloudFormation Template1の実行スタックを開きます。

   2. 更新ボタンからスタックの更新画面を開きます。

   3. 既存のテンプレートを置換を選択し、テンプレートソースに「スタック更新用テンプレートURLの取得」で取得したUpdateTemplate1のAmazon S3 URLを指定します。

   4. レビュー画面で変更セットの内容を確認後、チェックを付けて実行します。

   5. およそ5分で実行が完了します。スタックの情報－ステータスがUPDATE_COMPLETEになっていることを確認します。

      注意

      スタックの更新時に選択できるスタックの失敗オプション－プロビジョニング失敗時の動作 は“すべてのスタックリソースをロールバックする”を選択してください。

      “正常にプロビジョニングされたリソースの保持”を選択するとタスク定義の更新に失敗しエラーとなります。

   スタックの更新の詳細は、以下のAWS 公式ドキュメント を参照してください。

   「AWS CloudFormationスタックの更新」（2024年6月1日）

4. CloudFormation Template2のスタックを更新します。

   1. 作成済みのHULFT10 for Container Services Ver.10.0.0のCloudFormation Template2の実行スタックを開きます。

   2. 更新ボタンからスタックの更新画面を開きます。

   3. 既存のテンプレートを置換を選択し、テンプレートソースに「スタック更新用テンプレートURLの取得」で取得したUpdateTemplate2のAmazon S3 URLを指定します。

   4. 新機能を利用する場合、スタックの詳細を指定のページにて、追加されたパラメーターを指定します。

   5. レビュー画面で変更セットの内容を確認後、チェックを付けて実行します。

   6. およそ15分で実行が完了します。スタックの情報－ステータスがUPDATE_COMPLETEになっていることを確認します。

      注意

      スタックの更新時に選択できるスタックの失敗オプション－プロビジョニング失敗時の動作 は“すべてのスタックリソースをロールバックする”を選択してください。

      “正常にプロビジョニングされたリソースの保持”を選択するとタスク定義の更新に失敗しエラーとなります。

   スタックの更新の詳細は、以下のAWS 公式ドキュメント を参照してください。

   「AWS CloudFormationスタックの更新」（2024年6月1日）

## Ver.10.2.0スタック更新時の変更点

HULFT10 for Container Services Ver.10.2.0にアップデートすることでスタックの更新内容が変更されます。

### CloudFormation Template1スタックからの変更点

パラメーターの追加

  なし

変更セットのプレビュー

  以下の2つの変更点が表示されます。

  - Network1

    SecurityGroup1－EC2SecurityGroup7 にWSSの送信要求受付用ポートのインバウンドルールを追加します。

### CloudFormation Template2スタックからの変更点

パラメーターの追加

  22DBEngineVersion

  Amazon Aurora MySQLのエンジンバージョン

変更セットのプレビュー

  以下の2つの変更点が表示されます。

  - DB1

    RDSDBCluster1－EngineVersionをパラメータ指定に応じて変更します。

  - ECSSummary1

    ECS1－TaskDefinition1の管理コンテナバージョンを更新した新しいリビジョンを作成します。

    ECS1－TaskDefinition1の転送コンテナバージョンを更新し、送信要求受付用のポートを追加した新しいリビジョンを作成します。

    ECS1－EcsService2 にWSSの送信要求受付用のALBターゲットグループを登録します。

    ELB1－ElasticLoadBalancingV2Listener9をWSSの送信要求受付用のALBリスナーとして作成します。

    ELB1－ALBTargetGroup12をWSSの送信要求受付用のALBターゲットグループとして作成します。

## Ver.10.1.0スタック更新時の変更点

HULFT10 for Container Services Ver.10.1.0にアップデートすることでスタックの更新内容が変更されます。

### CloudFormation Template1スタックからの変更点

パラメーターの追加

  なし

変更セットのプレビュー

  以下の2つの変更点が表示されます。

  - Network1

    SecurityGroup1－EC2SecurityGroup4 に送信要求受付用ポートのインバウンドルールを追加します。

  - S31

    S3Bucket2をリネームし新規作成します。

    リネーム前のバケットの扱いについては、以下のとおりオブジェクトが存在するかどうかで判断されます。

    - オブジェクトが存在する場合

      リネーム前のバケットは削除されません。

      不要な場合はアップデート後に手動で削除してください。

    - オブジェクトが存在しない場合

      リネーム前のバケットは削除されます。

### CloudFormation Template2スタックからの変更点

パラメーターの追加

  20DBInstanceType

  Amazon Aurora MySQLを使用するためのインスタンスタイプ

  21S3IAMPolicy

  転送コンテナのタスクロールに含まれる、S3にアクセスするためのIAMポリシーのARN

変更セットのプレビュー

  以下の5つの変更点が表示されます。

  - ACM1

    内部パラメーターの更新のみで動作に変更はありません。

  - DB1

    RDSDBInstanceのインスタンスタイプをパラメーター指定に応じて変更し、CA証明書をrds-ca-rsa2048-g1に更新します。

  - ECSSummary1

    ECS1－EcstaskRoleTransferを転送コンテナの実行ロールとして作成します。

    ECS1－TaskDefinition1の管理コンテナバージョンを更新した新しいリビジョンを作成します。

    ECS1－TaskDefinition2 の転送コンテナバージョンを更新し、送信要求受付用のポートを追加した新しいリビジョンを作成します。

    ELB1－ElasticLoadBalancingV2Listener8を送信要求受付用のNLBリスナーとして作成します。

    ELB1－ALBTargetGroup11を送信要求受付用のNLBターゲットグループとして作成します。

  - SercretManager1

    内部パラメーターの更新のみで動作に変更はありません。

  - SercretManager2

    内部パラメーターの更新のみで動作に変更はありません。