Amazon Simple Storage Service (Amazon S3)

Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施。

Amazon S3的简单操作:

开发指南

一、创建请求

1. 使用 AWS 账户或 IAM 用户凭证进行请求

为 AWS 开发工具包配置凭证的最简单方法是使用 AWS 凭证文件,AWS 开发工具包会寻找您的本地 AWS 凭证文件。如果您使用 AWS Command Line Interface (AWS CLI),那么您可能已经配置了本地 AWS 凭证文件。否则,请按照以下步骤设置凭证文件:

打开 IAM 控制台 -> 创建新 IAM 用户并赋予权限-> 下载csv -> 在本地计算机的主目录/.aws下创建credentials空文件->将csv文件内容复制到credentials文件中

[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

AWS SDK for Java  --  要使用 AWS 账户或 IAM 用户凭证向 Amazon S3 发出经身份验证的请求,请执行以下操作:

  • 使用 AmazonS3ClientBuilder 类创建 AmazonS3Client 实例。

  • 执行 AmazonS3Client 方法之一,以向 Amazon S3 发送请求。客户端将通过您提供的凭证生成所需的签名并将其包含在请求中。您可以在不提供安全凭证的情况下创建 AmazonS3Client 客户端。使用此客户端发送的请求是匿名的请求,它们不带签名。如果为不是公开可用的资源发送了匿名请求,Amazon S3 返回错误。

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) import java.io.IOException;
import java.util.List; import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary; public class MakingRequests { public static void main(String[] args) throws IOException {
String clientRegion = "*** Client region ***";
String bucketName = "*** Bucket name ***"; try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build(); // Get a list of objects in the bucket, two at a time, and
// print the name and size of each object.
ListObjectsRequest listRequest = new ListObjectsRequest().withBucketName(bucketName).withMaxKeys(2);
ObjectListing objects = s3Client.listObjects(listRequest);
while(true) {
List<S3ObjectSummary> summaries = objects.getObjectSummaries();
for(S3ObjectSummary summary : summaries) {
System.out.printf("Object \"%s\" retrieved with size %d\n", summary.getKey(), summary.getSize());
}
if(objects.isTruncated()) {
objects = s3Client.listNextBatchOfObjects(objects);
}
else {
break;
}
}
}
catch(AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
}
catch(SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}

2. 使用 IAM 用户临时凭证进行请求

AWS 账户或 IAM 用户可以请求临时安全证书,然后使用它们向 Amazon S3 发送经身份验证的请求。

使用 IAM 用户临时证书进行请求 - AWS SDK for Java

二、存储桶

存储桶是 Amazon S3 中用于存储对象的容器。每个对象都储存在一个存储桶中。例如,如果名为 photos/puppy.jpg 的对象存储在 johnsmith 存储桶中,则可使用 URL http://johnsmith.s3.amazonaws.com/photos/puppy.jpg 对该对象进行寻址。存储桶有以下几种用途:组织最高等级的 Amazon S3 命名空间、识别负责存储和数据传输费用的账户、在访问控制中发挥作用以及用作使用率报告的汇总单位。

1. 将存储桶配置为申请方付款

通常,存储桶拥有者将支付与他们的存储桶相关联的所有 Amazon S3 存储和数据转移费用。但是,存储桶拥有者可以将存储桶配置为申请方付款存储桶。通常情况下,当您想共享数据,而又不会产生与访问数据等其他操作相关联的费用时,您可以将存储桶配置为申请方付款。将存储桶配置为申请方付款存储桶后,申请方必须在其请求中包含 x-amz-request-payer (在 POST、GET 和 HEAD 请求的标头中,或在 REST 请求中作为参数),以显示他们知道请求和数据下载将产生费用。但是,在以下条件下会对存储桶拥有者收取请求费用:

  • 申请方未在标头中 (GET、HEAD 或 POST) 包含参数 x-amz-request-payer,或未在请求中将其作为参数 (REST) (HTTP 代码 403)。
  • 请求身份验证失败 (HTTP 代码 403)。
  • 请求是匿名的 (HTTP 代码 403)。
  • 请求是 SOAP 请求。

1)控制台设置:在“Buckets”列表中单击存储桶名 -> 单击“Properties” -> 单击“Requester Pays” -> 选中 Enabled

2)API设置:使用 PUT 请求在指定存储桶上将 Payer 值设置为 Requester。您只能在存储桶级别上设置申请方付款;您不能为存储桶内的特定对象设置申请方付款。您可以随时将存储桶配置为 BucketOwner 或 Requester。但是,需要注意的是可能会出现一些短暂延迟 (大约数分钟),新配置值才会生效。

PUT ?requestPayment HTTP/1.1
Host: [BucketName].s3.amazonaws.com
Content-Length: 173
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS [Signature] <RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Payer>Requester</Payer>
</RequestPaymentConfiguration>

三、托管静态网站

AWS S3的更多相关文章

  1. AWS S3 CLI的权限bug

    使用AWS CLI在S3上创建了一个bucket,上传文件的时候报以下错误: A client error (AccessDenied) occurred when calling the Creat ...

  2. AWS S3使用小结

    使用场景一:储存网站的图片,并能被任何人访问 1. 创建一个bucket,名字与需要绑定的域名一致. 例如,根域名是mysite.com,希望把所有图片放在pic.mysite.com下面,访问的时候 ...

  3. AWS s3 python sdk code examples

    Yet another easy-to-understand, easy-to-use aws s3 python sdk code examples. github地址:https://github ...

  4. 【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件

    关键词:阿里双11技术十二讲直播丨雪人计划丨亚马逊AWS S3配置错误丨2018威胁预测丨MacOS漏洞丨智能风控平台MTEE3丨黑客窃取<权利的游戏>剧本|Android 8.1   本 ...

  5. AWS S3服务使用

    AWS S3是亚马逊的一种文件存储服务使用方便. 一.配置服务 public static class AWS_S3ClientInfo { private static readonly strin ...

  6. SQL Server Agent Job 中用Powershell将备份文件拷贝到AWS S3

    SQL Server 数据库备份后,如何再复制一份到AWS S3 上,步骤和需要注意的地方如下: 1. 首先在SQL Server 中创建一个Credential 2. 授权这个Credential ...

  7. AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹

    1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd  本地下载 ...

  8. Upload a file with $.ajax to AWS S3 with a pre-signed url

    转载自:https://gist.github.com/guumaster/9f18204aca2bd6c71a24 生成预签名的Demo文档:https://docs.aws.amazon.com/ ...

  9. storj白皮书v3最全面解读,Docker创始人的加入能否扳倒AWS S3

    Storj新发了白皮书v3,地址是:https://storj.io/storjv3.pdf. 这次白皮书一共有90页,看完还真要费不少时间.如果你没有时间看,可以看一下我这篇快速技术解读. 上次St ...

  10. aws s3文件上传设置accesskey、secretkey、sessiontoken

    背景: 最近跟进的项目会封装aws S3资源管理细节,对外提供获取文件上传凭证的API,业务方使用获取到的凭证信息直接请求aws进行文件上传.因此,测试过程需要验证S3文件上传的有效性.aws官网有提 ...

随机推荐

  1. windows关闭/开启休眠命令行

    C:\hiberfil.sys占用空间过大,可以考虑关闭休眠 powercfg -h off 重新开启 powercfg -h on

  2. 取得MapReduce的Thread Dump

    ====2016/5/20: 经过上级指示,为了MR性能调优,需要截取MR的服务器的线程堆栈(Thread Dump) 战友介绍的方法是这样的: ①.使用ps命令[ps -ef | grep java ...

  3. 01 A Counting DNA Nucleotides

    Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...

  4. 使用 ServiceStack 构建跨平台 Web 服务(转)

    出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Service ...

  5. CentOS7 安装Maven3

    下载安装文件 cd /root wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache- ...

  6. eclipse Subversion Native Library Not Available

    参考:http://blog.csdn.net/zp357252539/article/details/44880319 Subversion Native Library Not Available ...

  7. 深入理解java虚拟机(十四)正确利用 JVM 的方法内联

    在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法.选中一段代码,敲下这个组合,非常简单.Eclipse也用类似的快捷键,使用 Alt+Shift+M.我讨厌长的方法,提起这个下面这个方 ...

  8. crontab基本操作部分

    一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 service crond stop  ...

  9. C++/Java中继承关系引发的调用关系详解

    C++: 这里引用到了 http://blog.csdn.net/haoel/article/details/1948051/ 中的内容,还请提前阅读陈大神的这篇博客后在阅读本篇. 覆盖,实现多态的基 ...

  10. [LeetCode 题解]: Permutation Sequcence

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...