Please note that you should not integrate AmazonS3 interface in your business classes, instead wrap it in a thin interface, so that if you decide to change the 'back-end storage' you can easily change it.
Now note that the actual uploading and the tests that are done are part of integration testing and not unit testing.
Here if you wrap the S3 API in a very thin class, you will mock that class for unit testing of your business classes, and you will use the real implementation for integration testing.
So, if you have decided, your business classes to take directly the AmazonS3 interface, then for unit testing you have to mock that one.
The actual exploratory testing (learning and verifying) if and how amazon s3 works is what you actually do in separate experimental setup.