web-dev-qa-db-fra.com

comment générer une URL à partir de boto3 dans les services Web Amazon

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

25

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