Amazon Simple Storage Service (Amazon S3)

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

Amazon S3的简单操作:

AWS 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();
        }
    }
}
View Code

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

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

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

相关文章: