使用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,您不能使用子域名。