loading...

Python code to copy all objects from one S3 bucket to another

sjehutch profile image scott hutchinson ・1 min read
import boto3

s3_resource = boto3.resource('s3')

new_bucket_name = "targetBucketName"
bucket_to_copy = "sourceBucketName"

for key in s3.list_objects(Bucket=bucket_to_copy)['Contents']:
    files = key['Key']
    copy_source = {'Bucket': "bucket_to_copy",'Key': files}
    s3_resource.meta.client.copy(copy_source, new_bucket_name, files)
    print(files)

Discussion

pic
Editor guide
Collapse
vssharma79 profile image
Venkatesh Sharma

I've copied above code and getting error for "s3.list_objects" in for loop, below error :
NameError: name 's3' is not defined

Collapse
kumundzhievmaxim profile image
Maksim Kumundzhiev

Probably the author forget to change:

s3 on s3_resource

E.g.:

import boto3

s3_resource = boto3.resource('s3')

new_bucket_name = "targetBucketName"
bucket_to_copy = "sourceBucketName"

for key in s3_resource.list_objects(Bucket=bucket_to_copy)['Contents']:
    files = key['Key']
    copy_source = {'Bucket': "bucket_to_copy",'Key': files}
    s3_resource.meta.client.copy(copy_source, new_bucket_name, files)
    print(files)