2023 AWS Rookie Championship 참여 후기
·
Events
클라우드 시작백엔드 개발을 공부하던 저는 2023년 하반기에 AWS 관련 행사에 참석하며 클라우드에 대한 관심을 가지기 시작했습니다.웹 애플리케이션을 개발하는 일도 충분히 멋진 경험이지만, 그보다 더 큰 규모의 환경을 구성하며 관리하는 일이 멋지다고 느껴졌습니다. 처음엔 막연한 관심이었지만, AWS Community Day, 각종 소모임 및 Hands-on 행사에 참여하며 사람들은 어떤 시각으로 서비스를 바라보는지, 또 어떤 활용 방안이 있고 어떤 고민을 하는지 배웠습니다. 관심에 확신을 가진 이후 서비스 전반에 대한 공부를 시작했습니다. Udemy에서 AWS SAA 강의를 들으며 천천히 공부했습니다. 프로젝트 진행에서 인프라 구축 경험이 몇 번 있어서인지 내가 사용했던 것들 + 개선할 수 있는 사항들을..
[Terraform] state locking을 위한 s3, ddb 설정하기
·
Server
Terraform의 경우 Github과 같은 VCS에서 프로젝트를 공유하기엔 한계가 있습니다. AWS 환경을 테라폼으로 구축한다고 가정합시다. terraform apply 명령어를 실행하는 경우, 테라폼은 연결되어 있는 계정을 통해 인프라스트럭처를 프로비저닝 합니다. 그런데, 여러명이 테라폼 프로젝트를 사용중이라면 어떨까요? 유저 A와 B는 Latest 버전의 테라폼 프로젝트에서 개발을 시작했습니다. 유저 A는 EC2 instance의 유형을 변경하고, 유저 B는 EC2 instance의 security group을 변경합니다. 이 때, 두 유저가 terraform apply 를 동시에 실행하여 한 계정에 적용을 시도합니다. 먼저 A와 B 모두 state 파일을 읽습니다. 그 후, B의 변경사항이 먼저 ..
[AWS] AWS 사용요금을 매일 문자로 받아보기
·
AWS
AWS 소모임에 참가하여 두가지 실습을 진행했는데, 그 중 MonthlyUsageSNS 서비스를 만들어 Budget을 문자로 받아볼 수 있는 서비스가 마음에 들어 디벨롭해봤다. 1. MonthlyUsageSNS Lambda Functionimport jsonimport boto3from datetime import datetimefrom dateutil.relativedelta import *def lambda_handler(event, context): client = boto3.client('ce') today = datetime.today() this_month_first_day = datetime(today.year, today.month, 1) str_toda..
[서버] Github Actions: 다양한 명령 내리기
·
Server
1. Github Actions 로 특정한 파일만 가져오기 기본적인 EC2 + Github Actions + Docker Hub 으로 배포환경 구축하시는 분들께서 쓰시는 방법: 주변에서도 많이들 사용하는 방식으로, docker-compose up을 위한 docker-compse.yaml 파일을 다음과 같은 방식으로 가져옵니다. 1. EC2에 접근하여 docker-compose.yaml을 직접 생성한 후 워크플로우 실행 2. (제가 기존에 사용했던 방식) docker-compose.yaml을 secret/variable 으로 등록한 후 github actions에서 ssh 접근 후 해당 파일을 쓰는 스크립트 실행 두가지 모두 불편한 점이 있습니다. 바로 docker-compose.yaml 파일이 수정될때마..
[AWS] VPC Migration
·
AWS
디폴트 vpc를 사용하고 있던 환경에서 마이그레이션을 하려고 한다. db서버가 퍼블릭 vpc에 있는게 마음에 걸리기도 하고,서비스 런칭으로 production server에 트래픽이 증가함에 따라 정보 유출에 대한 걱정이 커지고있다.(오투오 서비스라 민감한 정보가 DB에 들어간다) MFA + private subnet 콤보로 보안을 챙겨보겠다.(db접근은 mfa를 거쳐서만 갈 수 있도록) 그래서 오늘은 production server는 아니고, development server에서 테스트를 진행하기로 했다. EC2와 Load Balancer는 public subnet에 두어서1. 로드밸런서는 유저 트래픽 받기2. EC2는 ssh연결하여 db 접속 용도 (말고도 뭐 서버 관리도..) 정도로 사용하겠다.  ..
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (3)
·
AWS
슬픈 날이네요. 구조에 많은 변화가 있었고, 많은 고민이 있었습니다. http api로 구현 시도저번에 말씀드렸듯 API Gateway의 성능과 비용을 고려하면 Http API가 좋습니다. (구현도 간단합니다. 간략화된 버전이기 때문에요)그래서 다시 http api 써볼까? 했는데, 실패했습니다. 왜? -> API Gateway 통합 요청의 매핑 템플릿을 수정할 수 없기 때문입니다.슬랙 API의 경우 요청이 application/x-www-form-urlencoded로 오는데요, 그렇기 때문에 매핑 템플릿을 통해 시리얼라이징을 해야 합니다.그런데 http api는 해당 부분을 configure할 수 없습니다.. 그래서 지식을 얻고 시간을 버렸습니다. step functions의 asynchronous r..
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (2)
·
AWS
기존의 방식에 문제점을 발견했다.가장 핵심 기능이었던 Lambda Authorizer에 대한 문제로, 해당 기능을 사용하기 위해선 토큰을 지정된 형식으로 보내야 한다.따라서 X-Slack-Signature 를 헤더에 담아 사용하는 Slack API에 대한 인증을 구현하기가 참 .. 까다롭다.헤더를 바꿔주는 리졸브 함수를 앞에 추가할수도 있긴 하겠다..어쨌든 그렇게 됬으니까, 이왕 이렇게 된거 판을 키워보자. Step Functions다음과 같이 State Machine을 구성했다. AWS가 참 사용하기 편리하게 만들어뒀다.Slack Verifier에서는 ValidateFunction을 호출하고, 인증이 완료되면 반환값 Payload에 valid == true와 함께 HTTP Method, path, 기타..
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (1)
·
AWS
!!튜토리얼 아닙니다!! 기존에는 슬랙 봇 서버를 EC2 인스턴스로 띄워서 사용하였는데, 이제 서버리스로 옮기려고 한다. 그런데 그냥 하면 재미가 없으니, 서버리스 인프라 구축 툴인 AWS SAM을 사용하려고 한다. 왜 AWS SAM인가?우선 외부 세미나에서 SAM에 관한 강연을 들은 바 있기도 했고, 물론 Serverless Framework도 좋다고 들었지만 많이 들어본 SAM으로 시작했다.CloudFormation 문법을 모르는 상태에서 시작하려니 쉽진 않았다. ㅠ 내가 최종적으로 구현할 환경은 다음과 같다.핵심은 Lambda Authorizer인데, Custom Authorizer를 둠으로써 Slack API로부터 오는 요청의 토큰을 Validate 할 예정이다.인증된 요청은 핸들러로 넘겨지며, ..
AWS Community Day 2023 후기
·
Events
10/28 (토) AWS Community Day 2023에 참가하였습니다. 저는 트랙 2 - 서버리스에 참가하였습니다. 지난번에 참가했던 AWS 학생창업지원 세미나와는 다른 분위기였습니다. ㅎㅎ 현직자 분들이 많이 계시고 대학생 분들도 계시더라고요! 강연도 1:30 ~ 5:40시까지 넉넉히 들을 수 있었습니다. 기존에 제가 사용해본 서버리스 경험은 CloudWatch의 메세지를 SNS로 받고 람다를 통해 슬랙 웹훅으로 알림을 전송하는 정도가 전부였는데요, 강의를 듣고 서버리스를 보는 시야가 굉장히 넓어졌습니다. 1. Integrating GenAI into Development Workflow 해당 강의는 온라인 실시간 스트리밍을 통해 들을 수 있었습니다. AWS Bedrock, AWS Applicat..
[Spring Boot] 로컬에서 application.yaml 에 .env 환경변수 주입하기
·
Server/Spring Boot
https://popcorn-overflow.tistory.com/17 [Docker, AWS, Spring] docker-compose시 환경변수 전달하고 스프링부트 application.yaml에서 사용하기저는 보안 전문가가 아닙니다. 하지만 개발자라면 보안을 고려하지 않을 수 없겠죠. 제가 사용했던 기존의 방법입니다. application.yaml파일을 github repository secret으로 두었기 때문에 언뜻 보면 안전popcorn-overflow.tistory.com지난 자료에서 application.yaml파일을 다음과 같은 형태로 구성했습니다. spring: servlet: multipart: max-request-size: 30MB max-file-size: 30MB jpa: sh..
Sean 션
'분류 전체보기' 카테고리의 글 목록 (4 Page)