Search code examples
python-3.xamazon-web-servicesamazon-s3downloadboto3

How do I create a Presigned URL to download a file from an S3 Bucket using Boto3?


I have to download a file from my S3 bucket onto my server for some processing. The bucket does not support direct connections and has to use a Pre-Signed URL.


The Boto3 Docs talk about using a presigned URL to upload but do not mention the same for download.


Solution

  • import boto3
    
    s3_client = boto3.client('s3')
    
    BUCKET = 'my-bucket'
    OBJECT = 'foo.jpg'
    
    url = s3_client.generate_presigned_url(
        'get_object',
        Params={'Bucket': BUCKET, 'Key': OBJECT},
        ExpiresIn=300)
    
    print(url)
    

    For another example, see: Presigned URLs — Boto 3 documentation

    You can also generate a pre-signed URL using the AWS CLI:

    aws s3 presign s3://my-bucket/foo.jpg --expires-in 300
    

    See: presign — AWS CLI Command Reference