1

autorisiert Ich versuche elasticdump zu verwenden, um Indizes von AWS Elasticsearch Dienst zu kopieren:AWS Elasticsearch Dienst nicht ausführen Scroll

elasticdump --input=https://xxx.xx-xxx-x.es.amazonaws.com/my_index --output=my_index.json 

Der relevante Teil der Politik:

... 
    "Action": "es:*", 
    "Resource": [ 
    "arn:aws:es:xx-xxx-x:XXXXXXXX:domain/escluster/*", 
    "arn:aws:es:xx-xxx-x:XXXXXXXX:domain/escluster", 
    "arn:aws:es:xx-xxx-x:XXXXXXXX:domain/escluster/_search/scroll" 
    ] 
... 

Nach 100 Objekte Erhalte ich:

{"Message":"User: anonymous is not authorized to perform: es:ESHttpGet on resource: arn:aws:es:xx-xxx-x:XXXXXXXX:domain/escluster/_search/scroll"} 

Warum verhindert AWS das Scrollen?

Antwort

0

Sie können die IP für die Maschine benötigen hinzuzufügen, die die ES zugreifen der Dump Ich hatte ähnliches Problem und das Hinzufügen der festen IP mein Problem Meine Politik ist, so etwas zu machen:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
    "Effect": "Allow", 
    "Principal": { 
     "AWS": "arn:aws:iam::<AWSACCOUNT>:root" 
    }, 
    "Action": "es:*", 
    "Resource": "arn:aws:es:us-west-1:<AWSACCOUNT>:domain/<domain>/*" 
    }, 
    { 
    "Effect": "Allow", 
    "Principal": { 
     "AWS": "*" 
    }, 
    "Action": "*", 
    "Resource": [ 
      "arn:aws:es:<AWSACCOUNT>:domain/<domain>/*", 
      "arn:aws:es:<AWSACCOUNT>:domain/<domain>/_search/scroll" 
      ], 
    "Condition": { 
     "IpAddress": { 
     "aws:SourceIp": [ 
      <IP1>, 
      <IP2>, 
      <...> 
     ] 
     } 
    } 
    } 
] 
} 

und Vielleicht müssen Sie den Port in der Befehlszeile

setzen