개발하는 햄팡이

[Spring][AWS-S3]The bucket does not allow ACLs (Service: Amazon S3; Status Code: 400; Error Code: AccessControlListNotSupported 본문

카테고리 없음

[Spring][AWS-S3]The bucket does not allow ACLs (Service: Amazon S3; Status Code: 400; Error Code: AccessControlListNotSupported

hampangee 2025. 7. 30. 12:17

문제 상황

 

우리 프로젝트는 파일을 하나하나 권한을 설정하는 ACL방식을 사용하여 객체를 관리하고 있다..

/**
 * 파일을 S3에 업로드합니다. 필요에 따라 공개 설정이 가능합니다.
 *
 * @param file     업로드할 파일
 * @param hash     파일 해시 (경로 구성에 사용)
 * @param isPublic true일 경우 공개 접근(PublicRead) 설정
 * @throws IOException 업로드 중 오류 발생 시
 */
private void uploadToS3(MultipartFile file, String hash, boolean isPublic) throws IOException {
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType(file.getContentType());
    metadata.setContentLength(file.getSize());

    PutObjectRequest request = new PutObjectRequest(
        bucket,
        getTargetPath(hash),
        file.getInputStream(),
        metadata
    );

    // 공개 파일 일경우 PublicRead 설정(이미지)
    if (isPublic) {
        request.withCannedAcl(CannedAccessControlList.PublicRead);
    }

    awsS3ClientProviderForAttachment.getS3Client().putObject(request);
}

 

 

그런데 이미지 파일을 업로드 하기 위해 isPublic을 true로 하고 요청을 보냈는데 아래와 같은 오류메세지가 떴다.
(뒷 부분은 개인정보라서 자름)

 

 

 

맨첨부터 ACL로 하려고 퍼블릭 액세스 차단 설정에서 모두 해제를 해놨는데 ▼

차단되었다는 문구가 떴다.

 

 


해결방안

이거 외에도 객체 소유권 ACL을 활성화 해야한다.

그래야 다른 사람들이 public으로 조회할 수 있는 권한이 생김.