1) bir role ekleyin bir IAM politikası oluşturun ve ekleyin: bir örnek Rolü benziyor aşağıdadır:
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "es.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
bunun gibi bir örnek politikası önceki rolüne eklenmelidir yeni rolüne erişimi olan bir IAM kullanıcı olarak bir anlık Directory
kaydedilmesi
{
"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 Elastik ile anlık dizini kaydetmeniz gerekir manuel dizin anlık görüntüleri almadan önce earch Servisi. Bu bir kerelik işlem, AWS isteğinizi Amazon ES'ye izin veren IAM rolü ile imzalamanızı gerektirir.
kaydet Aşağıdaki örnek Python kodunu ve aşağıdaki değerleri değiştirin: bölge: Anlık görüntü bitiş noktası oluşturdu AWS bölge: Amazon ES etki alanı için son nokta aws_access_key_id: IAM kimlik aws_secret_access_key: IAM kimlik yolu : Anlık görüntü havuzunun konumu Not: Python istemcisi, boto paketinin, anlık görüntü havuzunuzu kaydettireceğiniz bilgisayara yüklenmesini gerektirir. S3 deposu kaydedildikten sonra
from boto.connection import 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
, el alıp curl kullanarak anlık geri mümkün olacaktır. Örnek olarak:
el anlık görüntü almak için:
curl -XPUT 'http://<Elasticsearch_domain_endpoint>/_snapshot/snapshot_repository/snapshot_name'
elle anlık geri yüklemek için:
curl -XPOST 'http://search-weblogs-abcdefghijklmnojiu.us-east-1.a9.com/_snapshot/weblogs-index-backups/snapshot_1/_restore'
Not: Amazon ES kümeye sizin endeksleri anlık geri yükleyemezsiniz zaten aynı ada sahip indeksler içerir.Eğer aşağıdaki alternatiflerden birini kullanmanız gerekir Halen Amazon ES, Elasticsearch _close API desteklemez: Aynı Amazon ES etki alanında endekslerini Sil , ardından farklı Amazon ES etki alanına anlık Restore anlık geri
Anlık görüntü kayıtlarını kaydedemiyorum. Rolü ve ilkeyi burada (belgelerle aynı) yaptım, ancak şu hatayı aldım: {"İleti": "Kullanıcı: arn: aws: iam ::: kullanıcı/, aşağıdakileri gerçekleştirmek için yetkiniz yok: es: Kaynakta ESHttpPost: " –
Efren
bu yüzden iam rolünüzle ilgili bir sorun var, elasticsearch politikası - iam politikasını kümenizle mi kullanıyorsunuz? veya betiğiniz, belki tüm komut dosyalarınız/politika detalilerinizle yeni bir soru yayınlayın, size yardımcı olmak çok daha kolay olacaktır. – Berlin
Bunu buldum, ES erişim politikasıydı, IP'leri sınırlıyordu. Teşekkür ederim! – Efren