본문 바로가기

반응형

AWS

(54)
[Lambda] AWS에서 발생하는 Event를 Slack으로 알림 받기 Account 내에서 IAM User 생성 및 삭제가 발생할 경우 관리자에게 Slack 메시지를 보내는 방법에 대해서 정리하였다. Slack Message 포매팅 및 전반적으로 수정할 부분이 많지만 처음으로 Slack과의 Message 연동을 한 과정이기 때문에 점차 개선되는 과정을 별도로 정리해볼 예정이다. AWS와 같은 Public Cloud는 모두 API CALL에 의해 동작이 수행되고 감시된다. ⇒ Security Group의 변경, 삭제, 생성은 물론 EC2, RDS, .. 모든 이벤트가 감시된다. 이런 Event가 발생하면 해당 Event 내용을 Lambda로 Trigger하고 Lambda에서 Event를 받아 내용을 Parsing 한 다음에 Slack API를 사용하여 Message를 보낼 ..
[IAM] A 계정의 IAM 유저 리스트를 B 계정의 Lambda에서 조회하기 (Cross account - STS Assume role) 동일 계정내에서 A 리소스 → B 리소스에 접근하기 위해서는 고려할 사항이 적지만 멀티 어카운트에서는 고려해야 할 사항이 늘어나게 된다. A계정에서 B계정을 신임해야 하며, B 계정에서도 A 계정을 신임해야 한다. ⇒ STS: Assume Role에 대해 이해해야 함 A 계정 : 1111111111 B 계정 : 2222222222 이라고 가정하겠음 A 계정 Role 1. A 계정의 IAM User, 각각 IAM User들의 Access Key를 확인하도록 허용해주는 Policy 추가 { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListIAMUserandListAccessKeys", "Action": [ "iam:ListUsers", "iam:Lis..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #6 - CodePipeline 설정 및 Blue/Green 배포 자동화 1. CodeDeploy에서 Target Group 및 기타 수정 아래의 편집 클릭 대상 그룹을 tg-B로 변경 코드 디플로이가 수행되고 Green 타겟 그룹에서 정상 트래픽 헬스 체크를 감지할 경우 Blue에서 Green으로 즉시 트래픽을 라우팅하며, Blue는 5분 동안 컨테이너를 남겨놓는다. 배포에 실패하는 경우 롤백하도록 롤백 설정 2. CodePipeline 생성 파이프라인 이름 설정 서비스 역할의 경우 기존에 생성해둔게 있으면 기존 서비스 역할 사용해도 무방하며, 없을 경우 새 서비스 역할을 생성해준다. 아티팩트를 저장할 위치를 지정해도 되고 기본 위치로 설정해도 된다. 소스 스테이지 추가 CodePipeline을 통해 소스 변경을 감지한다. 빌드 스테이지 추가 기 생성해준 CodeBuild로..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #5 - CodeBuild 생성 및 빌드, Fargate 배포 1. CodeBuild 생성 프로젝트 이름, 소스 등을 설정 어떤 환경에서 빌드를 할 것인지 설정 추가 구성 클릭 후 추가 구성하기 제한 시간, VPC 설정, 서브넷 설정, 보안 그룹 설정 등을 할 수 있으며 환경 변수를 buildspec.yml 에서뿐만 아니라 웹 콘솔에서도 가능하다. AccountID는 웹콘솔에 지정해보았음 Buildspec.yml 파일이 어디 있는지, Artifact는 어느 S3의 버킷에 저장되는지 등을 설정할 수 있다. CodeBuild가 지니고 있는 IAM Role에 권한 추가 - CloudWatch Logs 관련 권한 - SecretManager 관련 권한 - ECR 관련 권한 2. Build 수행 빌드 시작을 누르면 빌드를 수행할 수 있다. 빌드 로그 또한 실시간으로 확인할 ..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #4 - buildspec.yml, appspec.yml, taskdef.json 설정 해당 부분에서는 Secret 설정 및 변수 설정 등을 진행하며, appspec.yml과 buildspec.yml, taskdef.json 파일 생성 등에 대해 다룰 것이다. Git에서 형상 변화가 일어나면 CodePipeline이 이를 감지하고, Build → Deploy 까지 배포 자동화 프로세스를 구현하기 위해 스크립트 파일을 잘 작성해야 한다. 또한 생성한 컨테이너 이미지나 빌드 아티팩트들이 S3 혹은 Container Registry에 저장될 수 있도록 Buildspec.yml에서 잘 설정해주어야 한다. 1. Secrets Manager 생성 간단하게 APP_NAME 및 ECR_REPOSITORY_URI 시크릿을 생성해준다. 그 외, 데이터베이스의 암호 등을 이 시크릿 매니저를 통해 설정해 줄 수..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #3 - 테라폼으로 인프라 기본 환경 프로비저닝 Terraform을 활용하여 간단한 인프라 환경을 프로비저닝 하였다. 기본적인 VPC, Security Groups, ECS Cluster, Application Load Balancer, Blue-Green을 위한 Target Group A, B 등을 생성하였다. Dev, Stg, Prd 등 각 환경마다 설정을 다르게 하고 싶다면 env 디렉터리에 각각 설정값을 저장한 tfvars 파일 생성 후 각 Workspace에서 terraform 명령을 수행하면 된다. 예를 들어, Dev 환경 인프라를 만든 후 STG 환경을 만들고싶다면 VPC 대역, ENV 이름 등을 겹치지 않게 수정 후 별도 Workspace에서 terraform init, .. 등을 수행하면 된다. Code Build, Deploy, Pi..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #2 - 도커 빌드 및 테스트 배포 간단하게 Local에서 docker가 정상 작동하는지 확인해 볼 예정이다. ❯ cat server.js 'use strict'; const express = require('express'); // Variables const PORT = 8080; const HOST = '0.0.0.0'; // Application const app = express(); app.get('/', (req, res) => { res.send("Hello world " + process.env.HELLO + " v1"); }); app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`) ❯ cat Dockerfile FROM node:12 WORKDI..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #1 - 개요, 아키텍처 개요 간단한 Hello world를 출력하는 Node.js Express 애플리케이션을 Code Pipeline으로 CI/CD 파이프라인 구성을 해볼것이다. 1. IAM IAM이 필요한 서비스로는 Code Pipeline, Code Deploy, Code Build, S3, EC2, ECS 등이 있다. 이에 대한 접근 권한을 각각 알맞게 부여해주어야 한다. API Endpoint 접근 → API Action 권한 2가지 모두 허용이 되어야 한다. 만약 VPC 내부에서만 접근이 가능한 서비스라면 내부용 엔드포인트 서비스를 사용해야 할 것이며 그게 아니라면 Endpoint에 대해서는 걱정하지 않아도 될 것이다. 하지만 API Action에 대해서는 고려해봐야 한다. 특정 서비스에 Endpoint로 접근은 했..

반응형