[AWS] 버킷 폴더 복제

Dragon_Tack·2023년 11월 6일
0

버킷내 있는 객체들을 리스트업해서 복제하는 function을 만들어보자.

  async copyFolder(sourceFolder, destinationFolder) {
    const params = {
      Bucket: Bucket ,
      Prefix: sourceFolder,
    };
    try {
      const data = await this.awss3.listObjectsV2(params).promise();
      const copyPromises = [];
      for (const object of data.Contents) {
        const sourceKey = object.Key;
        const destinationKey = sourceKey.replace(
          sourceFolder,
          destinationFolder,
        );
        copyPromises.push(
          this.awss3
            .copyObject({
              CopySource: `/${process.env.AWS_BUCKET}/${sourceKey}`,
              Bucket: process.env.AWS_BUCKET,
              Key: destinationKey,
            })
            .promise(),
        );
      }
      if (copyPromises.length === 0) {
        return '복제할 데이터가 없음';
      }
      await Promise.all(copyPromises);
      console.log(
        `폴더 ${sourceFolder}를  ${destinationFolder}로 성공적으로 복제했습니다.`,
      );
    } catch (error) {
      console.error('폴더 복제 중 오류 발생:', error);
      throw error;
    }
  }

주의사항

AWS SDK를 올바르게 구성하고 사용하려면 필수적으로 AWS 자격증명을 설정해야 합니다.
이 코드는 특정 S3 버킷 내의 객체를 복사하기 위한 것입니다.
객체를 다른 버킷 또는 지역 간에 복사하려면 코드를 적절하게 수정해야 합니다.

이에 맞게 객체명도 변경해주면 복제 끝이지롱
참고문헌 : GPT와 함께

profile
고민의 흔적을 늘여놓는 공간

0개의 댓글