使用Amazon s3 boto库,如何获取保存的密钥的URL?

我用以下方法拯救了一把钥匙:

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') 

保存成功后,如何访问新创build的文件的URL?

如果密钥是公共可读的(如上所示),则可以使用Key.generate_url

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

如果密钥是私密的,而且您希望生成一个即将到期的URL,以便与无法直接访问的人共享内容,则可以执行以下操作:

 url = key.generate_url(expires_in=300) 

expires是URL到期前的秒数。 这些将产生HTTPSurl。 如果你喜欢HTTPurl,使用这个:

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

对于Boto3,你需要这样做:

 import boto3 s3 = boto3.client('s3') url = '{}/{}/{}'.format(s3.meta.endpoint_url, bucket, key) 
 import boto from boto.s3.connection import S3Connection conn = 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') 

这就是我为boto 2.23.0做了一个公共URL。 我无法得到expires_in =无参数工作。

请注意,对于HTTPS,您不能使用子域名。