Версия Elasticsearch: 6.3.2
Я пытался восстановить старый снимок (сделанный в январе 2018 года) Elasticsearch 5.2.2 из репозитория S3 только для чтения. Необходимые разрешения в роли IAM для экземпляра настроены.
Вот определение репозитория:
`` `
{
"production_copy_old": {
"type": "s3",
"settings": {
"bucket": "elasticsearch-snapshot",
"readonly": "true",
"base_path": "snaps//"
}
}
}
`` `
Хранилище настроено правильно, потому что, когда я выдаю снимок GET в хранилище, я получаю правильный ответ:
GET _snapshot/production_copy_old/elasticsearch-snapshot-201804190000
{
"snapshots": [
{
"snapshot": "elasticsearch-snapshot-201804190000",
"uuid": "fT0oftdTQhi5sns704pg45",
"version_id": 5020299,
"version": "5.2.2",
"indices": [<huge list of indices>],
"state": "SUCCESS",
"start_time": "2018-04-19T00:00:20.726Z",
"start_time_in_millis": 1524096020726,
"end_time": "2018-04-19T00:09:30.210Z",
"end_time_in_millis": 1524096570210,
"duration_in_millis": 549484,
"failures": [],
"shards": {
"total": 2875,
"failed": 0,
"successful": 2875
}
}
]
}
Однако, когда я пытаюсь восстановить снимок, я получаю сообщение об ошибке:
POST _snapshot/production_copy_old/elasticsearch-snapshot-201804190000/_restore
{
"indices": "myindex-201801",
"ignore_unavailable": false,
"include_global_state": false,
"index_settings": {
"index.number_of_replicas": 0
}
}
{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[s-elasticsearch-2][IP:9300][cluster:admin/snapshot/restore]"
}
],
"type": "no_such_file_exception",
"reason": "Blob object [meta-fT0oftdTQhi5ns70paP4pg.dat] not found: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID:<reqid>; S3 Extended Request ID:<extended-req-id)"
},
"status": 500
}
Однако, когда я пытаюсь aws s3 ls elasticsearch-snapshot/snaps//meta-fT0oftdTQhi5ns70paP4pg.dat
, я вижу, что экземпляр может увидеть объект, а также загрузить его. Из этого мы можем знать, что разрешения настроены правильно.
Кроме того, причина, по которой префикс имеет //
ближе к концу, заключается в том, что мы использовали этот репозиторий начиная с Elasticsearch 2.3. В этой версииasticsearch мы добавили косую черту в настройку префикса определения хранилища. В августе мы переехали в новый репозиторий с правильным определением префикса.
Есть ли способ, как мы можем обойти это? Нужно ли менять префикс?