[java] Maven을 사용하여 AWS S3와의 연동 개발하기

AWS S3는 클라우드 기반의 객체 스토리지 서비스로 자주 사용됩니다. 이번 튜토리얼에서는 Maven을 이용하여 Java 프로젝트에서 AWS S3와의 연동을 개발하는 방법을 알아보겠습니다.

1. 프로젝트 세팅

먼저, Maven을 이용하여 Java 프로젝트를 생성합니다. 프로젝트의 pom.xml 파일에 AWS SDK for Java를 추가합니다. AWS SDK for Java는 S3와의 연동을 지원하는 라이브러리입니다. 아래는 pom.xml 파일의 일부입니다.

<dependencies>
  <dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId>
    <version>2.17.34</version>
  </dependency>
</dependencies>

2. AWS S3 인증 설정

다음으로, AWS S3에 접근하기 위해 필요한 인증 정보를 설정해야 합니다. AWS S3는 access key와 secret key를 제공하는 IAM 사용자를 생성해야 합니다. 생성한 IAM 사용자의 access key와 secret key를 사용하여 AWS S3 클라이언트를 초기화할 수 있습니다.

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;

public class S3ClientFactory {
  public S3Client createS3Client() {
    String accessKey = "your-access-key";
    String secretKey = "your-secret-key";
    String region = "your-region";

    AwsBasicCredentials credentials = AwsBasicCredentials.create(accessKey, secretKey);
    return S3Client.builder()
            .region(Region.of(region))
            .credentialsProvider(StaticCredentialsProvider.create(credentials))
            .build();
  }
}

위의 코드에서 “your-access-key”, “your-secret-key”, “your-region” 부분을 자신의 AWS S3 계정 정보로 대체해주어야 합니다.

3. 파일 업로드 및 다운로드

이제 AWS S3에 파일을 업로드하고 다운로드하는 예제를 작성해보겠습니다.

파일 업로드

import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.PutObjectResponse;

public class S3FileUploadExample {
  public void uploadFile(S3Client s3Client, String bucketName, String key, File file) {
    try {
      PutObjectResponse response = s3Client.putObject(PutObjectRequest.builder()
              .bucket(bucketName)
              .key(key)
              .build(), file);
      System.out.println("File uploaded successfully. ETag: " + response.eTag());
    } catch (S3Exception e) {
      System.err.println(e.awsErrorDetails().errorMessage());
    }
  }
}

파일 다운로드

import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.GetObjectResponse;

public class S3FileDownloadExample {
  public void downloadFile(S3Client s3Client, String bucketName, String key, File outputFile) {
    try (GetObjectResponse response = s3Client.getObject(GetObjectRequest.builder()
            .bucket(bucketName)
            .key(key)
            .build(), outputFile)) {
      System.out.println("File downloaded successfully.");
    } catch (S3Exception | IOException e) {
      System.err.println(e.awsErrorDetails().errorMessage());
    }
  }
}

참고 자료

이제 여러분은 Maven을 사용하여 Java 프로젝트에서 AWS S3와의 연동을 개발할 수 있는 방법을 알게 되었습니다. AWS SDK for Java의 다양한 기능을 활용하여 S3와의 파일 업로드 및 다운로드 작업을 자유롭게 수행할 수 있습니다.