Как генерировать URL-адрес от boto3 в веб-сервисах amazon

У меня есть Bucket в s3, и я пытаюсь вытащить 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})

Одна вещь, которую я вынужден сделать, - это отправить параметры вместе с каждым запросом, используя объект сеанса. И этот метод не позволяет мне устанавливать переменные сеанса (то есть.. 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-адрес изображения таким образом.

Просьба помочь Прабхакар S

Ответ 1

Возможность получить результаты и не сталкивалась с какими-либо проблемами при получении подписанного URL-адреса. Я использовал сеанс по умолчанию, так как мои 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)

Если вам нужно передать параметры для сеанса, импортируйте boto3.session и создайте пользовательский сеанс

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