AWS SDK for Java를 사용한 AWS 개발 모범 사례 - AWS SDK for Java 1.x

AWS SDK for Java 1.x는 2024년 7월 31일부터 유지 관리 모드로 전환되었으며 2025년 12월 31일에 지원 종료될 예정입니다. 새로운 기능, 가용성 개선 및 보안 업데이트를 계속 받으려면 AWS SDK for Java 2.x로 마이그레이션하는 것이 좋습니다.

AWS SDK for Java를 사용한 AWS 개발 모범 사례

다음 모범 사례는 AWS SDK for Java를 사용하여 AWS 애플리케이션을 개발할 때 문제를 방지하는 데 도움이 될 수 있습니다. 모범 사례를 서비스별로 정리했습니다.

S3

ResetExceptions 방지

스트림을 사용하여(Amazon S3 클라이언트 또는 AmazonS3를 통해) 객체를 TransferManager에 업로드하는 경우 네트워크 연결 또는 제한 시간 문제가 발생할 수 있습니다. 기본적으로 AWS SDK for Java는 전송을 시작하기 전에 입력 스트림을 표시하고 나서 재시도 전에 재설정하는 방식으로 실패한 전송을 재시도합니다.

스트림에서 표시 및 재설정을 지원하지 않는 경우 일시적인 실패가 있고 재시도가 활성화될 때 SDK에서 ResetException이 발생합니다.

모범 사례

표시 및 재설정 작업을 지원하는 스트림을 사용하는 것이 좋습니다.

ResetException을 방지하는 가장 신뢰할 수 있는 방법은 File 또는 FileInputStream을 사용하여 데이터를 제공하는 것입니다. 그러면 표시 및 재설정 제한에 제약을 받지 않고 AWS SDK for Java에서 데이터를 처리할 수 있습니다.

스트림이 FileInputStream은 아니지만 표시 및 재설정을 지원하는 경우 RequestClientOptionssetReadLimit 메서드를 사용하여 표시 제한을 설정할 수 있습니다. 기본값은 128KB입니다. 읽기 제한 값을 스트림 크기보다 1바이트 크게 설정하면 ResetException을 확실하게 방지할 수 있습니다.

예를 들어 스트림의 최대 예상 크기가 100,000바이트이면 읽기 제한을 100,001(100,000 + 1)바이트로 설정합니다. 표시 및 재설정은 항상 100,000바이트 이하에 대해서만 작동합니다. 이렇게 하면 일부 스트림의 경우 바이트 수가 메모리로 버퍼링될 수도 있습니다.