This introduction to Amazon S3 provides a high-level overview of this web service. After reading this section, you should understand the basics you need to work through the examples in this guide.
Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers.
Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives any developer access to the same highly scalable, reliable, fast, inexpensive data storage infrastructure that Amazon uses to run its own global network of web sites. The service aims to maximize benefits of scale and to pass those benefits on to developers.
Amazon S3 provides the following major features:
Features
Scalable—Amazon S3 can scale in terms of storage, request rate, and users to support an unlimited number of web-scale applications.
It uses scale as an advantage: Adding nodes to the system increases, not decreases, its availability, speed, throughput, capacity, and robustness.
Reliable—Store data durably.
There can be no single points of failure. All failures must be tolerated or repaired by the system without any downtime.
Fast—Amazon S3 must be fast enough to support high-performance applications.
Server-side latency must be insignificant relative to Internet latency. Any performance bottlenecks can be fixed by simply adding nodes to the system.
Inexpensive—Amazon S3 is built from inexpensive commodity hardware components.
As a result, frequent node failure is the norm and must not affect the overall system. It must be hardware-agnostic, so that savings can be captured as Amazon continues to drive down infrastructure costs.
Simple—Building highly scalable, reliable, fast, and inexpensive storage is difficult.
Doing so in a way that makes it easy to use for any application anywhere is more difficult. Amazon S3 must do both.
Flexible—Amazon S3 supports location constraints, which allow you to specify where to store data (e.g., EU) based on your organization's latency and other requirements.
This section describes key Amazon S3 concepts.
Objects are the fundamental entities stored in Amazon S3. Objects consist of object data and metadata and can be from 1 byte to 5 gigabytes in size. The data portion is opaque to Amazon S3. The metadata is a set of name-value pairs that describe the object. In addition, there are some standard HTTP metadata entries such as Content-Type. The developer can also specify custom metadata when the object is stored.
Objects are stored in buckets. The bucket provides a unique namespace for management of objects contained in the bucket. Each bucket you create is owned by you and is used for billing. You are charged storage fees for all objects stored in the bucket and bandwidth fees for all data read from and written to the bucket. There is no limit to the number of objects that you can store in a bucket. Since the namespace for bucket names is global, each developer is limited to owning 100 buckets at a time.
A key is the unique identifier for an object within a bucket. Every object in a bucket
has exactly one key. Because a combined bucket and key uniquely identify each object, you can
consider Amazon S3 a basic data map between "bucket + key" and the object itself. Every object in Amazon S3
can be uniquely addressed through the combination of the service endpoint, bucket name, and key.
For example, in http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl, "doc" is the
name of the bucket and "2006-03-01/AmazonS3.wsdl" is the key.
This guide walks you through the process of using Amazon S3. Through this tutorial, you will:
Create a bucket
Store data
Read data
Delete data
List objects