[AWS CodeDeploy] CodeDeploy Basics
·
AWS
CICD를 도와주는 AWS의 Deployment 서비스로, CodeDeploy Agent가 서비스 배포를 도와줍니다.EC2, ASG, ECS & Lambda와의 통합이 가능합니다. 각각의 대상에 대한 CodeDeploy의 동작을 알아보도록 하겠습니다.CodeDeploy to EC2어떻게 배포할 것인지 appspec.yml 파일과 배포 전략을 통해 정의할 수 있습니다.EC2 플릿에 인플레이스 업데이트를 진행합니다. (새로운 인스턴스를 생성하지 않음)각각의 배포 phase에서 hooks를 통해 배포가 성공적이었는지 알 수 있습니다.CodeDeploy to ASGAuto Scaling Group으로의 CodeDeploy는 두가지 전략을 선택할 수 있습니다.인플레이스 업데이트실행 중인 EC2 인스턴스를 업데이트..
[AWS IAM] IAM Basics
·
AWS
IAM을 구성하는 여러가지 리소스IAM Users: long term credentialsIAM GroupsIAM Roles: short term credentials으로, IAM Role은 STS를 사용하여 권한을 받는다.EC2 Instance Role: 인스턴스에 하나씩 붙일 수 있고, EC2 metadata를 사용한다.Service Roles: API Gateway, CodeDeploy같은 서비스가 Auto Scaling Group이나 Lambda같은 서비스에 액션을 취하기 위해선 권한이 필요한데 이 때 Service Role을 사용한다.Cross Account Roles: 계정 간 권한을 제공하기 위함. IAM User의 credential을 공유하면 안됨.IAM PoliciesAWS Manage..
[AWS Network] Route 53 Resolver & DHCP option set
·
AWS
Route 53 ResolverAmazon VPC DNS server, Local DNS server for VPC, Amazon provided DNS server 등의 이름은 모두 Route 53 Resolver를 가리키는 다른 이름입니다. Route 53 Resolver는 기본적으로 VPC 생성 시 같이 생성되며, VPC 내부에서 DNS query 를 resolve 해주는 역할을 합니다. DNS 쿼리를 Resolve 하기 위해 다음의 절차를 거칩니다: 1. Route 53 Private Hosted Zone에서 resolve 시도2. VPC DNS에서 resolve 시도3. Public DNS에서 resolve 시도 (Route 53 Public Hosted Zone 포함) 따라서, Route 53..
[AWS Network] Transitive and non-transitive scenarios
·
AWS
AWS Advanced Networking에 대해서 공부하다가, Transitive 한 서비스와 그렇지 않은 서비스들을 구분하는 것이 꽤 자주 나왔고, 그것이 여러 시나리오에서 굉장히 중요한 개념이라는 것을 알게 되었습니다.VPC Peering vs Transit GatewayVPC Gateway Endpoint vs VPC Interface Endpoint (PrivateLink)Site-to-Site VPN Connection등 많은 서비스에서 Transitive에 대한 개념이 등장합니다. What is 'transitive'?그림으로 설명하자면 다음과 같습니다. 해당 그림에서 Network 1과 Network 2는 연결되어 있습니다. 또, Network 2와 Network 3은 연결되어 있는데요, ..
AWS EC2, EBS: 스왑 메모리에 대한 실험과 모범 사례
·
AWS
이 글을 작성한 이유리픽 프로젝트에서 Github Actions와 Docker을 통해 CICD를 진행합니다. 그런데 개발 서버가 CICD시 두번 중 한번은 죽는 문제가 발생했습니다. 원인을 조사해본 결과 리소스 고갈이었고, 해결 방안으로는 수직적 확장(스펙업)과 스왑 메모리 할당이 있었습니다. AWS re:Post 게시글인데요, 재미있는 문장을 발견했습니다.참고: 모범 사례는 임시 스토리지 인스턴스 스토어 볼륨에만 스왑 공간을 생성하는 것입니다. 이것에 대한 근거는 해당 게시글에 명시되어 있지 않았습니다. 그랬기 때문에 저는 이 근거에 대해 깊게 조사해보고자 합니다.AWS EC2 프리티어의 메모리는 너무 작다!저는 서버를 AWS의 t2.micro 인스턴스를 띄워서 사용하고 있습니다. 프리티어니까요. 프리..
[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..
[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 할 예정이다.인증된 요청은 핸들러로 넘겨지며, ..
Sean 션
'AWS' 카테고리의 글 목록 (2 Page)