This is the most basic, featureless implementation possible as it only PUTs an object to S3. But it handles the messy process of creating the signature for an S3 request.
Most of the code was borrowed from ASIHTTPRequest.
AFS3Client is available under the MIT license. See the LICENSE file for more info.