Ich verwende das AWS SDK für Python mit SimpleDB interagieren.Codierung in SimpleDB für Batch_Put_Attributes
client = boto3.client('sdb')
example = [
{'Name': 'test1', 'Attributes': [
{'Name': 'speaker', 'Value': 'DIEGO BASSANTE'}]},
{'Name': 'test2', 'Attributes': [
{'Name': 'speaker', 'Value': 'SERGIO JOSE'}]}]
response = client.batch_put_attributes(
DomainName='activities',
Items=example
)
Dieser Code funktioniert, aber wenn der Value
hat einen besonderen Charakter wie ñ, á, é, í, ó, ú dann habe ich einen Fehler:
botocore.exceptions.ClientError: An error occurred (SignatureDoesNotMatch) when calling the BatchPutAttributes operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
SDB suposes zu speichern die Daten als UTF-8 und ich habe auch versucht, das Feld AlternateValueEncoding
zu den Attributen wie für die Methode batch_delete_attributes
dokumentiert, aber immer noch kein Glück.
Ich dachte über die Codierung der Daten nach Base64 beim Senden an SDB und Decodierung beim Abrufen der Daten zurück, aber ich bin mir nicht sicher, dass das die richtige Antwort ist. Also was fehlt mir?
Python: 3.6.2 boto3: 1.4.5