Using Amazon s3 boto library, how can I get the URL of a saved key?
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)
import botofrom boto.s3.connection import S3Connectionconn = S3Connection('AWS_ACCESS_KEY', 'AWS_SECRET_KEY')secure_https_url = 'https://{host}/{bucket}/{key}'.format( host=conn.server_name(), bucket='name-of-bucket', key='name_of_key')http_url = 'http://{bucket}.{host}/{key}'.format( host=conn.server_name(), bucket='name-of-bucket', key='name_of_key')
That's how I did it in boto 2.23.0 for a public URL. I couldn't get the expires_in=None argument to work.
Note that for HTTPS you can't use a subdomain.