2014-10-21 13 views
5

Questo è il mio codice di provare a caricare documenti di ricerca nuvolaFail per caricare i documenti a AWS cloudsearch utilizzando 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() 

Questo è l'errore che ho ottenuto:

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' 

che è credo è un errore fuorviante. Quando aggiungo questa linea al init() di /Library/Python/2.7/site-packages/boto/cloudsearch2/document.py

print self.content 

il vero problema sembra appare come:

{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'} 

Qualche idea su come superare questo fastidioso errore di autorizzazione? Sono in grado di cercare con un determinato ID di accesso e chiave segreta ma non riesco a caricare !!!

+0

Qualsiasi fortuna risolvere questo? Sto avendo lo stesso problema. – apardes

+0

@cocoa, se la risposta sotto risolve il tuo problema, ti preghiamo di accettarlo. Altrimenti, indica come non riesce a risolverlo. – tedder42

risposta

5

CloudSearch consente di configurare criteri di accesso separati per l'invio di query o documenti. Sembra che forse la tua politica di invio dei documenti sia più restrittiva della tua politica di query (che è una configurazione comune).

Puoi lasciare aperta la documentazione per testare le cose e trovare una politica di accesso in seguito utilizzando la guida allo http://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html.

Esempio spalancata configurazione:

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

Ecco dove andare nella console web AWS:

CloudSearch access policies