일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- telegram
- docker app
- 카카오 알림톡
- Telegram API
- querydsl
- growpart
- AWS
- 알림톡
- 고정 아이피
- push 403
- 개발서버
- docker
- jenkins window
- modelmapper
- 윈도우 개발서버
- NoArgsConstructor
- QureyDsl
- EC2
- DynamoDB
- rbenv
- jdk upgrade
- thymeleaf
- 비즈뿌리오
- NoSQL Workbench
- jenkins bitbucket
- Kotlin
- spring boot
- docker node
- springboot
- layout-dialect
Archives
- Today
- Total
givepro
카카오 알림톡 AWS Lambda 구현 본문
반응형
히스토리
현재 운영중인 서비스에서 사용자가 구매한 서비스가 사용 가능하면 알림을 주기로 했다.
국내는 카카오 알림톡으로 위와 같은 사례를 대부분 처리하기 때문에 참고하여 진행했다.
내가 진행한 카카오 알림톡 API는 비즈뿌리오 (나름 잘되어있는 편이라고 생각)
가이드도 잘되어있고, 기존에 사용한 이력이 있어서 쉽게 진행이 가능했다. (템플릿 추가 및 검수까지)
하지만 개발을 진행하는 도중 문제가 발생했따.
현재 운영 서비스는 AWS EKS를 사용하고 있고, MSA 서비스로 API를 운영하고 있었다.
각 서비스마다 배포 시 동적 IP를 할당 받고 있어서 비즈뿌리오 API를 사용하려면 방화벽 허용 처리를 하기위해 고정 IP가 필요했던 것이다.
원인 및 해결방안
- 알림톡을 발송하려면 방화벽 이슈로 고정 IP가 필요
- 각 서비스 별로 pod 형태로 운영되어 IP가 동적으로 할당 됨
- static ip pod로 운영
- 관련 레퍼런스
- 래퍼런스가 부족한 상황 및 현재 인프라에 적용하려면 많은 작업이 필요하다고 판단 → 보류
- 각 서비스 별로 pod 형태로 운영되어 IP가 동적으로 할당 됨
- 별도의 서버가 필요없는 서버리스 방식 진행 → AWS Lambda
- 해당 함수에서만 사용하는 별도의 VPC를 생성하여 고정 IP 할당
목표
- “API → 람다 → 카카오 알림톡 (비즈뿌리오) API”를 구성하도록 한다.
- “람다 → 카카오 알림톡 (비즈뿌리오) API” 동작 시 고정 IP를 사용한다.
- Template 수정 시 최소한의 수정으로 배포를 가능하도록 한다.
래퍼런스
위 래퍼런스에 너무나 정리를 잘해주셔서 진행하는데 큰 도움이 되었습니다. 🙏
람다 코드는 파이썬으로 작성하는게 간단하고 빠르게 진행이 가능했습니다.
아래는 토큰을 받는 예시 코드입니다.
import requests
url = 'https://api.bizppurio.com/v1/token'
headers = {
'Authorization': 'Basic {TokenValue}',
'Content-Type': 'application/json; charset=utf-8'
}
res = requests.post(url, headers=headers)
body = res.json()
print(body.get('accesstoken'))
사실상 알림톡을 발송하는 API도 모두 제공해주고 있어서 전달 받은 템플릿 코드에 맞게 필요한 변수를 치환하는 작업만 해주니
정상적으로 발송이 가능했습니다.
다음에는 해당 이슈와 관련하여 서비스 쪽에서 어떻게 토큰을 관리했는지 작성해보겠습니다.
'DevOps > aws' 카테고리의 다른 글
AWS EC2 설정 및 도메인 적용 그리고 배포까지 (2) (0) | 2022.11.10 |
---|---|
AWS EC2 설정 및 도메인 적용 그리고 배포까지 (1) (0) | 2022.11.10 |
AWS 주요 서비스 정리 (0) | 2022.10.25 |
AWS DynamoDB 로컬 환경에서 사용 (2) (0) | 2022.10.25 |
AWS DynamoDB 로컬 환경에서 사용 (1) (0) | 2022.10.25 |
Comments