I'm using the AWS SDK for python to interact with SimpleDB.
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
)
This code works, but if the Value has a special character like ñ, á, é, í, ó, ú then I get an error:
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 to store the data as UTF-8 and I also tried adding the field AlternateValueEncoding to the attributes as documented for the method batch_delete_attributes but still no luck.
Thought on encoding the data to base64 when sending to SDB and decoding when getting the data back, but I'm not sure that is the proper answer. So what am I missing?
python: 3.6.2 boto3: 1.4.5
Seems like it is a reported issue https://github.com/boto/boto3/issues/354
The problem is that the request sent to
sdbneeds the valuecharset=utf-8in the headerContent-TypeThe proposed solution worked for me, just to copy this snippet in my code