如何从serverless.yaml配置更新AWS Elasticsearch访问策略?

时间:2020-05-11 08:33:11

标签: amazon-web-services elasticsearch serverless aws-access-policy

我正在尝试通过无服务器yaml配置更新AWS Elasticsearch访问策略:

resources:
  Resources:
    ELInstanceName:
      Type: "AWS::Elasticsearch::Domain"
      Properties:
        ElasticsearchVersion: "7.1"
        DomainName: "domain-name"
        ElasticsearchClusterConfig:
          DedicatedMasterEnabled: false
          InstanceCount: "3"
          ZoneAwarenessEnabled: false
          InstanceType: "m4.large.elasticsearch"
        EBSOptions:
          EBSEnabled: true
          Iops: 0
          VolumeSize: 10
          VolumeType: "gp2"
        AccessPolicies:
          Version: "2012-10-17"
          Statement:
            -
              Effect: "Allow"
              Principal:
                AWS:
                  - arn:aws:iam::XXXXXXXXX:user/user1
                  - arn:aws:iam::XXXXXXXXX:user/user2
                  - arn:aws:iam::XXXXXXXXX:role/Cognito_custom_Auth_Role
              Action: "es:*"
              Resource: "*"

在执行命令serverless deploy时,执行挂起或出现以下错误终止

............
Serverless: Operation failed!
Serverless Error ---------------------------------------

An error occurred - domain-name elasticsearch instance already exists.

有时在执行命令时不会出错,但是在AWS控制台中检查时,ES访问策略没有变化。

我是否缺少用于更新资源的任何配置详细信息?使用无服务器可以更新ES资源的访问策略?

1 个答案:

答案 0 :(得分:0)

DomainName

“如果指定名称,则不能执行需要替换该资源的更新。可以执行不需要或需要一些中断的更新。如果必须替换资源,请指定新名称。”

如果对AccessPolicies的更新确实需要替换域,则可以解释您的问题。根据文档,它不是,但是也许对域进行了其他更改?

一种解决方法是不对域名进行硬编码。