Python Boto3: не удалось получить файл s3 - PullRequest
0 голосов
/ 11 декабря 2019

Заранее спасибо. Я пытаюсь получить файл amazon s3 после загрузки. Но возникает ошибка клиента:

*** botocore.exceptions.ClientError: Произошла ошибка (404) при вызове операции HeadObject: не найдено

Мой код:

filename = secure_filename(file.filename)
s3 = boto3.resource('s3')
s3_bucket = current_app.config['S3_BUCKET']
s3_dir = current_app.config['S3_DIR']
client = boto3.client(
    's3',
    aws_access_key_id=current_app.config['AWS_ACCESS_KEY'],
    aws_secret_access_key=current_app.config['AWS_SECRET_ACCESS'],
    region_name='us-west-1',
)

response = client.put_object(
    ACL='public-read',
    Bucket=s3_bucket,
    Key=f'{s3_dir}/{filename}',
    Body = io.BufferedReader(file).read(),
)

## response
## {'ResponseMetadata': {'RequestId': 'XXXXX', 'HostId': 'XXXXXXX', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': 'XXXXXXXX', 'x-amz-request-id': '19B2124B56C007AA', 'date': 'Wed, 11 Dec 2019 06:38:48 GMT', 'etag': '"XXXXXXXXXXXX"', 'content-length': '0', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'ETag': '"XXXXXXXXXXX"'}

image_file = s3.meta.client.download_file(s3_bucket, filename, f'{s3_dir}/{filename}')
# Client error occurs

Я прошел с download_file .

1 Ответ

0 голосов
/ 11 декабря 2019

Я настроил url file напрямую.

добавлено: app / config.py

S3_URL = 'https://xxxxxxxxx.s3-us-west-1.amazonaws.com/uploads/'

из:

image_file = s3.meta.client.download_file(s3_bucket, filename, f'{s3_dir}/{filename}')

до:

image_url = s3_url + filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...