Amazon web services 如何从serverless.yaml配置更新aws elasticsearch访问策略?
我正在尝试通过无服务器yaml配置更新AWS elasticsearch访问策略:Amazon web services 如何从serverless.yaml配置更新aws elasticsearch访问策略?,amazon-web-services,
elasticsearch,serverless,aws-access-policy,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:
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资源的访问策略?:
如果指定名称,则无法执行需要替换此资源的更新。可以执行不需要中断或需要中断的更新。如果必须替换资源,请指定新名称
如果对的更新确实需要替换域,这将解释您的问题。根据文件,它没有,但也许有一些其他的变化正在作出的领域,这是吗
一种解决方法是不要硬编码域名。:
如果指定名称,则无法执行需要替换此资源的更新。可以执行不需要中断或需要中断的更新。如果必须替换资源,请指定新名称
如果对的更新确实需要替换域,这将解释您的问题。根据文件,它没有,但也许有一些其他的变化正在作出的领域,这是吗
一个解决方法是不要硬编码域名。感谢您的回复,推荐的解决方法是如何工作的?如果有多个elasticsearch域,由于没有提及arn等的配置,我如何在不使用域名的情况下更新特定域的访问策略?您希望如何更新访问策略?使用CloudFormation时,您只使用资源的名称(在您的示例中,ElistanceName是域资源的名称)。属性DomainName导致了问题。如何在不设置域名的情况下更新特定的ES域?由于在设置DomainName时,它尝试使用相同的名称创建新域,而不是更新现有的域。您是否尝试删除属性DomainName,然后在引用域时使用CloudFormation资源的名称?在您的案例“ElistanceName”中,正如我在前面的评论中提到的。感谢您的回复,推荐的解决方案是如何工作的?如果有多个elasticsearch域,由于没有提及arn等的配置,我如何在不使用域名的情况下更新特定域的访问策略?您希望如何更新访问策略?使用CloudFormation时,您只使用资源的名称(在您的示例中,ElistanceName是域资源的名称)。属性DomainName导致了问题。如何在不设置域名的情况下更新特定的ES域?由于在设置DomainName时,它尝试使用相同的名称创建新域,而不是更新现有的域。您是否尝试删除属性DomainName,然后在引用域时使用CloudFormation资源的名称?在您的案例中,“ElistanceName”,正如我在前面的评论中提到的。