Using Amazon s3 boto library, how can I get the URL of a saved key?

S-K' picture S-K' · Apr 22, 2013 · Viewed 44k times · Source

I am saving a key to a bucket with:

    key = bucket.new_key(fileName)
    key.set_contents_from_string(base64.b64decode(data))
    key.set_metadata('Content-Type', 'image/jpeg')
    key.set_acl('public-read')

After the save is successful, how can I access the URL of the newly created file?

Answer

garnaat picture garnaat · Apr 23, 2013

If the key is publicly readable (as shown above) you can use Key.generate_url:

url = key.generate_url(expires_in=0, query_auth=False)

If the key is private and you want to generate an expiring URL to share the content with someone who does not have direct access you could do:

url = key.generate_url(expires_in=300)

where expires is the number of seconds before the URL expires. These will produce HTTPS url's. If you prefer an HTTP url, use this:

url = key.generate_url(expires_in=0, query_auth=False, force_http=True)