J'économise une clé dans un seau avec:
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')
Une fois l'enregistrement réussi, comment puis-je accéder à l'URL du fichier nouvellement créé?
Si la clé est lisible publiquement (comme illustré ci-dessus), vous pouvez utiliser Key.generate_url
:
url = key.generate_url(expires_in=0, query_auth=False)
Si la clé est privée et que vous souhaitez générer une URL expirant pour partager le contenu avec quelqu'un qui n'a pas d'accès direct, vous pouvez faire:
url = key.generate_url(expires_in=300)
où expires
est le nombre de secondes avant l'expiration de l'URL. Ceux-ci produiront des URL HTTPS. Si vous préférez une URL HTTP, utilisez ceci:
url = key.generate_url(expires_in=0, query_auth=False, force_http=True)
Pour Boto3, vous devez le faire de la manière suivante ...
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')
C'est comme ça que je l'ai fait dans boto 2.23.0 pour une URL publique. Je n'ai pas pu faire fonctionner l'argument expires_in = None.
Notez que pour HTTPS, vous ne pouvez pas utiliser de sous-domaine.