LoginSignup
5
5

More than 3 years have passed since last update.

esの手動バックアップリストア

Last updated at Posted at 2020-08-18

雑にメモ

リポジトリ登録

こちらのリンクの公式手順通りregster-repo.pyを作成し実行する

$ python register-repo.py
import boto3
import requests
from requests_aws4auth import AWS4Auth

host = 'https://xxxxx.ap-northeast-1.es.amazonaws.com' # include https:// and trailing /
region = 'ap-northeast-1' # e.g. us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Register repository

path = '_snapshot/my-snapshot-repo1' # the Elasticsearch API endpoint
url = host + path

payload = {
  "type": "s3",
  "settings": {
    "bucket": "es-snapshot-xxxx",
    # "endpoint": "s3.amazonaws.com", # for us-east-1
    "region": "ap-northeast-1", # for all other regions
    "role_arn": "arn:aws:iam::xxxxxxxxxxxx:role/TheSnapshotRole"
  }
}

headers = {"Content-Type": "application/json"}

r = requests.put(url, auth=awsauth, json=payload, headers=headers)

print(r.status_code)
print(r.text)

これだけだと、以下のエラーが出る

$ python register-repo.py
403
{"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::xxxxxxxxxxxx:user/uehara, backend_roles=[], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::xxxxxxxxxxxx:user/uehara, backend_roles=[], requestedTenant=null]"},"status":403}

一部「manage_snapshots ロールを、TheSnapshotRole を引き受ける iam:PassRole アクセス許可を持つ IAM ロールにマッピングする必要があります。」の作業が必要で、以下のようにKibanaのRoleのmanage_snapshotにUserとBackend rolesをマッピングする

スクリーンショット 0002-08-18 10.12.41.png

これでackがtrueで返ってきた

$ python register-repo.py
200
{"acknowledged":true}

リポジトリの確認

GET /_cat/repositories?v

GET /_snapshot/

リポジトリを削除したい時。取得済スナップショットがあれば事前にスナップショットの削除が必要

DELETE /_snapshot/my-snapshot

スナップショット(バックアップ)

###スナップショットリポジトリ情報
GET _snapshot/

###スナップショット実行中のステータス。スナップショットが終われば何も返ってこない
GET /_snapshot/_status

###全インデックスのスナップショット
PUT /_snapshot/my-snapshot-repo1/snapshot-test1

###取得した任意のスナップショットの情報表示(インデックス情報とか)
GET /_snapshot/my-snapshot-repo1/<snapshot-name>

###取得した全てのスナップショットの情報表示(インデックス情報とか)
GET /_snapshot/my-snapshot-repo1/_all

リストア

###インデックス削除(必要なら)
DELETE /log-aws-cloudtrail-2020-08-16

##全体リストアは失敗する
##Kibana ときめ細かなアクセス制御インデックスに対する特別なアクセス許可により、特に自動スナップショットから復元しようとする場合は、すべてのインデックスを復元しようとすると失敗することがあります。

POST /_snapshot/my-snapshot-repo1/snapshot-test1/_restore

POST /_snapshot/my-snapshot-repo1/snapshot-test1/_restore
{"indices": "log-aws-cloudtrail-2020-08-16"}

インデックス指定でスナップショット(バックアップ)

PUT /_snapshot/my-snapshot-repo1/snapshot-log-aws-cloudtrail-2020-08-31?wait_for_completion=true
{
    "indices": "log-aws-cloudtrail-2020-08-31",
    "ignore_unavailable": true,
    "include_global_state": false
}
レスポンス
{
  "snapshot" : {
    "snapshot" : "snapshot-log-aws-cloudtrail-2020-08-31",
    "uuid" : "ZPbqk1rgQdOPunKObWktJA",
    "version_id" : 7070099,
    "version" : "7.7.0",
    "indices" : [ "log-aws-cloudtrail-2020-08-31" ],
    "include_global_state" : false,
    "state" : "SUCCESS",
    "start_time" : "2020-09-03T08:32:43.666Z",
    "start_time_in_millis" : 1599121963666,
    "end_time" : "2020-09-03T08:32:50.869Z",
    "end_time_in_millis" : 1599121970869,
    "duration_in_millis" : 7203,
    "failures" : [ ],
    "shards" : {
      "total" : 3,
      "failed" : 0,
      "successful" : 3
    }
  }
}

インデックス指定でリストア

POST /_snapshot/my-snapshot-repo1/snapshot-test1/_restore
{"indices": "log-aws-cloudtrail-2020-08-16"}

スナップショットの削除

###取得スナップショットの中身のインデックス情報
GET /_snapshot/my-snapshot-repo1/_all

###スナップショットを指定して削除
DELETE /_snapshot/my-snapshot-repo1/snapshot-log-aws-cloudtrail-2020-08-31

参考

Elastic社のAPIドキュメント
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore-apis.html

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5