CodeDeploy 간단히 알아보기 CodeDeploy는 AWS에서 제공하는 배포를 위한 서비스이고, AWS에서 CI/CD 파이프라인을 구축할 때 필요한 서비스입니다. CodeDeploy는 세 가지 요소로 구성된다고 생각하는데 Application, Deployment group, appspec.yml입니다. Application은 배포할 컴퓨팅 플랫폼을 정하고, Deployment group은 어디에 어떻게 배포할지 정하고, appspec.yml은 배포 세부사항을 정해주는 설정 파일입니다. 람다 배포에서 appspec의 hooks 구성 appspec의 hooks는 어느 컴퓨팅 플랫폼에 배포하느냐에 따라 달라집니다. 예를 들어 EC2/온프레미스에 배포하는 경우에는 네 가지의 hooks 섹션에서 각각 필요..
API Gateway API Gateway는 네트워크에서의 게이트웨이와 같이 다른 네트워크 ( 리소스 ) 로 들어가는 입구 역할을 하는 포인트입니다. 예를 들어 API Gateway를 통하여 클라이언트가 접근하면, 배치된 람다가 이를 받아 리턴해줄 수 있습니다. AWS에서는 API Gateway를 다음과 같이 설명합니다. Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전 관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스 할 수 있는 "정문" 역할을 합니다. API Gateway를 사용하면 실시간 양방향 통신 애플리케이션이 가능하도록 하는 RESTful ..
시작하기 앞서 이 글은 다음 aws docs의 소스를 기반으로 작성되었습니다. AWS Transit Gateway AWS Transit Gateway AWS Transit Gateway는 중앙에 위치하여 VPC, On-premise 즉 온프레미스 간 연결을 지원하는 서비스입니다. AWS 공식 docs에서는 아래와 같은 그림으로 Transit Gateway의 이점을 설명합니다. 위와 같은 연결을 기존 VPC peering으로 진행하려면 아래와 같은 수만큼 피어링을 진행해야 합니다. 당연히 아키텍처가 무지하게 복잡해 질 것입니다. 그에 대한 아키텍처는 아래에 있습니다. docs에서는 Transit Gateway를 사용할 때는 네트워크가 간소화되고 확장성이 개선됩니다. AWS Transit Gateway가 각..
Lambda function 생성하기 아래와 같이 AWS 콘솔에서 Lambda -> Functions로 들어가 Create function을 눌러 Lambda function을 만들어줍니다. 그리고 아래와 같이 Runtime에 Node.js를 선택해주고, 원하는 대로 이름을 짓고 Create function을 클릭해주면 Lambda function이 만들어집니다. SQS를 트리거로 쓰기 위하여 만든 함수로 들어가 아래와 같이 Configuration -> Permissions로 들어가 람다 함수가 가지고 있는 role로 들어가 편집해주어야 합니다. Add permissions를 눌러서 Role에 AmazonSQSFullAccess를 붙여줍니다. SQS 생성하기 Amazon SQS -> Queue로 들어가..
Lambda function 생성하기 AWS 콘솔에서 아래와 같이 Lambda -> Function에서 Create function을 클릭하여 람다 함수를 만들어 줍니다. 그리고 아래와 같이 Runtime에 Node.js를 선택해주고, 이름은 아무렇게나 지어서 Create function을 클릭해주면 Lambda function이 만들어집니다. 람다 레이어에 node_modules추가하기 Node.js에서는 node_modules라는 폴더 안에 패키지가 추가되어 사용하는 데, 이를 Lambda function 내에 하나하나씩 만들어 사용하는 것은 너무 불편하고 비효율적일 것입니다. 그래서 람다 레이어에 이를 저장해 두고 함수에 꺼내 쓰면 됩니다. AWS 콘솔에서 Lmabda -> Layers로 들어가 C..
SQS ( Simple Queue Service ) SQS는 Simple Queue Service로 AWS에서 제공하는 애플리케이션 간 메시지를 주고받을 수 있는 서비스로, 즉 간소화된 버전의 메시지 큐 서비스라고 말할 수 있습니다. SQS에서 메시지는 텍스트 형태의 기본 데이터인데 메시지마다 고유의 아이디가 부여되어있어 이로 SDK에서 핸들링하고는 합니다. 아래에 나열한 AWS Docs에서 설명하는 SQS의 장점들은 메시지큐와 상당히 유사한 모습을 볼 수 있습니다. 보안 – Amazon SQS 대기열에서 문자를 받을 수 있는 사용자를 제어한다 SSE로 AWS KMS ( Key Management Service ) 에서 관리되는 키를 사용하여 대기열의 메시지를 보호할 수 있다. 내구성 – 메시지의 안전을..
CloudWatch agent란? 클라우드워치 에이전트란 AWS에서 제공하는 리소스 모니터링, 관찰 서비스인 클라우드워치에 리소스 내부에서 나온 지표, 데이터를 수집할 수 있게 해주는 것입니다. 본 글에서는 EC2에 설치하여 아파치 웹 서버의 로그를 남겨보도록 하겠습니다. 설치하기 로그를 클라우드워치로 수집할 CloudWatch agent를 아래 명령어를 통해 설치해줍니다. sudo yum -y install amazon-cloudwatch-agent 그리고 로그를 만들 웹 서버인 아파치를 아래 명령어를 통해 설치해줍니다. sudo yum -y install httpd 아파치 엑세스 로그 남기기 로그를 남길 트래픽을 받기 위해 아래 명령어를 통해 아파치를 실행시킵니다. sudo systemctl star..
ECR lifecycle이란? ECR lifecycle ( 수명 주기 정책 ) 은 혼잡한 ECR 퍼블릭 리포지토리를 정리하는데 도움을 줍니다. 저도 CI/CD환경이 적용되어 ECR로 도커 이미지 버전 관리를 하고 있는 토이 프로젝트를 진행하다. 이미지가 쌓여 오히려 필요할 때 관리가 힘든 모습을 보아서 설정하게 되었습니다. 라이프사이클을 설정하게 되면 그 정책에 따라 조건에 맞는 이미지는 그에 맞는 영향을 받습니다. 라이프사이클 설정하기 먼저 ECR -> repositories에서 라이프사이클을 설정할 본인의 프라이빗 리포지토리로 들어갑니다. 그러면 왼쪽 콘솔 창에 아래와 같은 목록들이 뜰 것인데, 여기서 Lifecycle Policy를 클릭해줍니다. 그리고 아래와 같이 Create rule을 눌러줍니다..
구조 1. 사용자가 CodeCommit에 코드를 푸시한다 2. commit 된 코드를 Codebuild가 build 후 CodeDeploy로 보낸 3. CodeDeploy에서 배포 후 실행한다 위와 같은 순서로 실행될 것이며. 테스트를 위해 자바 예제 코드가 필요할 텐데 gradle로 빌드되는 자바 프로젝트면 어떤 프로젝트라도 상관없으니 자바를 해보지 않았다면 깃허브에서 하나 끌어다 쓰길 바랍니다. 사실 개발 공부를 하면서 깃허브에게 더 친숙해져야 한다고 생각하기 때문에 이렇게 하는 것도 있습니다. Code Commit 아래와 같이 Create repository를 클릭하여 리포지토리를 만들어줍니다. 코드 커밋 리포지토리가 생성되었다면 아래와 같이 콘솔에서 생성한 리포지토리로 들어가 clone HTTPS..