Now that you can upload and download files to your buckets, you may run into a case where you need to copy your objects between buckets. You might be migrating items from an older bucket to a newer bucket, or you might be backing something up. Either way, it’s a relatively straightforward process using the resource interface.
Moving and Deleting Objects
00:00 Now that you can upload and download files to your buckets, you may run into a case where you need to copy your objects between buckets. You might be migrating items from an older bucket to a newer bucket, or you may be backing something up. Either way, it’s a relatively straightforward process using the resource interface.
Go ahead and define a new function called
copy_to_bucket(). You can pass your
to_bucket and the
Make a new dictionary called
and set this equal to a
'Bucket', which is going to be the
from_bucket, and a
'Key', which is the
file_name. And once you have that, you can take your
s3_connection, call an
.Object() off of that, and this new
Object is going to be in the new bucket and it will have the same filename, and then you’ll just copy from the
01:17 So if you look at this, what you’re really doing is creating a new object that’s in the new bucket, and then copying the file from the old object into the new one.
All right, open up a terminal and we can try this out. I’m going to open up Python, first
import boto3, and then
from boto3_guide, I’m going to import
copy_to_bucket. And here I’m going to need some names, so
first_bucket_name, set that equal to
01:57 the first bucket. And, of course, I copied too much and got the newline character, so let’s just try that again.
And this time, just the name. I’m going to need the
and I’ll make a new resource interface just called
s3_resource, set that equal to
boto3.resource('s3'). And if all that’s correct, you should be able to call
copy_to_bucket(), and you’re going to pass in that
file_name. All right, let’s run that and see what happens. All right! No errors, so that copied successfully. Now that you’ve copied that file to the second bucket, let’s go ahead and delete it from the first bucket.
You’re going to go ahead and create a new object from the resource interface, which contains—if you may have guessed—a
.delete() method. So, from this interface, go
s3_resource, define a new
Object, and let’s go ahead and put the
first_bucket_name in there and the
file_name. And now that you’ve defined this
Object instance, you can just call
.delete(), just like that.
Now if you look, this gave a little bit more of a readout, and if you look in here, there’s a number of things relating to that
.delete() operation, but the big thing you can take away is that you got a
204 response code, which just means that this was a successful request and there’s nothing more for the server to send to us. Which makes sense, because you just deleted something. All right!
04:20 That pretty much wraps up the core functionality of working with S3 and Boto3, as you can now create buckets, upload files to them, move those files, download them, and delete them. In the next few videos, we’re going to take a look at some advanced S3 features and talk about how they can help your project out. Thanks for watching.
Become a Member to join the conversation.