# アップデート手順

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

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

## 事前準備

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

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

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

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

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

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

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

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

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

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

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

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

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

3. リソースタブをクリックして、論理IDがFargateECSの行の物理IDをクリックします。

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

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

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

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

- UpdateTemplate1

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

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

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

アップデート先として選択できるのは、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

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

HULFT10 for Container Services Ver.10.2.0で追加された機能を使用する場合は、追加されたパラメーターを確認し用意しておきます。

詳細は、「Ver.10.2.0スタック更新時の変更点」を参照してください。

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

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

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

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

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

## スタックの更新

作成済みのHULFT10 for Container Services Ver.10.1.0のNewDeployTemplate1スタックに対し、Ver.10.2.0のUpdateTemplate1を指定してスタックを更新します。

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

1. 転送コンテナの停止

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

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

       aws ecs update-service --cluster FargateEcsCluster--service FargateEcsServiceForTransfer--desired-count 0

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

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

2. 管理コンテナの停止

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

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

       aws ecs update-service --cluster FargateEcsCluster--service FargateEcsServiceForControl--desired-count 0

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

パラメーターの追加

  DBEngineVersion

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

変更セットのプレビュー

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

  - Network1

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

  - DB1

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

  - ECSSummary1

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

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

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

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

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