Amazon Simple Storage Service (Amazon S3)

Amazon S3 是一种面向 Internet 的存储服务。该服务旨在降低开发人员进行网络规模计算的难度。

Amazon S3 提供一个简明的 Web 服务界面,用户可通过它随时在 Web 上的任何位置存储和检索的任意大小的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和性价比的基础设施,而 Amazon 正是使用此种基础设施来运行其全球的网站网络的。该服务旨让扩展带来的优势得以最大化,并将这种优势传递给开发人员。
【以上介绍引自aws官方介绍:http://aws.amazon.com/cn/s3/】
【Amazon Simple Storage Service (Amazon S3)】 简单来说,s3就是一种存储服务,动态为客户提供所需的存储空间,用户通过注册aws账户便可以拥有自己的s3,但是会根据其使用的存储容量适当收费。s3中包含的基本单位是bucket,可以叫作“桶”。反正不都是把东西往里面“砸”么~吼吼。一般而言一个用户最多可以拥有100个bucket("Each AWS account can own up to 100 buckets at a time.")。但是每个bucket里面可以创建n个文件夹(在java里面bucket里面的所有文件都被定义为“object”)。
从s3上存取文件方法很多,可以登录控制台进行存取,或者干脆在本地通过命令行输入进行存储(该方法需要到官网上下载相应的command line tools:http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/Welcome.html),当然除此之外也可以通过编程来实现上述功能,以Java为例进行下面讲解:
1.首先去官网下载sdk:http://aws.amazon.com/cn/sdkforjava/
2.将sdk里面的jar包全部导入java项目中(这样做其实是有点偷懒了,事实上很多jar包在这里是不需要的)
3.开始编程实现功能:

package testS3;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.Region;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectSummary;




public class TestS3_Put_Get {

public static void main(String[] args) throws IOException {
//get IAM
AWSCredentials myCredentials = new BasicAWSCredentials(yourKey,yourSecret ); //输入你的key和secret,你得去“我的帐户”里找
AmazonS3Client s3 = new AmazonS3Client(myCredentials);

//创建bucket,存入obejct
s3.createBucket("mybuckethaha", Region.US_West_2); //bucket名和s3所在地域
s3.putObject("mybuckethaha", "docs/tt.txt", new File("d:/data1.txt")); //上传一个txt文件
System.out.println("finished!");

//上传完毕
//现在获取bucket和object
List bls=s3.listBuckets();
for(Bucket bl:bls){
System.out.println(bl.getName()+":");
ObjectListing ols=s3.listObjects(bl.getName());
List osls=ols.getObjectSummaries();
for(S3ObjectSummary osl:osls){
System.out.println("-\t"+osl.getKey());
if(osl.getKey().contains(".txt")){
System.out.println("print: "+osl.getKey());
S3Object s3o=s3.getObject(new GetObjectRequest(bl.getName(),osl.getKey()));
BufferedReader reader = new BufferedReader(new InputStreamReader(s3o.getObjectContent(),"utf-8"));
String s="";
while((s=reader.readLine())!=null){
System.out.println(s);
}
reader.close();
}
}
}
}
}
简单吧,哈哈,改天再发表ec2是怎么实现的,还有auto scaling等等~~~

    推荐阅读