2014-10-21 12 views
5

To jest mój kod, aby spróbować przesłać dokumenty do chmury poszukiwaniuFail przesłać dokumenty do AWS cloudsearch pomocą boto.cloudsearch2

from boto.cloudsearch2.layer2 import Layer2 
conn_config = { 
    'region': 'us-east-1', 
    'aws_access_key_id': os.getenv('AWS_ACCESS'), 
    'aws_secret_access_key': os.getenv('AWS_SECRET'), 
    'debug': 2 
} 
conn = Layer2(**conn_config) 
domain = conn.lookup(my_domain) 
doc_service = domain.get_document_service() 
doc_service.add(my_id, my_fields) 
doc_service.commit() 

Jest to błąd mam:

Traceback (most recent call last): 
line 32, in <module> doc.commit() 
File "/Library/Python/2.7/site-packages/boto/cloudsearch2/document.py", line 205, in commit return CommitResponse(r, self, sdf) 
File "/Library/Python/2.7/site-packages/boto/cloudsearch2/document.py", line 250, in  __init__ 
self.adds = self.content['adds'] 
KeyError: 'adds' 

co wierzę jest błędem wprowadzającym w błąd. Kiedy dodać tę linię do init,() z /Library/Python/2.7/site-packages/boto/cloudsearch2/document.py wydaje

print self.content 

prawdziwy problem pojawia się jako:

{u'status': u'error', u'message': u'User: anonymous is not authorized to perform: cloudsearch:document on resource: arn:aws:cloudsearch:us-east-1:053216739513:domain/dev-audit', u'errors': [{u'message': u'[*Deprecated*: Use the outer message field] User: anonymous is not authorized to perform: cloudsearch:document on resource: arn:aws:cloudsearch: ...'}], u'__type': u'#AccessDenied'} 

Wszelkie spostrzeżenia dotyczące sposobu przezwyciężenia tego irytującego błędu uprawnień? Jestem w stanie wyszukiwać z podanym identyfikatorem dostępu i tajnym kluczem, ale nie mogę przesłać !!!

+0

Wszelkie szczęście rozwiązanie tego? Mam ten sam problem. – apardes

+0

@ cocoa, jeśli poniższa odpowiedź rozwiąże problem, zaakceptuj to. W przeciwnym razie wskaż, w jaki sposób nie może go rozwiązać. – tedder42

Odpowiedz

5

CloudSearch umożliwia skonfigurowanie oddzielnych zasad dostępu dla zapytań i przesyłania dokumentów. Wygląda na to, że twoja polityka składania dokumentów jest bardziej restrykcyjna niż polityka zapytań (co jest typową konfiguracją).

Możesz przesłać zgłoszenie do dokumentów, aby przetestować różne rzeczy i wymyślić zasady dostępu, korzystając z przewodnika pod adresem http://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html.

Próbka szeroko otwarte konfiguracja:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "cloudsearch:*" 
    } 
    ] 
} 

Oto, gdzie się udać w konsoli internetowej AWS:

CloudSearch access policies