AWS CloudFormation で AWS::Elasticsearch::Domain リソースのインプレースアップグレードを実行したいと考えています。
簡単な説明
AWS::Elasticsearch::Domain リソースのインプレースアップグレードを有効にするには、CloudFormation テンプレートで UpdatePolicy 属性 (EnableVersionUpgrade と呼ばれる) を使用する必要があります。EnableVersionUpgrade ポリシーを使用して、Amazon OpenSearch Service ドメインのインプレースアップグレードを有効または無効にできます。
インプレースアップグレードまたは置換アップグレードを実行する前に、以下の点を考慮してください。
- Amazon OpenSearch Service は、バージョン 5.1 以降の OpenSearch Service のインプレースアップグレードをサポートしています。
- スタックの更新中に EngineVersion プロパティの値を変更すると、CloudFormation は OpenSearch Service ドメインの置換での更新を実行します。その後、CloudFormation は新しいドメインを作成します。
- インプレースアップグレードでは、ドメインの更新履歴を追跡したり、同じドメインエンドポイント URL を保持したりできます。ドメインとインターフェイスで接続するサービスの設定を変更する必要はありません。これらのサービスでは、ドメインの新しいバージョンにアクセスできます。
- 置換での更新では、更新履歴を追跡することはできません。古いドメインは、新しいドメインとそのドメインの新しいエンドポイント URL に置き換えられます。ドメインとインターフェイスで接続するサービスが新しいドメインにアクセスできるようにするには、サービスの設定を変更する必要があります。詳細については、「OpenSearch Service ドメインの作成と管理」を参照してください。
解決方法
1. CloudFormation スタックテンプレートに、EnableVersionUpgrade 更新ポリシーを追加します。
2. CloudFormation でインプレースアップグレードが実行できるようにするには、EnableVersionUpgrade を true に、ElasticsearchVersion をバージョンの値に設定します。
AWS::Elasticsearch::Domain リソースを新しい AWS::Elasticsearch::Domain リソースに置き換えるには、EnableVersionUpgrade を false に設定するか、値は指定しないでおきます。
たとえば次のテンプレートでは、UpdatePolicy 属性はインプレースでの更新用に設定されています。
>AWSTemplateFormatVersion: 2010-09-09
Description: AWS CloudFormation sample template to launch an Amazon OpenSearch Service Domain. Performing an update using the same template and supplying a different ElasticsearchVersion will perform an in-place upgrade for an Elasticsearch Domain resource.
Parameters:
ElasticsearchVersion:
Type: String
AllowedValues: ['5.6', '5.5', '5.3', '5.1', '6.8', '6.7', '6.5', '6.4', '6.3', '6.2', '6.0', '7.4', '7.1']
Default: 5.3
Description: The version of Amazon OpenSearch Service to use.
InstanceTypeForDataNode:
Type: String
Default: m3.medium.elasticsearch
Description: The instance type for your data nodes.
NumberOfDataNodes:
Type: String
Default: 1
Description: The number of data nodes (instances) to use in the OpenSearch Service domain.
Resources:
ElasticSearchDomain:
Type: AWS::Elasticsearch::Domain
UpdatePolicy:
EnableVersionUpgrade: true ### In-place Upgrade
Properties:
ElasticsearchClusterConfig:
InstanceCount: !Ref NumberOfDataNodes
InstanceType: !Ref InstanceTypeForDataNode
ElasticsearchVersion: !Ref ElasticsearchVersion
3. インプレースアップグレードまたは置換アップグレードのプロセスを完了するには、CloudFormation コンソールまたは AWS Command Line Interface (AWS CLI) のいずれかを使用してスタックを更新します。
関連情報
Amazon OpenSearch Service ドメインのアップグレード