2부에서는 람다와 ALB 연결을 확인하고 구성한 서비스의 람다 이벤트를 발생키셔 'Hello from Lambda!'를 찍어 보고 Route53을 ALB와 연결하는 방법에 대해서 정리한다.
AWS Lambda / ALB / Route53 / CloudWatch 서비스 구성 방법 (2)
개발 환경
먼저 개발 환경은 다음과 같다.
- AWS Lambda
- Python
- ALB
- Route53
- CloudWatch
- K6
구성도
구성도는 다음과 같다.
구성 순서
구성 순서는 아래 항목 순서로 진행한다. 내용이 많아 1부와 2부, 3부를 통해 정리한다.
- 람다 함수 생성 (1부)
- 타겟 그룹 생성 (1부)
- ALB 생성 (타겟 그룹 설정) (1부)
- ALB 람다 트리거 확인 (2부)
- Route53을 통한 ALB 연결 (2부)
- Hello form Lambda! (2부)
- CloudWatch 로그 확인(3부)
ALB 람다 트리거 확인
위에서 ALB 생성을 마쳤다면 다시 람다 함수로 이동해준다. 그러면 다음과 같이 트리거 위치에 ALB가 위치해 있는 것을 확인 할 수 있다.
이제 아래쪽에 보면 다음과 같이 코드를 작성할 수 있는 부분이 있는데 기본적으로 lambda_function.py 파일이 생성되어 있는 것을 확인 할 수 있다.
정의 된 함수를 확인 해보면 람다 핸들러라는 함수가 있고 람다 이벤트가 발생하게 되면 해당 함수가 실행이 된다. (파이썬 기준)
추가적으로 해당 부분에서 구성 탭으로 이동 후 일반 구성에 가보면 설명을 적을 수 있고 이외에 메모리 설정도 가능하다.
이것으로 람다와 ALB 연결 설정은 끝났다. 설정한 프로토콜로 ALB DNS 를 요청해보면 확인이 가능하다.
그리고 추가적으로 AWS Route53을 사용한다면 아래의 내용을 참고해서 도메인과 ALB를 연결하는 방법도 정리한다.
Route53을 통한 ALB 연결
먼저 Route 53은 AWS에서 제공하는 관리형 DNS(Domain Name System) 서비스로 AWS 클라우드 내에서 호스팅되는 애플리케이션의 도메인 이름 관리 및 DNS 설정을 담당한다.
Route53에서는 도메인을 직접 등록 할수도 있고, 가비아와 같은 곳에서 구매한 도메인을 등록할수도 있다.
만약 직접 등록하고 싶다면 Route53 대시보드에 보이는 도메인 등록에 등록하고자 하는 도메인을 입력 후 확인을 눌러주자.
그러면 다음과 같이 도메인의 사용가능한 리스트들과 비용이 나온다.
반대로 다른 곳에서 구매한 도메인이 이미 있는 경우에는 Route53 -> 호스팅 영역으로 이동해준다. 이 후 호스팅 영역을 생성 해준다.
호스팅 영역 생성 시 에는 도메인명과 설명 그 다음 호스팅 영역의 퍼블릭 여부를 선택해준다.
이제 생성한 호스팅 영역을 클릭해서 들어오면 레코드 생성을 해줘야 한다. 레코드 생성을 눌러주자
레코드 생성을 눌러 들어오게되면 다음과 같이 레코드 명과 레코드 유형을 넣게 된다.
여기서 말하는 레코드란 도메인 이름을 IP 주소나 다른 유형의 레코드로 매핑하는 것을 말하는데 예를 들어 많이 사용하는 레코드 유형으로는 "A 레코드"는 도메인 이름을 IPv4 주소로 매핑하고, "CNAME 레코드"는 도메인 이름을 다른 도메인 이름으로 매핑한다.
레코드 유형을 눌러보면 다음과 같이 많은 유형들이 있다.
아래 내용을 참고해 원하는 유형으로 선택하면 된다.
- A 레코드 (IPv4 주소): 도메인 이름을 IPv4 주소로 매핑한다. 예를 들어, www.example.com을 203.0.113.0으로 매핑
- AAAA 레코드 (IPv6 주소): 도메인 이름을 IPv6 주소로 매핑한다. 예를 들어, www.example.com 을 2001:0db8:85a3:0000:0000:8a2e:0370:7334으로 매핑
- CNAME 레코드: 도메인 이름을 다른 도메인 이름으로 매핑한다. 예를 들어, www.example.com을 example.com으로 매핑
- MX 레코드 (메일 교환): 이메일을 전송하는 동안 메일 서버를 찾을 수 있도록 도메인 이름을 메일 서버의 이름으로 매핑한다. 예를 들어, example.com의 MX 레코드를 mail.example.com으로 설정하여, 메일 서버가 mail.example.com을 사용하도록 설정할 수 있다.
- NS 레코드 (네임서버): 도메인 이름에 대한 네임서버 정보를 제공. 예를 들어, example.com의 NS 레코드는 ns1.example.com 및 ns2.example.com과 같은 네임서버를 지정한다.
- PTR 레코드 (역 DNS): IP 주소를 도메인 이름으로 매핑한다. 예를 들어, 203.0.113.0의 PTR 레코드는 mail.example.com으로 설정하여, 해당 IP 주소가 mail.example.com과 관련되어 있음을 나타낼 수 있다.
- SOA 레코드 (시작 권한): 호스팅 영역에 대한 정보를 포함하는 DNS 레코드. 이 레코드는 호스팅 영역의 "권한" 정보와 "최소(기본) TTL" 정보를 제공한다.
- TXT 레코드 (텍스트): 도메인 이름과 관련된 텍스트 정보를 제공. 예를 들어, example.com의 TXT 레코드를 "v=spf1 a mx ~all"로 설정하여, 이메일 스팸 필터링을 위한 SPF(Send Policy Framework) 정보를 포함할 수 있다.
레코드 이름에 원하는 레코드명과 유형을 선택 후 여기서는 아까 생성한 ALB와 연결이 필요하므로 ALB의 DNS 정보를 값에 입력해준다. 이후 레코드 생성을 눌러주어 마무리한다.
ALB의 DNS name은 EC2 -> Load balancers로 이용하여 확인이 가능하다.
이제 설정은 끝났고, 람다 이벤트를 발생시켜 정상 동작 확인을 해보자.
Hello from Lambda!
이제 모든 연결이 끝났으니 설정한 도메인으로 요청을 해서 생성한 람다 함수가 잘 실행되는지 확인해보자.
요청은 브라우저를 통해 직접 요청하거나 포스트맨과 같은 툴을 이용해도 좋다.
다음과 같이 요청 시 응답으로 “Hello from Lambda!”가 찍혔다면 잘 설정된 것이다.
만약에 응답이 오지 않는다면 다음 과정을 진행해보자.
람다에 이동하면 테스트 탭이 보일 것이다.
여기서 테스트 이벤트를 구성해서 테스트를 구성해주자. (별도 구성은 필요 없으며 이벤트 이름 정도만 설정해주고 저장하면 된다.)
이후 다시 코드 탭으로 이동해서 Test 버튼을 통해 테스트를 진행단다.
다음과 같이 Execution results 탭이 생기면서 응답을 확인할 수 있다.
이후 재요청을 해보면 정상 동작하는 것을 확인할 수 있다.
다음으로 마지막 3부에서는 CloudWatch를 통해 로그를 확인하는 방법에 대해서 정리한다.
'AWS' 카테고리의 다른 글
AWS EC2 Cloud-init을 통한 서버 재부팅 시 애플리케이션 자동 실행 방법 (0) | 2023.09.08 |
---|---|
AWS - Lambda 성능 개선 및 개념 정리 (동작원리/ColdStart..) (0) | 2023.05.08 |
AWS Lambda / ALB / Route53 / CloudWatch 서비스 구성 방법 (1) (0) | 2023.04.12 |
Github Actions & Docker & AWS ECR 을 활용한 CI/CD 구축 (1) - EC2 생성 & ECR 생성 & IAM 사용자 생성 (0) | 2023.03.01 |
AWS - EC2 생성 및 접속 방법 (0) | 2023.02.27 |
댓글