python – 如何在amazon web服务中从boto3生成url

我在s3中有一个Bucket,我试图拉出那里的图像的url.

我使用boto3和boto3似乎没有实现的生成url方法.

他们有一个核心的方法,生成这样的url,

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

我被迫做的一件事是,我必须使用会话对象发送参数以及每个请求.而且上面的方法不允许我设置会话变量(ie .. aws credentials)

这最接近我能得到的

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

这让我得到了一个名为“对象”的亚马逊s3对象

botocore.response.StreamingBody object at 0x7ffaff8cef50

我可以通过这种方式获得图像的URL.

请帮忙
Prabhakar S

能够获得结果,并且在获取已签名的网址时没有遇到任何问题.
我使用默认会话,因为我的aws信誉本地存储在“〜/ .aws / credentials”文件中,我的默认区域是根据需要设置〜/ .aws / config

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

如果您需要传递Session的参数,请导入boto3.session并创建自定义会话

import boto3.session
session = boto3.session.Session(region_name='eu-central-1')
s3Client = session.client('s3')
翻译自:https://stackoverflow.com/questions/33549254/how-to-generate-url-from-boto3-in-amazon-web-services

转载注明原文:python – 如何在amazon web服务中从boto3生成url