AWS - 502 Bad Gateway (1) - S3 버킷 생성

짱수·2023년 4월 1일
0

AWS

목록 보기
1/3

📝 서론

프로젝트 구조

현재 진행중인 프로젝트에 대해 블로그에 포스팅을 한 적은 없기 때문에 프로젝트에 대한 간단한 구조를 언급한다.
Https 프로토콜 사용을 위해 ACM에서 도메인을 인증받았고, Route53을 이용해 호스팅 중이다. 도메인은 가비아에서 구매를 하였다. 서버는 AWS EC2를 사용하고 있으며, Tomcat10을 사용하여 서버를 구축하였다. 자바 스프링으로 서비스 로직을 구현하여 구동중이다.

오류 상황

Https 프로토콜을 이용해 서비스에 접근 시 정확히 50퍼센트 확률로 502 Bad Gateway오류가 발생한다. 무슨 말이냐면, 매 요청에 대해 번갈아가면서 200 OK502 Bad Gateway 응답이 번갈아 수신된다.

⚒️ 문제 해결을 위해

가장 먼저 아마존에서 제공하는 문제 해결 방법에 대한 글을 읽어보았다.
How do I troubleshoot Application Load Balancer HTTP 502 errors?

해당 글에서 Application Load Balancer의 문제를 해결하기 위해 Access loging을 설정할 것을 이야기 하고 있다.

access loging 설정

access loging을 설정하는 것은 아마존의 가이드를 따라 진행하였다.
Enable access logs for your Application Load Balancer

버킷 만들기

로깅을 위해서는 로그가 저장될 저장장소가 필요하다. AWS에서 제공하는 S3 버킷을 만들어 보자.
버킷 생성 과정은 아래의 티스토리를 참고하였다.
[AWS] S3 버킷 프리티어 생성

  • 오브젝트는 버킷에 저장되는 모든 파일을 가리킨다
  • 버킷에서의 전치사는 폴더같은 개념이다. 전치사가 버킷 안의 오브젝트를 식별하는 데 사용된다.

버킷 정책 연결

버킷으로의 접근 권한을 설정하기 위해 버킷 정책을 설정한다.

  • 로그 저장을 위한 버킷 정책
{
  "Version": "2012-10-17", 
  "Statement": [
    {
      "Effect": "Allow", 
      "Principal": {
        "AWS": "arn:aws:iam::[elb-account-id]:root" 
      },
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::[bucket-name]/[prefix]/AWSLogs/[aws-account-id]/*"
    }
  ]
}
  • elb-account-id : 사용하는 S3의 리전마다 정해진 값이 있으며, 해당 값은 아래의 아마존 Docs를 참고하면 된다.
  • bucket-name : 로깅을 저장할 버킷의 이름을 적는다.
  • prefix : 로깅을 저장할 버킷에서 사용할 prefix를 적는다.
  • aws-account-id : 해당 값은 콘솔의 우측 상단의 본인 아이디를 클릭하면 확인할 수 있다.
    • 아마존에서 부여해 주는 12자리 숫자로, -를 제외하고 입력하면 된다.

아래의 글들을 참고하여 설정하였다.

액세스 로그 구성

로그 파일을 S3에 저장하기 위해 로드밸런서와 S3 버킷을 연결하자.

로드 밸런서 설정

  1. 연결할 로드 밸런서를 선택한다.
  2. Attributes > Edit를 클릭
  3. Monitoring > Access logs를 활성화 한다.
  4. Browse S3로 로그를 저장할 버킷을 선택한다.
  5. 변경 사항을 저장한다.

변경 사항 저장 단계에서 Access Denied 된다면 S3bucket의 permission을 다시 확인해 보자.

연결 확인

모든 과정이 끝나면 설정이 잘 되었는지는 버킷에서 확인할 수 있다.
[bucket-name]/[prefix]/AWSLogs로 가서 테스트 파일이 생성되었는지 확인하자.
바로 생성 확인이 안될 수도 있으니 꼭 새로고침을 눌러서 확인해 주자.

✒️정리

502 에러 해결을 위해 로깅 설정을 완료했다.
다음 포스팅에서 로그를 확인해 보자.

profile
Zangsu

0개의 댓글