[typescript] 타입스크립트와 AWS S3 스토리지 클래스 활용하기

이번에는 타입스크립트를 사용하여 AWS S3 스토리지 클래스를 활용하는 방법에 대해 알아보겠습니다.

1. 타입스크립트란?

타입스크립트는 Microsoft에서 개발한 오픈소스 프로그래밍 언어로, 자바스크립트에 엄격한 타입 체크를 추가하여 코드의 가독성을 높이고 디버깅을 원활하게 할 수 있습니다.

2. AWS S3 스토리지 클래스 만들기

우선, 타입스크립트로 AWS S3 스토리지를 다루는 클래스를 만들어보겠습니다.

import AWS from 'aws-sdk';

class S3Storage {
  private s3: AWS.S3;

  constructor() {
    this.s3 = new AWS.S3();
  }

  uploadFile(bucketName: string, fileKey: string, fileContent: Buffer) {
    const params = {
      Bucket: bucketName,
      Key: fileKey,
      Body: fileContent,
    };
    return this.s3.upload(params).promise();
  }

  downloadFile(bucketName: string, fileKey: string) {
    const params = {
      Bucket: bucketName,
      Key: fileKey,
    };
    return this.s3.getObject(params).promise();
  }
}

위 코드는 AWS SDK를 사용하여 S3에 파일을 업로드하고 다운로드하는 기능을 갖춘 S3Storage 클래스를 구현한 것입니다.

3. 타입스크립트로 S3 스토리지 클래스 활용하기

이제 이 클래스를 활용해 실제로 파일을 업로드하고 다운로드해보겠습니다.

const storage = new S3Storage();

// 파일 업로드
const bucketName = 'my-bucket';
const fileKey = 'example.txt';
const fileContent = Buffer.from('Hello, AWS S3!');
storage.uploadFile(bucketName, fileKey, fileContent)
  .then(() => {
    console.log('File uploaded successfully');
  })
  .catch((err) => {
    console.error('Error uploading file:', err);
  });

// 파일 다운로드
storage.downloadFile(bucketName, fileKey)
  .then((data) => {
    console.log('File content:', data.Body.toString('utf-8'));
  })
  .catch((err) => {
    console.error('Error downloading file:', err);
  });

위 코드에서 S3Storage 클래스를 생성하고, uploadFile 메서드로 파일을 업로드하고, downloadFile 메서드로 파일을 다운로드하는 예제를 보여주고 있습니다.

타입스크립트를 사용하여 AWS S3 스토리지 클래스를 활용하는 방법에 대해 간략하게 살펴봤습니다. 이를 통해 타입스크립트로 AWS 리소스를 다루는 데 도움이 되기를 바랍니다.

References