git-annex extends git's usual remotes with some special remotes, that are not git repositories. This way you can set up a remote using say, Amazon S3, and use git-annex to transfer files into the cloud.

First, export your Amazon AWS credentials:

# export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
# export AWS_SECRET_ACCESS_KEY="s3kr1t"

Now, create a gpg key, if you don't already have one. This will be used to encrypt everything stored in S3, for your privacy. Once you have a gpg key, run gpg --list-secret-keys to look up its key id, something like "2512E3C7"

Next, create the S3 remote, and describe it.

# git annex initremote cloud type=S3 chunk=1MiB keyid=2512E3C7
initremote cloud (encryption setup with gpg key C910D9222512E3C7) (checking bucket) (creating bucket in US) (gpg) ok
# git annex describe cloud "at Amazon's US datacenter"
describe cloud ok

The configuration for the S3 remote is stored in git. So to make another repository use the same S3 remote is easy:

# export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
# export AWS_SECRET_ACCESS_KEY="s3kr1t"
# git pull laptop
# git annex enableremote cloud
enableremote cloud (gpg) (checking bucket) ok

Notice that to enable an existing S3 remote, you have to provide the Amazon AWS credentials because they were not stored in the repository. (It is possible to configure git-annex to do that, but not the default.)

further reading

See S3 for details about configuring S3 remotes.

See public Amazon S3 remote for how to set up a Amazon S3 remote that can be used by the public, without them needing AWS credentials.

If you want to publish files to S3 so they can be accessed without using git-annex, see publishing your files to the public.