AWS CloudFormation で AWS::Elasticsearch::Domain リソースをインプレースまたは置換で更新する方法を教えてください。

最終更新日: 2020 年 4 月 23 日

AWS CloudFormation で AWS::Elasticsearch::Domain リソースをインプレースまたは置換で更新したいと考えています。

簡単な説明

AWS::Elasticsearch::Domain リソースのインプレースまたは置換での更新を有効にするには、AWS CloudFormation テンプレートで UpdatePolicy 属性 (EnableVersionUpgrade と呼ばれる) を使用する必要があります。EnableVersionUpgrade ポリシーを使用して、Elasticsearch ドメインのインプレースでの更新を有効または無効にできます。

インプレースまたは置換での更新を実行する前に、以下の点を考慮してください。

  • Amazon Elasticsearch Service (Amazon ES) は、バージョン 5.1 以降を実行しているドメインに対して Elasticsearch のインプレースでの更新をサポートしています。
  • スタックの更新中に EngineVersion プロパティの値を変更すると、AWS CloudFormation は Elasticsearch ドメインの置換での更新を実行し、新しいドメインを作成します。
  • インプレースでの更新では、ドメインの更新履歴を追跡したり、同じドメインエンドポイント URL を保持したりできます。ドメインとインターフェイスで接続するサービスの設定を変更する必要はありません。これらのサービスでは、ドメインの新しいバージョンにアクセスできます。
  • 置換での更新では、更新履歴を追跡することはできません。古いドメインは、新しいドメインとそのドメインの新しいエンドポイント URL に置き換えられます。ドメインとインターフェイスで接続するサービスが新しいドメインにアクセスできるようにするには、サービスの設定を変更する必要があります。詳細については「Amazon Elasticsearch Service ドメインの管理」をご参照ください。

解決方法

1.    AWS CloudFormation スタックテンプレートに、EnableVersionUpgrade 更新ポリシー を追加します。

2.    AWS CloudFormation でインプレースでの更新が実行できるようにするには、EnableVersionUpgradetrue に、ElasticsearchVersion をバージョンの値に設定します。

– または –

AWS::Elasticsearch::Domain リソースを新しい AWS::Elasticsearch::Domain リソースに置き換えるには、EnableVersionUpgradefalse に設定するか、値は指定しないでおきます。

たとえば次のテンプレートでは、UpdatePolicy 属性はインプレースでの更新用に設定されています。

AWSTemplateFormatVersion: 2010-09-09
Description: AWS CloudFormation sample template to launch an Elasticsearch 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 Elasticsearch 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 Amazon ES 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.    インプレースまたは置換での更新プロセスを完了するには、AWS CloudFormation コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) のいずれかを使用してスタックを更新します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合