2014-10-21 11 views
5

Verwendung Dies ist mein Code Dokumente zu Cloud-Suche, um zu versuchenAusfallen Dokumente aws hochladen Cloud boto.cloudsearch2

Hochladen
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() 

Dies ist der Fehler, den ich bekam:

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' 

das ist glaube ich ist ein irreführender Fehler. Wenn ich diese Zeile init hinzufügen() von /Library/Python/2.7/site-packages/boto/cloudsearch2/document.py

print self.content 

das eigentliche Problem scheint erscheint als:

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

Irgendwelche Erkenntnisse, wie man diesen lästigen Erlaubnisfehler überwinden kann? Ich bin in der Lage, mit gegebener Zugangsidentifikation und geheimem Schlüssel zu suchen, aber schiebe einfach nicht herauf !!!

+0

Glück gehabt diese Lösung? Ich habe das gleiche Problem. – apardes

+0

@cocoa, wenn die Antwort unten Ihr Problem löst, bitte akzeptieren Sie es. Andernfalls geben Sie an, wie es nicht gelöst werden kann. – tedder42

Antwort

5

Mit CloudSearch können Sie separate Zugriffsrichtlinien für die Abfrage und die Einreichung von Dokumenten konfigurieren. Es klingt vielleicht so, als ob Ihre Richtlinien für die Übermittlung von Dokumenten restriktiver sind als Ihre Abfragerichtlinie (dies ist ein gängiges Setup).

Sie können die Doc-Einreichung weit offen lassen, um Dinge zu testen, und später mit dem Leitfaden unter http://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html eine Zugriffsrichtlinie erstellen.

Beispiel aufgerissenen Konfiguration:

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

Hier ist, wo in dem AWS-Webkonsole gehen:

CloudSearch access policies

Verwandte Themen