해당글은 java v1입니다. v2 버전은 AWS SDK v2 S3 적용하기 글을 참고해 주세요!
이전에 S3에서 이미지를 읽어 들여서 server local에 저장하는 로직을 구현해보았다. 이번에는 .txt
파일을 저장 시켰을 경우 해당 파일을 읽은 뒤 log로 찍어내보는 로직을 구현해보려고 한다.
다음과 같이 파일을 S3 bucket에 저장시켰고
내용은 다음과 같이 저장했다.
@Service
@Slf4j
public class S3V3ServiceImpl implements S3V3Service{
...
@Override
public void getObject(String path) throws IOException {
try {
S3Object s3Object = ballMateS3Client.getObject(bucketName, path);
S3ObjectInputStream objectContent = s3Object.getObjectContent();
//FileCopyUtils.copy(objectContent, new FileOutputStream("C:/project/ballmate.txt"));
String text = new String(objectContent.readAllBytes(), StandardCharsets.UTF_8);
log.debug("-------- 파일 내용 --------");
log.debug(text);
log.debug("-------- 파일 내용 --------");
} catch (AmazonS3Exception ae){
throw new IllegalArgumentException(ae.getMessage());
}
}
}
이전에 파일을 저장하던 로직은 주석처리를 하고 파일을 읽어서 String으로 변환하는 코드로 작성했다. AWS에서 제공하는 S3ObjectInputStream
의 소스를 타고 들어가면 결국 InputStream
을 상속받아서 사용하고 있다. 그래서 InputStream
과 동일하게 사용할 수 있었다.
실제 코드를 확인하면 내가 작성했던 파일의 내용이 출력됨을 확인할 수 있었다.