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