Distributing Objects with BitTorrent

S3 provides a distribution service that allows you to provide content to a large number of people over the Web at low cost. However, if you are distributing a large amount of content to many people, the BitTorrent protocol can provide a much more efficient and cost-effective means of delivery than the normal web server approach. When you distribute data via BitTorrent, all the people downloading your content will share the data among one an other, which makes the downloads faster and saves you some money in data-transfer fees.

Objects stored in S3 can be distributed with the BitTorrent protocol very easily. To use this protocol, you provide a torrent file to the BitTorrent client applications that will perform the download. Every object in S3 has a torrent file associated with it that is available through a GET request that specifies the object in the URI and includes the request parameter torrent. The service replies to these requests with an HTTP 200 response message containing a torrent file.

Here is a URI that will return the torrent file associated with an S3 object:

http://s3.amazonaws.com/my-bucket/WebPage.html?torrent

Warning

Objects must be publicly accessible to be made available using BitTorrent, because BitTorrent clients cannot authenticate themselves to S3. If you use a torrent file for a nonpublic object, the client program will not complain that the item is unavailable, but it will not be able to download any data.

Example 3-21 defines ...

Get Programming Amazon Web Services now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.