web-dev-qa-db-ja.com

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

保存が成功した後、新しく作成されたファイルのURLにアクセスするにはどうすればよいですか?

52
S-K'

キーが公開されている場合(上記を参照)、 Key.generate_url

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

キーが非公開で、有効期限切れのURLを生成して、直接アクセスできない人とコンテンツを共有する場合は、次のようにします。

url = key.generate_url(expires_in=300)

ここで、expiresは、URLが期限切れになるまでの秒数です。これらはHTTPS URLを生成します。 HTTP URLを好む場合、これを使用してください:

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

Boto3の場合、次の方法で行う必要があります...

import boto3

s3 = boto3.client('s3')
url = '{}/{}/{}'.format(s3.meta.endpoint_url, bucket, key)
29
treecoder
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')

これが、ボト2.23.0でパブリックURLを作成した方法です。 expires_in = None引数を取得できませんでした。

HTTPSの場合、サブドメインを使用できないことに注意してください。

8
kumar303