502 에러가 나는 이유중에 하나가 시간초과가 있습니다.
cloudwatch 를 확인하면 29.x 초 아니면 30.x초에 끝나거든요 .
그럼 Lambda설정에서 시간을 늘려줍니다.
기본은 30초, 15분 까지 늘릴 수 있습니다.
근데 api가 api gateway왔다가 람다를 오기 때문에 람다에서15분을 해도 apigateway 에서 뻑이나면 실패해요
apigateway는 29초가 최대 입니다.
그래서 저 처럼 하나의 api가 시간이 많이 걸리는 경우에는 다른 방안을 생각해야합니다.
1. SQS + Lambda
SQS 도 람다로 발생시켜 SQS에 담아 놓는겁니다. 이것은 잊어먹지 않거든요 하지만 비용이 좀 들겁니다.
2. API Gateway 떼고 ELB 로 변경
저는 ELB로 했습니다.
아키텍쳐로 보면 아래와 같이 되는것이지요 .
일단 alb의 다른게 설정이 되어있고, 람다도 배포 완료했으면
타켓그룹을 1개 더 설정해줘야합니다. 람다를 추가해줘야하니깐요
- ec2 -> 로드밸런서 -> 대상그룹 -> 대상그룹 생성
다음
여기에 람다함수가 나와야합니다. 그리고 생성해줍니다.
2. 로드 밸런서에서 타켓그룹을 설정해줍니다.
- 로드밸런서 -> 있는 로드밸런서 선택 -> Https 443 선택
규칙추가
이렇게 하고 뒤에 우선순위 (저는 1위 줌) 하고 생성해주면 됩니다.
그러면 결과적으로
이런식으로 나오게 됩니다.
이렇게 하면 오래 걸리는 것도 해결이 가능합니다. 또 이렇게 해서 안된다면
alb 에서 timeout 설정 바꾸는게 있어서 그것을 설정해 주시면 됩니다.
alb 선택 -> 속성 -> 연결유후제한 시간 이것을 건드려주면 됩니다.
댓글