A. Question

AWS S3 데이터를 S3TransferManagerDownloadObjectUploadObject를 사용해서 마이그레이션하는 방법은?

B. Answer

1. Objects를 S3에서 인스턴스로 다운로드

private void downloadFile(String key, Path destinationPath) throws IOException {
    GetObjectRequest getObjectRequest = GetObjectRequest.builder()
            .bucket(sourceBucket)
            .key(key)
            .build();

    Path filePath = destinationPath.resolve(key);

    Files.createDirectories(filePath.getParent());
    s3Client.getObject(getObjectRequest, filePath);
}

2. 인스턴스 사이의 파일 이동

2.1. 소스 인스턴스에서 폴더를 압축

  • 소스 인스턴스에 SSH로 접속
ssh -i /path/to/source-key.pem ubuntu@{source_instance_ip}
  • 폴더를 .tar.gz 파일로 압축
tar -czvf {output_folder_name}.tar.gz -C {source_path} {source_folder_name}

2.2. 압축 파일을 타겟 인스턴스로 전송

scp -i /path/to/source-key.pem ubuntu@{source_instance_ip}:{source_path} ubuntu@{target_instance_ip}:{target_path}

2.3. 타겟 인스턴스에서 압축 해제

  • 타겟 인스턴스에 SSH로 접속
ssh -i /path/to/target-key.pem ubuntu@{target_instance_ip}
  • 압축 해제
tar -xzvf {output_folder_name}.tar.gz -C {target_path}

3. Objects를 인스턴스에서 S3로 업로드

private void uploadFile(Path filePath, String s3Key) throws IOException {
    PutObjectRequest putObjectRequest = PutObjectRequest.builder()
            .bucket(targetBucket)
            .key(s3Key)
            .build();

    s3Client.putObject(putObjectRequest, filePath);
}

C. Reference

태그:

카테고리:

업데이트:

댓글남기기