본문 바로가기
WEB

AWS S3 : The Content-MD5 you specified did not match what we received 원인 분석

by 상후 2023. 8. 1.
728x90
반응형

 

AmazonS3Exception: The Content-MD5 you specified did not match what we received.

 

AWS S3 Storage로 파일 업로드를 진행하고 있습니다.

하지만 간헐적으로 해당 오류가 발생하면서 Exception이 발생함을 모니터링을 통해 확인했습니다. 

원인분석 및 사례를 공유합니다.

 

발생 원인
결론부터 이야기하면 동시에 같은 경로의 같은 파일명으로 업로드하려 했고, 그 과정 속에서 파일이 변경되고 있습니다.
API서버에 업로드 기능이 구현되어 있는데 같은 파일명으로 업로드하게끔 짧은 주기로 계속 호출하고 있었습니다. 
업로드가 진행되는 와중에 사용하고 있던 File이 변경되어 해당 에러가 발생했습니다.

https://stackoverflow.com/questions/36179310/an-exception-the-content-md5-you-specified-did-not-match-what-we-received

 

테스트 케이스
File file1 = new File("/test.txt");
File file2 = new File("/test.txt");

file1.delete();

// 예상 결과는?
System.out.println(file1.exists()); 
System.out.println(file2.exists());

 

처음에는 true / false 가 아닐까 생각했다. 

같은 파일이긴 했지만 파일이 존재할 때 각각 인스턴스화해 놓았기 때문에 file1을 지워도 file2 변수에는 영향이 없을 거라 생각했다.

 

하지만 결과는 false / false였다.

같은 스레드라서 그런가 싶어서, API 서버라고 가정하고 다른 스레드 환경에서도 테스트했더니 동일했다.

 

자바 API 문서를 보면 File 클래스는 불변이라고 한다.

JAVA 8 Docs

 

자바에서 대표적인 불변객체를 생각하면 String이 떠오른다.

String과 같은 개념이라고 생각하니 이해가 조금 빨랐다.

 

 

추가로 AmazonClientException: Data read has a different length than the expected 해당 에러 메시지도 동일한 원인입니다

 

 

 

 

 

 

 

 

728x90
반응형

'WEB' 카테고리의 다른 글

[WEB/HTTP] 07. HTTP 헤더 - 일반 헤더  (0) 2021.09.12
[WEB/HTTP] 06. HTTP 상태코드  (0) 2021.08.22
[WEB/HTTP] 05. HTTP 메서드 활용  (0) 2021.08.16
[WEB/HTTP] 04. HTTP 메서드  (0) 2021.08.15
[WEB/HTTP] 03. HTTP 기본  (0) 2021.08.14

댓글