📜  aws lambda 上传文件到 s3 java (1)

📅  最后修改于: 2023-12-03 15:29:32.911000             🧑  作者: Mango

AWS Lambda 上传文件到 S3 Java

AWS Lambda 是服务于 Amazon Web Service (AWS) 的一款服务器-less 的计算服务,可以让您无需管理服务器,即可运行代码作出响应。 在该教程中,我们将介绍如何在 AWS Lambda 中使用 Java 上传文件到 Amazon S3 存储服务。

环境设置

在编写程序前需要完成 AWS 环境配置:

  1. 创建一个 AWS 帐号;
  2. 在 AWS 控制台创建 S3 存储桶,并在该存储桶中创建具有写入权限的 IAM 用户;
  3. 使用 AWS SDK for Java 或 AWS Toolkit for Eclipse 等向 Java项目添加 AWS 开发包。
代码实现
1. 引入依赖

pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.1046</version>
</dependency>
2. 实现上传方法

完成依赖后,我们可以通过以下代码实现上传方法。

package com.example.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.PutObjectResult;

import java.io.File;

public class UploadToS3Handler implements RequestHandler<File, String> {

    private static final String BUCKET_NAME = "your-bucket-name";
    private static final String S3_PREFIX = "uploads/";

    @Override
    public String handleRequest(File inputFile, Context context) {

        // 实例化 S3 客户端
        AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();

        // 设置文件上传路径
        String key = S3_PREFIX + inputFile.getName();

        // 上传文件到 S3 存储桶中
        PutObjectResult result = s3Client.putObject(
                new PutObjectRequest(BUCKET_NAME, key, inputFile));

        // 返回结果
        return result.getETag();

    }
}

以上代码段,我们实现了上传文件到 S3 存储桶的方法。

代码测试

完成代码实现后,我们可以通过 AWS Lambda 控制面板或使用 CLI 工具进行部署。部署完成后,我们可以调用 uploadToS3 方法进行测试。

aws lambda invoke --function-name <function_name> --payload fileb://input-file.txt output.json

输出结果如下:

{
    "Upload ETag": "\"d5ef2cd5f56881a8c9f75d83d98805d6\""
}

至此,我们完成了在 AWS Lambda 中使用 Java 上传文件到 S3 存储桶的过程。