< groupId > org.apache.httpcomponents </ groupId > < artifactId > httpclient </ artifactId > < version > 4.5.6 </ version > </ dependency > < dependency > < groupId > com.amazonaws </ groupId > < artifactId > aws-java-sdk-s3 </ artifactId > < version > 1.11.347 </ version > </ dependency >

通过AWS SDK for Java下载某个对象

  • 当您通过AWS SDK for Java下载某个对象时,Amazon S3 将返回该对象的所有元数据以及从中读取该对象
    的内容的输入流。
  • 下面的例子通过三种方式从 Amazon S3 存储桶中检索对象:作为完整的对象、作为来自该对象的一系列字
    节以及作为包含被覆盖的响应标头值的完整对象。

最后附上官网自带的使用java连接S3的案例demo。

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.GetObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3Object;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-
public class AwsS3Demo {
    public static void main(String[] args) throws IOException {
        String clientRegion = "*** Client region ***";
        String bucketName = "*** Bucket name ***";
        String key = "*** Object key ***";
        S3Object fullObject = null, objectPortion = null, headerOverrideObject = null;
        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            // Get an object and print its contents.
            System.out.println("Downloading an object");
            fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
            System.out.println("Content-Type: " +  fullObject.getObjectMetadata().getContentType());
            System.out.println("Content: ");
            displayTextInputStream(fullObject.getObjectContent());
            // Get a range of bytes from an object and print the bytes.
            GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key).withRange(0,9);
            objectPortion = s3Client.getObject(rangeObjectRequest);
            System.out.println("Printing bytes retrieved.");
            displayTextInputStream(objectPortion.getObjectContent());
          // Get an entire object, overriding the specified response headers, and print the object's content.
            ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides()
                    .withCacheControl("No-cache")
                    .withContentDisposition("attachment; filename=example.txt");
            GetObjectRequest getObjectRequestHeaderOverride = new
                    GetObjectRequest(bucketName, key)
                    .withResponseHeaders(headerOverrides);
            headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride);
            displayTextInputStream(headerOverrideObject.getObjectContent());
        } 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();
        } finally {
            // To ensure that the network connection doesn't remain open, close any open input streams.
            if(fullObject != null) {
                fullObject.close();
            if(objectPortion != null) {
                objectPortion.close();
            if(headerOverrideObject != null) {
                headerOverrideObject.close();
     * @param input
     * @throws IOException
    private static void displayTextInputStream(InputStream input) throws IOException {
        // Read the text input stream one line at a time and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        System.out.println();

使用 AWS SDK for Java 上传对象

Example:

  • 以下示例将创建两个对象。第一个对象将一个文本字符串作为数据,第二对象是一个文件。
  • 该示例通过在对 AmazonS3Client.putObject() 的调用中直接指定存储桶名称、对象键和文本数据来创建第一个对象。该示例通过使用指定存储桶、对象键和文件路径的 PutObjectRequest 来创建第二个对象。PutObjectRequest 还指定 ContentType 标头和标题元数据。
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3- 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.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import java.io.File; import java.io.IOException; public class UploadObjectS3Demo { public static void main(String[] args) throws IOException { String clientRegion = "*** Client region ***"; String bucketName = "*** Bucket name ***"; String stringObjKeyName = "*** String object key name ***"; String fileObjKeyName = "*** File object key name ***"; String fileName = "*** Path to file to upload ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .build(); // Upload a text string as a new object. s3Client.putObject(bucketName, stringObjKeyName, "Uploaded String Object"); // Upload a file as a new object with ContentType and title specified. PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, new File(fileName)); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("plain/text"); metadata.addUserMetadata("x-amz-meta-title", "someTitle"); request.setMetadata(metadata); s3Client.putObject(request); } 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(); 使用 AWS SDK for Java 获取对象使用的maven包是 &lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt; ... &lt;dependency&gt; &lt;groupId&gt;com.amazonaws&lt;/groupId&gt; &lt;artifactId&gt;aws-java-sdk-bom&lt;/artifactId&gt; &lt;version&gt;${...
AWS Lambda是一种无服务器计算服务,您可以使用它来在事件发生时执行代码。例如,当有人上传文件到Amazon S3存储桶时,您可以使用Lambda函数自动将该文件转换为另一种文件格式。 要使用Lambda函数,需要执行以下步骤: 1. 创建Lambda函数:登录到AWS控制台,然后前往Lambda页面。在该页面上,您可以创建新的Lambda函数或使用现有的函数模板。 2. 编写代码:您可以使用任何支持的编程语言来编写Lambda函数代码。您可以在AWS Lambda控制台中直接编写代码,也可以使用AWS Cloud9或本地编辑器。 3. 配置函数:您需要为Lambda函数配置运行时、内存和超时设置。您还可以为函数指定角色,以便它可以访问其他AWS服务。 4. 测试函数:您可以在AWS Lambda控制台中测试Lambda函数,并使用模拟事件来测试代码的输出。 5. 部署函数:当您准备好将Lambda函数用于生产环境时,您可以将其部署到AWS环境中。 6. 设置触发器:您可以使用AWS服务或外
一定要坚持创作更多高质量博客哦, 小小红包, 以资鼓励, 更多创作活动请看: 新星计划2023: https://marketing.csdn.net/p/1738cda78d47b2ebb920916aab7c3584?utm_source=csdn_ai_ada_redpacket 新星计划2023: https://marketing.csdn.net/p/1738cda78d47b2ebb920916aab7c3584?utm_source=csdn_ai_ada_redpacket 上传ChatGPT/计算机论文等资源,瓜分¥5000元现金: https://blog.csdn.net/VIP_Assistant/article/details/130196121?utm_source=csdn_ai_ada_redpacket 新人首创任务挑战赛: https://marketing.csdn.net/p/90a06697f3eae83aabea1e150f5be8a5?utm_source=csdn_ai_ada_redpacket Microsoft Edge功能测评!: https://activity.csdn.net/creatActivity?id=10403?utm_source=csdn_ai_ada_redpacket 职场解惑讨论会: https://activity.csdn.net/creatActivity?id=10427?utm_source=csdn_ai_ada_redpacket 可持续能源技术真的能改变世界吗?: https://activity.csdn.net/creatActivity?id=10425?utm_source=csdn_ai_ada_redpacket 无效数据,你会怎么处理?: https://activity.csdn.net/creatActivity?id=10423?utm_source=csdn_ai_ada_redpacket 物联网技术正在如何影响我们的生活: https://activity.csdn.net/creatActivity?id=10421?utm_source=csdn_ai_ada_redpacket 生物识别技术能否成为应对安全挑战的绝佳选择?: https://activity.csdn.net/creatActivity?id=10411?utm_source=csdn_ai_ada_redpacket 应届生如何提高职场竞争力: https://activity.csdn.net/creatActivity?id=10409?utm_source=csdn_ai_ada_redpacket 讯飞星火大模型将超越chatgpt?: https://activity.csdn.net/creatActivity?id=10407?utm_source=csdn_ai_ada_redpacket 职场新人备忘录: https://activity.csdn.net/creatActivity?id=10405?utm_source=csdn_ai_ada_redpacket “裸奔”时代下该如何保护网络隐私: https://activity.csdn.net/creatActivity?id=10401?utm_source=csdn_ai_ada_redpacket VR vs AR:哪种技术更有潜力改变未来?: https://activity.csdn.net/creatActivity?id=10399?utm_source=csdn_ai_ada_redpacket 蓝桥杯备赛指南分享: https://activity.csdn.net/creatActivity?id=10317?utm_source=csdn_ai_ada_redpacket