AWS S3 .txt 파일 읽고 출력하기

최준호·2022년 8월 11일
0

AWS

목록 보기
4/10
post-thumbnail

해당글은 java v1입니다. v2 버전은 AWS SDK v2 S3 적용하기 글을 참고해 주세요!

📗 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과 동일하게 사용할 수 있었다.

실제 코드를 확인하면 내가 작성했던 파일의 내용이 출력됨을 확인할 수 있었다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글