title: Key given by lambda S3 event cannot be used when containing non-ASCII characters
body: <p>I have a Python lambda script that shrinks images as they are uploaded to S3. When the uploaded filename contains non-ASCII characters (Hebrew in my case), I cannot get the object (Forbidden as if the file doesn't exist).</p>
  
  <p>Here's (some of) my code:</p>
  
  <pre><code>s3_client = boto3.client('s3')
  def handler(event, context):
      for record in event['Records']:
          bucket = record['s3']['bucket']['name']
          key = record['s3']['object']['key']
          s3_client.download_file(bucket, key, "/tmp/somefile")
  </code></pre>
  
  <p>This raises <code>An error occurred (403) when calling the HeadObject operation: Forbidden: ClientError</code>. I also see in the log that the key contains characters like <code>%D7%92</code>.</p>
  
  <p>Following the web I also tried to unquote the key according to some sources (<a href="http://blog.rackspace.com/the-devnull-s3-bucket-hacking-with-aws-lambda-and-python/" rel="nofollow">http://blog.rackspace.com/the-devnull-s3-bucket-hacking-with-aws-lambda-and-python/</a>) like so, with no luck:</p>
  
  <pre><code>key = urllib.unquote_plus(record['s3']['object']['key'])
  </code></pre>
  
  <p>Same error, although this time the log states that I'm trying to retrieve a key with characters like this: <code>×¤××§×¡×</code>.</p>
  
  <p>Note that this script is verified to work on English keys, and the tests were done on keys with no spaces.</p>