Toms Code
Toms Code

Reputation: 1689

ValueError when downloading a file from an S3 bucket using boto3?

I am sucessfully downloading an image file to my local computer from my S3 bucket using the following:

import os
import boto3
import botocore

files = ['images/dog_picture.png']
bucket = 'animals'
s3 = boto3.resource('s3')

for file in files:
   s3.Bucket(bucket).download_file(file, os.path.basename(file))

However, when I try to specify the directory to which the image should be saved on my local machine as is done in the docs:

   s3.Bucket(bucket).download_file(file, os.path.basename(file), '/home/user/storage/new_image.png')

I get:

ValueError: Invalid extra_args key '/home/user/storage/new_image.png', must be one of: VersionId, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, RequestPayer

I must be doing something wrong but I'm following the example in the docs. Can someone help me specify a local directory?

Upvotes: 2

Views: 2698

Answers (1)

Ghonima
Ghonima

Reputation: 3082

Looking into the docs, you're providing an extra parameter

import boto3
s3 = boto3.resource('s3')
s3.Bucket('mybucket').download_file('hello.txt', '/tmp/hello.txt')

From the docs, hello.txt is the name of the object on the bucket and /tmp/hello.txt is the path on your device, so the correct way would be

s3.Bucket(bucket).download_file(file, '/home/user/storage/new_image.png')

Upvotes: 6

Related Questions