2015-11-05 4 views
16

Ich habe einen Eimer in S3 und ich versuche, die URL des Bildes, das dort ist zu ziehen.Wie URL von Boto3 in Amazon Web Services generieren

Ich benutze Boto3 und Boto3 scheint keine implementierte URL-Methode zu haben.

Sie haben einen Kern Methode, die URL wie diese erzeugt,

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

Eines, was ich zu tun gezwungen bin, ich habe die Parameter senden zusammen mit jedem Request-Session-Objekt verwenden. Und das obige Verfahren erlaubt mir nicht, die Session-Variablen zu setzen (dh .. aws Credentials)

Der nächstgelegene ich bekommen kann, ist dies

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"] 

Das bin ich S3 Objekt amazon bekommt, die ein Objekt namens

botocore.response.StreamingBody object at 0x7ffaff8cef50 

Kann ich eine URL des Bildes auf diese Weise erhalten.

helfen freundlicher Prabhakar S

+1

Check out [dieses Problem Thema] (https://github.com/boto/boto3/issues/110) auf der boto3 github für Session, Import boto3.session und erstellen. – Monkpit

+0

Monkpit, das hatte ich schon ausprobiert, das einzige was mit dieser Methode ist, kann ich Session-Variablen in den Parametern nicht setzen. Dies generiert URL, aber es sucht nicht nach Sitzungsvariablen, die ich im Code gebe. –

+1

Sie können diese Parameter festlegen, wenn Sie den [boto3-Client] erstellen (http://boto3.readthedocs.org/en/latest/reference/core/session.html#boto3.session.Session.client) –

Antwort

39

Able Ergebnisse zu erhalten und hatte keinerlei Probleme in der signierten URL zu bekommen. verwendete ich die Standardsitzung seit meinem aws creds lokal gespeichert wurden in „~/.aws/Credentials“ Datei und mein Standard-Region ist nach Bedarf ~/.aws/config

import boto3 
s3Client = boto3.client('s3') 
s3Client.generate_presigned_url('get_object', Params = {'Bucket': 'www.mybucket.com', 'Key': 'hello.txt'}, ExpiresIn = 100) 

gesetzt Wenn Sie params übergeben müssen benutzerdefinierte Sitzung

import boto3.session 
session = boto3.session.Session(region_name='eu-central-1') 
s3Client = session.client('s3')