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

2024-06-06 15:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不得不做的一件事是,我必须使用session对象发送参数和每个请求。上面的方法不允许我设置会话变量(即。。aws证书)

我能得到的最接近的是这个

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

这得到了amazon s3对象,它是一个名为

botocore.response.StreamingBody object at 0x7ffaff8cef50

我可以用这种方式得到图片的url吗?


Tags: 方法keyselfclientawsurlgetobject
1条回答
网友
1楼 · 发布于 2024-06-06 15:25:46

能够获得结果,并且在获取签名的URL时没有遇到任何问题。 我使用了默认会话,因为我的aws cred存储在本地的“~/.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)

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

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

相关问题 更多 >