AWS ES自动快照查询求助:授权报错及S3仓库找不到问题
解决Elasticsearch自动快照查询与权限问题
我来分享下解决这些问题的实用方法,之前处理ES域的时候刚好踩过类似的坑:
一、跳过手动签名,简便查询快照的方案
你遇到的匿名权限错误,是因为AWS托管的Elasticsearch(现也叫OpenSearch Service)要求所有API请求必须签名,手动折腾curl签名确实麻烦,推荐两个省心的方式:
直接用AWS CLI命令:AWS CLI会自动帮你处理请求签名,不用手动操作。查询自动快照的命令如下:
aws es list-snapshots --domain-name your-es-domain-name --repository cs-automated --region your-aws-region把
your-es-domain-name和your-aws-region换成你自己的域名称和区域就行,执行后就能直接看到所有自动快照的列表。让CLI生成签名后的curl命令(可选):如果一定要用curl,你可以通过CLI的
--debug参数导出已签名的请求。执行类似下面的命令,然后从输出里找到完整的curl请求(包含签名头):aws es list-snapshots --domain-name your-es-domain-name --repository cs-automated --region your-aws-region --debug不过这个方法不如直接用CLI高效,还是优先推荐第一种。
二、找不到S3中cs-automated仓库的原因
你在自己的S3控制台里看不到这个仓库对应的桶,是因为cs-automated是AWS托管的快照仓库,对应的S3桶属于AWS,不是你账户下的资源:
- 自动快照功能开启后,AWS会在对应区域为你的ES域创建专属的托管桶,这个桶不会出现在你的S3控制台里,你只能通过ES API或AWS CLI来访问快照内容。
- 你可以通过下面的命令验证自动快照仓库是否存在:
在输出的aws es describe-elasticsearch-domain --domain-name your-es-domain-name --region your-aws-regionSnapshotOptions字段里,能看到自动快照的启用状态和仓库名称cs-automated。
额外注意事项
- 确保你的AWS账号(或EC2实例的IAM角色)拥有
es:ListSnapshots、es:DescribeElasticsearchDomain这些权限,否则CLI命令也会返回权限错误。 - 如果你的ES域是刚创建的,自动快照可能需要几分钟时间才会生成第一个快照,耐心等一会儿再查询。
内容的提问来源于stack exchange,提问作者nomopo
相关产品推荐
相关产品推荐

