Я пытаюсь расширить / изменить скрипт Python для создания снимков awsasticsearch.
Я хочу сделать снимок каждого индекса в корзину S3 перед его удалением.Ниже приведен сценарий, который я до сих пор.
проблема: когда я выполняю это, это создает снимок со всеми индексами, где я хочу создать один снимок для одного индекса.
результат: каждый индекс должен иметь успешный моментальный снимок и после которого он должен быть удален.
import boto3
import requests
import json
from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection
import curator
host = 'search-xx-xxxxxas-xxxxx-xxxx-xxxxxx.us-east-1.es.amazonaws.com' # For example, search-my-domain.region.es.amazonaws.com
region = 'us-east-1' # For example, us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
TRUE = 'true'
FALSE = 'false'
# Build the Elasticsearch client.
es = Elasticsearch(
hosts = [{'host': host, 'port': 443}],
http_auth = awsauth,
use_ssl = True,
verify_certs = True,
connection_class = RequestsHttpConnection
)
index_list = curator.IndexList(es)
# Filters by age, anything with a time stamp older than 30 days in the index name.
index_list.filter_by_age(source='name', direction='older', timestring='%Y.%m.%d', unit='days', unit_count=67)
print("Found %s indices to delete" % len(index_list.indices))
## Creating snapshots for the above.
for x in range(len(index_list.indices)):
index = index_list.indices[x]
print(type(index))
url = 'https://'+host+'/_snapshot/qc-snapshots/'+ index
payload_dict = {
"indices": index,
"ignore_unavailable": True ,
"include_global_state": False
}
payload = json.dumps(payload_dict)
headers = {
'Content-Type': "application/json",
'Cache-Control': "no-cache"
}
print(url)
print(payload)
print(headers)
r = requests.put(url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)