如何在 AWS CloudFormation 中就地升级或替换升级 AWS::Elasticsearch::Domain 资源?

上次更新时间:2020 年 4 月 23 日

我想在 AWS CloudFormation 中就地升级或替换升级我的 AWS::Elasticsearch::Domain 资源。

简短描述

要为您的 AWS:: Elasticsearch:: Domain 资源启用就地升级或替换升级功能,您必须在 AWS CloudFormation 模板中使用一个名为 EnableVersionUpgrade 的 UpdatePolicy 属性。您可以使用 EnableVersionUpgrade 策略为 Elasticsearch 域启用或禁用就地升级。

在执行就地升级或替换升级之前,请注意以下事项:

Amazon Elasticsearch Service (ES) 支持就地升级运行 5.1 版或更高版本的 Amazon Elasticsearch 域。 如果您在堆栈更新期间更改了 EngineVersion 属性的值,则 AWS CloudFormation 将对 Elasticsearch 域执行替换升级并创建一个新的域。 借助就地升级功能,您可以跟踪域的升级历史记录并保持相同的域终端节点 URL。您无需更改与您的域交互的服务的配置。这些服务将有权访问您的域的新版本。 如果使用替换升级,您将不能跟踪升级历史记录。旧域将被新域和该域的新终端节点 URL 替换。要允许与您的域交互的服务访问新域,则必须更改您的服务的配置。有关更多信息,请参阅管理 Amazon Elasticsearch Service 域。

解决方法

1.在您的 AWS CloudFormation 堆栈模板中,添加 EnableVersionUpgrade UpdatePolicy

2.要允许 AWS 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 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: 
    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) 更新堆栈。