AWS S3 파일 저장 및 활용법

AWS S3: 클라우드 파일 저장 및 활용 가이드

AWS S3(Amazon Simple Storage Service)는 대량의 데이터를 안전하게 저장하고 관리할 수 있는 매우 유연한 클라우드 기반 스토리지 서비스입니다. 유저는 다양한 미디어 파일을 효율적으로 저장하고 필요할 때 쉽게 접근할 수 있습니다. 본 글에서는 AWS S3의 파일 저장 방법과 활용 방안에 대해 자세히 설명하겠습니다.

왜 AWS S3를 선택해야 할까?

특히 대규모의 미디어 파일을 관리해야 하는 프로젝트에서는 서버에 과도한 부하를 주지 않기 위해 클라우드 스토리지의 필요성이 커집니다. 로컬 서버 대신 AWS S3를 이용하면 무제한으로 확장할 수 있는 스토리지 공간과 빠른 데이터 전송이 가능해, 데이터 관리가 훨씬 수월해집니다.

AWS S3 버킷 생성하기

AWS S3를 사용하기 위해서는 먼저 버킷을 생성해야 합니다. 버킷은 S3에서 데이터를 저장하는 기본 단위로, 실제 파일들은 이 버킷 내에 저장됩니다.

  • AWS 관리 콘솔에 로그인합니다.
  • S3 서비스를 선택한 후, “버킷 만들기” 버튼을 클릭합니다.
  • 고유한 버킷 이름과 리전을 설정합니다. (예: 아시아 태평양 – 서울)
  • 퍼블릭 액세스 차단 설정을 활성화하여 버킷이 기본적으로 비공개 상태가 되도록 합니다.
  • 버킷을 생성한 후, 필요한 경우 권한을 수정하여 세부 설정을 조정할 수 있습니다.

AWS IAM 설정하기

버킷 내의 파일을 업로드하고 관리하기 위해서는 적절한 권한이 필요합니다. 이를 위해 AWS IAM(Identity and Access Management)을 설정해야 합니다. IAM을 통해 유저에게 접근 권한을 부여할 수 있으며, 특히 AmazonS3FullAccess 권한을 부여하는 것이 일반적입니다.

AWS S3에 파일 업로드하기

파일을 S3에 업로드하기 위해 필요한 코드를 작성해야 합니다. 예를 들어, Java Spring Boot 프레임워크를 사용하는 경우, 관련 라이브러리를 build.gradle 파일에 추가한 후, S3에 업로드할 수 있는 클래스를 작성해야 합니다.

Java 코드 예시


@Configuration
public class S3Config {
  @Value("${cloud.aws.credentials.access-key}")
  private String accessKey;
  @Value("${cloud.aws.credentials.secret-key}")
  private String secretKey;
  @Value("${cloud.aws.region.static}")
  private String region;
  @Bean
  public AmazonS3 amazonS3() {
    BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
    return AmazonS3ClientBuilder.standard()
        .withRegion(region)
        .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
        .build();
  }
}

이후 업로드할 파일을 선택하고, 해당 파일의 메타데이터를 설정한 다음 실제로 S3에 업로드하는 로직을 구현합니다. 이 과정에서는 중복된 파일 이름을 피하기 위해 UUID를 사용하여 파일 이름을 생성하는 것이 좋습니다.

파일 업로드 코드 예시


public URL upload(MultipartFile multipartFile, String dirName) {
  String fileName = createFileName(multipartFile.getOriginalFilename(), dirName);
  ...
  amazonS3.putObject(new PutObjectRequest(bucket, fileName, byteArrayInputStream, metadata));
  ...
}

업로드된 파일의 관리

파일을 성공적으로 업로드한 후에는 URL을 통해 해당 파일에 접근할 수 있습니다. 하지만 기본적으로 업로드한 파일은 비공개 상태이므로 퍼블릭 액세스 권한을 설정해야 외부에서 접근할 수 있습니다.

  • 퍼블릭 액세스 차단 설정 해제
  • 버킷 정책을 추가하여 필요한 접근을 허용합니다.

버킷 정책 예시


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

파일 삭제 기능 구현하기

필요하지 않은 파일은 S3에서 삭제할 수 있는 기능을 구현해야 합니다. 이때, 파일 URL을 분석하여 해당 파일의 고유 키를 추출한 후 삭제 요청을 진행합니다.


public void delete(String imageUrl) {
  String keyName = extractKeyName(imageUrl);
  amazonS3.deleteObject(bucket, keyName);
}

결론

AWS S3는 큰 용량의 파일을 안전하게 보관하고 관리할 수 있는 훌륭한 플랫폼입니다. 클라우드 스토리지의 이점을 활용하여 프로젝트의 데이터 관리를 효율적으로 진행할 수 있습니다. AWS S3를 통해 필요한 만큼의 데이터 저장 공간을 확보하고, 손쉽게 파일을 업로드 및 삭제하며, 안전하게 데이터를 관리하는 방법에 대해 이해하셨길 바랍니다.

이러한 방법론을 활용하여 여러분의 프로젝트에 AWS S3를 적극 활용해보시기 바랍니다!

자주 묻는 질문과 답변

AWS S3는 어떤 용도로 사용되나요?

AWS S3는 대량의 파일을 안전하게 저장하고 접근할 수 있는 클라우드 기반 스토리지 서비스입니다. 특히 미디어 파일을 효율적으로 관리하는 데 효과적입니다.

버킷을 생성하려면 어떻게 해야 하나요?

AWS 관리 콘솔에 로그인 후 S3 서비스를 선택하여 ‘버킷 만들기’ 버튼을 클릭하면, 간단한 설정으로 버킷을 생성할 수 있습니다.

AWS S3에 파일을 어떻게 업로드하나요?

파일을 업로드하려면, 적절한 코드 작성 후 업로드할 파일을 선택하고 메타데이터를 설정하면 됩니다. 로직 구현 시 고유한 파일 이름 생성이 중요합니다.

업로드한 파일에 접근하려면 어떻게 해야 하나요?

업로드한 파일은 기본적으로 비공개 상태입니다. 퍼블릭 액세스 권한을 설정하거나 버킷 정책을 추가하여 외부에서 접근할 수 있게 할 수 있습니다.

S3에서 파일을 삭제하는 방법은 무엇인가요?

삭제할 파일의 URL을 분석하여 고유 키를 추출한 후, 해당 키를 이용하여 S3에서 파일을 삭제할 수 있는 기능을 구현하면 됩니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤