コピーフォーラムが消える場合:
スナップショットS3のリポジトリの登録プロセスは、役割と署名リクエストが必要です。
S3エンドポイントを登録するための署名付きリクエストを作成するには、Pythonスクリプトを使用できます。下記の例を参照してください。
すべてこのプロセスは、ここで説明されています http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html しかし、要約するために、次の手順に従うことができます。
1)IAMポリシーを作成し、役割に添付追加:
例の役割を次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "es.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
このような例ポリシーは、以前の役割に添付する必要があります。
手動インデックスのスナップショットを取る前に、新しい役割へのアクセス権を持つIAMユーザーとして、スナップショットディレクトリ
を登録
{
"Version":"2012-10-17",
"Statement":[
{
"Action":[
"s3:ListBucket"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::es-index-backups"
]
},
{
"Action":[
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"iam:PassRole"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::es-index-backups/*"
]
}
]
}
2)、あなたは、Amazon Elasticsearchサービススナップショットディレクトリを登録する必要があります。この1回限りの操作では、Amazon ESに権限を与えるIAMロールでAWSリクエストに署名する必要があります。
保存次のサンプルPythonコードと、次の値を変更します。 地域:スナップショットリポジトリに エンドポイントを作成したAWSの地域:あなたのアマゾンESドメインのエンドポイント aws_access_key_id:IAM資格 aws_secret_access_key:IAM資格 パス:スナップショットリポジトリの場所
注:Pythonクライアントでは、スナップショットリポジトリを登録するコンピュータにbotoパッケージをインストールする必要があります。 S3リポジトリが登録されるとboto.connectionインポートAWSAuthConnection
class ESConnection(AWSAuthConnection):
def __init__(self, region, **kwargs):
super(ESConnection, self).__init__(**kwargs)
self._set_auth_region_name(region)
self._set_auth_service_name("es")
def _required_auth_capability(self):
return ['hmac-v4']
if __name__ == "__main__":
client = ESConnection(
region='us-east-1',
host='search-weblogs-etrt4mbbu254nsfupy6oiytuz4.us-east-1.es.a9.com',
aws_access_key_id='my-access-key-id',
aws_secret_access_key='my-access-key', is_secure=False)
print 'Registering Snapshot Repository'
resp = client.make_request(method='PUT',
path='/_snapshot/weblogs-index-backups',
data='{"type": "s3","settings": { "bucket": "es-index-backups","region": "us-east-1","role_arn": "arn:aws:iam::123456789012:role/MyElasticsearchRole"}}')
body = resp.read()
print body
から は、手動で取るとカールを使用してスナップショットを復元することができます。例として:
手動でスナップショットを取るために:
curl -XPOST 'http://search-weblogs-abcdefghijklmnojiu.us-east-1.a9.com/_snapshot/weblogs-index-backups/snapshot_1/_restore'
注:あなたはすでにアマゾンESクラスタにあなたのインデックスのスナップショットを復元することはできません手動でスナップショットを復元するには
curl -XPUT 'http://<Elasticsearch_domain_endpoint>/_snapshot/snapshot_repository/snapshot_name'
を同じ名前のインデックスを含んでいます。現在、Amazon ESはElasticsearch_close APIをサポートしていないため、次のいずれかの方法を使用する必要があります。 同じAmazon ESドメインのインデックスを削除してからスナップショットを復元します
このスレッドでは、動作させるプロセスを正確に説明しています。https://forums.aws.amazon.com/thread.jspa?threadID=217287 – Val
こんにちは私は同じ問題があります。あなたはそれをすることができましたか?はいの場合は、いくつかの洞察を提供できますか? – panipsilos