AWS

AWS Load Balancer를 사용할 때 계속 405 (Method Not Allowed) 가 뜨는 경우

회사 API 서버에서 웹훅 관련한 API를 만들 일이 있어 POST 요청을 받는 웹훅 엔드포인트를 생성했다. 그런데, 분명 요청을 보내는 서버에서는 정상적으로 POST로 요청을 보내는데, 받는 서버의 로그에서는 405 (Method Not Allowed)가 뜨고 있었다. 원인 AWS Load Balancer를 사용할 때, HTTP 요청을 HTTPS로 리다이렉트 시키는 기능이 있다. 일반적으로는 위와 같이 설정되는데, 이 경우 301 (Moved Permanently)로 리다이렉트 시키기 때문에 HTTP로 POST 요청을 보내면 HTTPS로 리다이렉션 되면서 GET 요청으로 바뀌게 된다. 서버는 Load Balancer 뒤에 있기 때문에, GET 요청을 받는 엔드포인트가 없어 405 (Method Not Allowed)가 뜨게 되었다.

Read more →

November 23, 2023

AWS ECS 서비스를 Github Action을 통해 자동으로 시작하고 종료하기

AWS ECS로 배포했던 Plog(“개발자들의 블로그 만들기 프로젝트”)를 마무리 하게 되면서, 서버 유지 보수 비용을 가변적으로 컨트롤 하고 싶었다. (공부목적으로 시작한 것이지, 돈을 벌기 위해 유지하는 서비스는 아니니까.. 돈을 아껴야지..) ECS 비용이 별건 아니지만, 그래도 의미없게 유지할 필요는 없다고 생각했다. 다만, 팀원들이 언제나 이직이나 취직 시에 포트폴리오로 활용할 수 있도록 API서버를 올렸다가 내렸다가 하는 것을 구상하려 한다. ECS 서비스 종료는 어떻게 하는가? 사실 매우 간단하다. ECS 서비스의 원하는 테스크 수를 0으로 설정하면 된다.

Read more →

October 18, 2023

AWS Secrets Manager를 활용해서 로컬 시크릿을 잘 관리하는 방법

회사에서 로컬로 시크릿을 공유하다 보면 Slack, 카카오톡 과 같은 메신저를 통해 시크릿을 주고 받는 일이 종종 생긴다. 이유는 종종 다음과 같은데 변경 사항에 대한 대응으로 기존 로컬 Secret를 갱신해야 하는 경우 신규 입사 시 초기 Secret를 설정해야하는 경우 이런 방법은 메신저라는 공유 채널에 Secret에 대한 민감한 정보가 남기도 하고, 여러가지 보안적인 측면에서 좋지 못하다고 느꼈다. AWS Secret Generator그래서 만들었다. Golang으로 제작한 간단한 CLI 툴이며, AWS Secrets Manager에서 보관 중인 Secret들을 간단한 CLI를 통해 가져오고 로컬에 파일의 형태로 가져올 수 있다.

Read more →

September 23, 2023

AWS Secrets Manager를 사용하여 Config파일을 AWS에서 관리하기

도입 신경쓰지 못했지만, 매번 불편했던 부분이 있습니다. 서버에서 사용하는 모든 Secret을 config.yaml이라는 파일 내에서 보관하고 있는 것인데요. “과연 Github에서 이렇게 소스로 보관해도 맞는것일까?” 라고 의문이 들었습니다. Github 에서도 레포지토리에서 사용하는 다양한 Secret을 관리할 수 있도록 Github Secrets 기능을 제공하는데, 뭔가 무방비하게 노출된 느낌을 받았습니다. 첫번째 생각 Github Secrets 빌드시 필요한 모든 변수를 Github에서 제공하는 Secrets기능을 활용하여 모두 가려보는 건 어떨까 생각해본 적도 있습니다. 다만 해당 방법은 특정 변수를 가리는 것에는 유리할 지는 몰라도, 나중에 이 변수가 어떨 때 주입 되는 지 파악하기 힘들고, Github이라는 한정된 환경 내에서만 동작하기 때문에 조금 더 General하게 사용할 필요가 있어보였습니다.

Read more →

March 1, 2023