- 최신
- 최다 투표
- 가장 많은 댓글
안녕하세요.
EC2 에서 Springboot 애플리케이션을 실행할 때 NoSuchBucket 에러가 발생한 것 같습니다.
우선 로컬 환경과 EC2 인스턴스에서 동일한 조건으로 수행된 것인지 확인해 봐야합니다.
—
[1]
첨부하신 application.yml 은 다음과 같습니다
- cloud.aws.s3.bucket : S3 버킷명
- cloud.aws.credentials.access-key : AWS IAM User 의 Access Key
- cloud.aws.credentials.secret-key : AWS IAM User 의 Secret key
- cloud.aws.region.static: S3 버킷의 AWS Region
또한 AWS IAM에서 User 를 생성하여 S3 에 대한 적절한 Policy 를 추가하셔야 합니다.
—
[2]
보다 정확한 에러 메시지를 확인하기 위해 ExceptionHandler 를 다음과 같이 추가할 수 있습니다.
GlobalExceptionHandler.java
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
protected ResponseEntity<ErrorResponse> handleException(AmazonS3Exception e) {
log.error("AmazonS3Exception", e);
final ErrorResponse response = ErrorResponse.create(e, HttpStatusCode.valueOf(500), e.getErrorResponseXml());
return ResponseEntity.internalServerError().body(response);
}
}
같은 요청을 보냈을 시, GlobalExceptionHandler 의 다음과 같은 에러 메시지 (HTTP Response) 를 받게 됩니다.
{
"statusCode":"INTERNAL_SERVER_ERROR",
"headers”: {},
”detailMessageCode":"problemDetail.com.amazonaws.services.s3.model.AmazonS3Exception",
"detailMessageArguments":null,
"titleMessageCode":"problemDetail.title.com.amazonaws.services.s3.model.AmazonS3Exception",
"body":
{
"type":"about:blank",
"title":"Internal Server Error",
"status":500,
"detail":
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>{요청한 S3 버킷명}</BucketName><RequestId>{RequestID}</RequestId><HostId>{HostID}</HostId></Error>"
}
}
에러 메시지를 통해 요청한 서버에서 응답한 S3 버킷명이 무엇인지 확인해 봐야 합니다.
body 의 json 객체에서 detail 은 AmazonS3Exception 에서 반환하는 내용 XML 파일 입니다.
<BucketName>{요청한 S3 버킷명}</BucketName>
을 참고하여 실제로 요청한 S3 버킷명이 맞는지 확인해보세요.
안녕하세요.
어플리케이션 실행 후 S3 오류 발생하면 CloudTrail 에 가셔서 최근 호출된 API 중에 S3 관련 API 들을 찾아보시고 어떤 오류가 남아있는지 한번 확인해보세요.
도움이 될만한 오류내용을 찾지 못하셨다면 error message 에 포함된 RequestID, S3 Extended request ID 등을 support case 로 올려서 분석요청을 해보셔야 할 것 같습니다.
별다른 문제가 없는데 NoSuchBucket 이 자주 발생하는 경우는 다른 리전으로 연결되는 경우 주로 많이 발생합니다.
관련 콘텐츠
- 질문됨 일 년 전