본문 바로가기

No content length specified for stream data

s3 업로드시 발생하는 로그.


Sep 30 03:29:32 ip-172-50-10-72 tomcat8: 2019-09-30 12:29:32.717  WARN 27104 --- [io-8443-exec-65] c.amazonaws.services.s3.AmazonS3Client   : No content length specified for stream data.  Stream contents will be buffered in memory and could result in out of memory errors.


s3 업로드시 setContentLength 를 지정하지 않거나 IOUtils.toByteArray(inputStream) 사용시 inputStream 이 소진되어 발생하는 경고이며 다음과 같이 수정이 필요하다.


byte[] bytes = IOUtils.toByteArray(inputStream);
objectMetadata.setContentLength(bytes.length);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
 
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, key, byteArrayInputStream, objectMetadata);
client.putObject(putObjectRequest);
cs