J'ai un Bucket en s3 et j'essaie de tirer l'url de l'image qui s'y trouve.
J'utilise boto3 et boto3 ne semble pas avoir de méthode de génération d'URL implémentée.
Ils ont une méthode de base, qui génère une URL comme celle-ci,
import botocore.session
session = botocore.session.get_session()
client = session.create_client('s3')
presigned_url = client.generate_presigned_url(
'get_object', Params={'Bucket': self.bucket_name, 'Key': self.key})
Une chose que je suis obligé de faire est que je dois envoyer les paramètres avec chaque demande en utilisant un objet session. Et la méthode ci-dessus ne me permet pas de définir les variables de session (c'est-à-dire .. les informations d'identification aws)
Le plus proche que je peux obtenir est celui-ci
session = Session(aws_access_key_id='342342342342', aws_secret_access_key='3434234322', region_name='us-east-1')
s3 = session.resource('s3')
object = s3.Object('my-dev-bucket', 'amazonKeyString')
print object.get()["Body"]
Cela me donne un objet Amazon s3 qui est un objet appelé
botocore.response.StreamingBody object at 0x7ffaff8cef50
Puis-je obtenir une URL de l'image de cette façon.
Veuillez aider Prabhakar S
Capable d'obtenir des résultats et n'a rencontré aucun problème pour obtenir l'URL signée. J'ai utilisé la session par défaut car mes crédits aws étaient stockés localement dans le fichier "~/.aws/credentials" et ma région par défaut est définie selon les besoins ~/.aws/config
import boto3
s3Client = boto3.client('s3')
s3Client.generate_presigned_url('get_object', Params = {'Bucket': 'www.mybucket.com', 'Key': 'hello.txt'}, ExpiresIn = 100)
Si vous devez passer des paramètres pour Session, importez boto3.session et créez une session personnalisée
import boto3.session
session = boto3.session.Session(region_name='eu-central-1')
s3Client = session.client('s3')