반응형
오늘은 회사에서 Lambda 를 이용해 sns 메시지를 가공해서 Teams 메시지를 전송하는 작업을 진행했다.
Python 코드 작성 중 해당 에러가 나왔고, 코드 상 다른 부분은 문제가 없는데 하위의 에러가 발생 했다.
28:20.466Z Request failed: 500 Internal Server Error
500 에러가 발생해서 뭔가 timeout이나 config 설정 중 문제가 있겠거니 생각을 하고 config를 먼저 확인 했는데 별 다른 문제가 없었다.
그렇다면 뭐가 문제일까??
뭔가 직감적으로 http 통신을 하는 과정에서 json req를 잘못 보내거나 통신 상 문제가 발생한다고 생각했고, json 형식의 파일을 POST로 날리지 않아서 그런것은 아닌가 생각이 들었다. (Slack 전송 코드를 가져와서 Teams로 전송하는 걸로 변경했기 때문에 API 가 다를수도 있다고 생각함)
Teams 의 docs를 확인 해보니 HTTPS POST로 날려야 하는 것을 알 수 있었다.
req = Request(HOOK_URL, json.dumps(slack_message).encode('utf-8'))
try:
response = urlopen(req)
response.read()
logger.info("Message posted to %s", slack_message['channel'])
except HTTPError as e:
logger.error("Request failed: %d %s", e.code, e.reason)
except URLError as e:
logger.error("Server connection failed: %s", e.reason)
이전 코드는 이렇게 구성 되어 있었는데 try 부분을 http.request 메소드를 이용해서 POST method를 명시 해주었다.
try:
resp = http.request("POST", TEAMS_URL, body=encoded_msg)
logger.info("Message posted")
return {"status": "200 OK"}
위 코드를 이용해서 정상적으로 Teams 메시지가 전송 되었다. (보안상 캡쳐 못함!)
반응형
'기타 > Problem Solve' 카테고리의 다른 글
CodeCommit 403 error 해결 (0) | 2023.08.07 |
---|---|
Window EC2 인스턴스 CloudWatch Agent 설치 후 오류 (0) | 2023.08.04 |
S3 rb 트러블슈팅 (0) | 2023.06.13 |