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

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

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

简短描述

要为您的 AWS:: Elasticsearch:: Domain 资源启用就地升级或替换升级功能,您必须在 AWS CloudFormation 模板中使用一个名为 EnableVersionUpgradeUpdatePolicy 属性。您可以使用 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: ['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) 更新堆栈。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?