I wrote two detailed blog posts comparing Windows Azure Blob Storage and Amazon Simple Storage Service (S3). You can read those blog posts here: https://gauravmantri.com/2012/05/09/comparing-windows-azure-blob-storage-and-amazon-simple-storage-service-s3part-i/ and https://gauravmantri.com/2012/05/11/comparing-windows-azure-blob-storage-and-amazon-simple-storage-service-s3part-ii/. This blog post summarizes those posts.
Like the other posts, we’re going to refer Windows Azure Blob Storage as WABS and Amazon Simple Storage Service as AS3 in the rest of this blog post for the sake of brevity.
Following table provides a comparison summary of features in WABS and AS3.
WABS | AS3 | |
Current service version | 2011-08-18 | 2006-03-01 |
Storage limit | Up to 100 TB | Unlimited |
File system in the cloud | Yes | Yes |
Ability to ship disks for importing/exporting huge amount of data | No | Yes |
Protocols supported | HTTP / HTTPS | HTTP / HTTPS / BitTorrent |
Ability to charge your customers for the data they consume | No | Yes |
Support for server-side encryption | No | Yes |
Support for reduced redundancy storage | No | Yes |
Hierarchy level supported | 2 | 2 |
Blob Containers and Buckets | ||
Ability to create blob containers/buckets | Yes | Yes |
Number of blob containers/buckets | Unlimited | Unlimited |
Min./Max. length for a blob container/bucket name | 3/63 | 3/63 |
Case sensitivity for a blob container/bucket name | Lower case | Lower case |
Valid characters in a blob container/bucket name | Alphanumeric, and Dash (-) | Alphanumeric, Dash (-) and Period (.) |
Supports virtual hosting | No | Yes |
Supports path-style hosting | Yes | Yes |
Ability to set ACL at the time of creation | Yes | Yes |
Default blob container/bucket ACL | Private | Private |
Ability to specify custom metadata on a blob container/bucket | Yes | No |
Ability to list blob containers/buckets | Yes | Yes |
Maximum number of blob containers/buckets returned per call | 5000 | Not specified |
Support filtering by prefix to fetch partial list of blob containers/buckets | Yes | Yes |
Ability to delete blob containers/buckets | Yes | Yes |
Blob container/bucket must be empty before deletion | No | Yes |
Ability to list blobs/objects | Yes | Yes |
Maximum number of blobs/objects returned per call | 5000 | 1000 |
Ability to list less than maximum specified above | Yes | Yes |
Support for delimiter to create an illusion of folder hierarchy | Yes | Yes |
Support filtering by prefix to fetch partial list of blobs/objects | Yes | Yes |
Ability to fetch a list of versioned blobs/objects | Yes | Yes |
Ability to fetch a list of uncommitted blobs/objects | Yes | Yes |
Ability to log requests made against blob containers/buckets | Yes | Yes |
Ability to configure request logging for individual blob containers/buckets | No | Yes |
Ability to fetch logging configuration for requests made against blob containers/buckets | Yes | Yes |
Ability to set ACL on a blob container/bucket | Yes | Yes |
Possible ACL values | Container, Blob, Private | READ, WRITE, READ_ACP, WRITE_ACP, FULL_CONTROL |
Ability to different ACL values for different users | No | Yes |
Ability to set custom metadata on a blob container/bucket | Yes | No |
Ability to get custom metadata for a blob container/bucket | Yes | No |
Supports versioning on objects | Yes | Yes |
Once enabled, is versioning managed by the system | No | Yes |
Ability to configure versioning on a blob container/bucket | No | Yes |
Ability to get versioning configuration on a blob container/bucket | No | Yes |
Can content in a blob container/bucket expire automatically after a certain period of time | No | Yes |
Ability to configure automatic content expiration (lifecycle) on a blob container/bucket | No | Yes |
Ability to get lifecycle configuration on a blob container/bucket | No | Yes |
Ability to delete lifecycle configuration on a blob container/bucket | No | Yes |
Ability to configure policies on a blob container/bucket to prevent unauthorized access | No | Yes |
Ability to get blob container/bucket policy | No | Yes |
Ability to delete blob container/bucket policy | No | Yes |
Ability to receive notification on an event that has happened on a blob container/bucket | No | Yes |
Ability to configure event notification receipt for an event that has happened on a blob container/bucket | No | Yes |
Ability to get event notification configuration | No | Yes |
Can another user pay for downloading from a blob container/bucket | No | Yes |
Ability to configure who pays for downloading content from a blob container/bucket (request payment) | No | Yes |
Ability to get request payment configuration | No | Yes |
Ability to host static websites in a blob container/bucket with support for default document and error documents | No | Yes |
Ability to configure a static website in a blob container/bucket with support for default document and error documents | No | Yes |
Ability to fetch static website configuration hosted in a blob container/bucket | No | Yes |
Ability to delete static website configuration hosted in a blob container/bucket | No | Yes |
Blobs and Objects | ||
Maximum size of a blob/object | 200 GB / 1 TB | 5 TB |
Types of blob/object | Block/Page | – |
Ability to upload blobs/objects | Yes | Yes |
Maximum size of blob/object which can be uploaded without splitting in chunks | 64 MB | No Limit |
Ability to upload blobs/objects in chunks | Yes | Yes |
Maximum number of chunks/upload | 50000 | 10000 |
Minimum chunk size | N/A | 5 MB |
Ability to set metadata at the time of upload | Yes | Yes |
Ability to set ACL at the time of upload | N/A | Yes |
Ability to specify reduced redundancy storage at the time of creation | N/A | Yes |
Ability to perform conditional uploads | Yes | No |
Ability to upload blobs/objects using HTML forms post | No | Yes |
Ability to download blobs/objects | Yes | Yes |
Ability to download blobs/objects in chunks | Yes | Yes |
Ability to override response headers while downloading blobs/objects | No | Yes |
Ability to download and distribute blobs/objects through torrent | No | Yes |
Ability to get ACL for a blob/object | No | Yes |
Ability to set ACL for a blob/object | No | Yes |
Ability to get properties for a blob/object | Yes | Yes |
Ability to set properties for a blob/object | Yes | No |
Ability to get custom metadata for a blob/object | Yes | Yes |
Ability to set custom metadata for a blob/object | Yes | No |
Ability to delete blob/object | Yes | Yes |
Support for Multi Factor Authentication (MFA) delete | No | Yes |
Support for conditional deletes | Yes | No |
Ability to delete multiple blobs/objects in a single request | No | Yes |
Ability to copy blobs/objects | Yes | Yes |
Support for conditional copy | Yes | Yes |
Ability to take a snapshot (read-only copy) of a blob/object | Yes | No |
Ability to acquire an exclusive lock on a blob/object | Yes | No |
I hope you will find this comparison useful.