오늘은 Github Actions를 이용하여 Github Repository에 새로운 코드가 push 되었을 때 ECS 서비스에 코드를 반영하는 워크플로를 만들어봅시다. 1. AWS 리소스 준비 Fargate를 사용하는 ECS Service와 ALB를 같이 준비합니다. Go 애플리케이션은 /v1/color에 접속하면 Red, Green, Yellow를 랜덤으로 반환하게 합니다. Docker Image를 생성하기 위해 Dockerfile을 작성합니다. 이미지를 가볍게 하기 위해 Multi Stage Build를 사용합니다. 빌드 후 실행파일을 Alpine으로 보내 애플리케이션을 실행합니다. FROM public.ecr.aws/docker/library/golang:alpine AS builder WORKD..
GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼입니다. GitHub Actions는 DevOps 이상의 기능을 제공하며 저장소에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있게 해 줍니다. GitHub는 워크플로를 실행하기 위한 Linux, Windows 및 macOS 가상 머신을 제공하며, 자체 데이터 센터 또는 클라우드 인프라에서 자체 호스팅 실행기를 호스팅 할 수도 있습니다. 오늘은 Github Actions와 CodeDeploy를 이용하여 Github Repository에 새로운 코드가 push 되었을 때 EC2 서버에 코드를 반영하는 워크플로를 만들어봅시다. 1. AWS 리소스 준비 Amazon Linux를 사용하는 EC2 Instance..
EC2 인스턴스가 SSH Brute-force 공격을 받을 때 관리자들은 빠르게 대처해야 합니다. 오늘은 SSH 활동 로그를 CloudWatch Logs에 기록한 뒤, CloudWatch Alarm으로 공격을 감지하여 SNS로 이메일에 알리는 서비스를 구축해 봅시다. 1. 인스턴스 준비 Amazon Linux AMI를 사용하며 SSH 액세스가 가능한 EC2 인스턴스를 생성합니다. EC2 인스턴스가 CloudWatch에 접근할 수 있도록 IAM Role 하나를 생성합니다. CloudWatchAgentServerPolicy를 가져야 합니다. IAM Role을 EC2 Instance와 연결합니다. Amazon Linux 2023은 SSH 활동 로그를 생성하는 Rsyslog가 없기 때문에 설치해줘야 합니다. A..
Amazon ECR은 어디서나 애플리케이션 이미지 및 아티팩트를 안정적으로 배포할 수 있도록 뛰어난 성능 호스팅을 제공하는 완전관리형 컨테이너 레지스트리입니다. ECR은 EKS, ECS 등 컨테이너 서비스에 사용됩니다. 오늘은 ECR Repository를 생성하고, Golang Gin 이미지를 push합시다. 1. 준비 ECR > Repositories에서 Create repository를 누릅니다. Visibility settings에서 Private을 선택하고, Repository의 이름을 지정합니다. 나머지 설정은 놔두고, Create repository를 눌러 Repository를 생성합니다. AmazonEC2ContainerRegistryPowerUser Policy를 가진 IAM Role을 생..
Amazon Managed Service for Apache Flink를 사용하면 스트림 처리 애플리케이션을 쉽게 구축하고 Apache Flink를 통해 스트리밍 데이터를 실시간으로 분석할 수 있습니다. 그 중 Studio notebooks를 사용하면 Apache Zeppelin 기반 노트북을 통해 스트리밍 데이터를 인터랙티브하게 분석할 수 있습니다. Apache Zeppelin은 데이터 시각화, 데이터를 파일로 내보내기, 더 쉬운 분석을 위해 출력 형식 제어 등의 기능을 포함한 분석 도구를 제공하기도 합니다. 오늘은 Studio notebooks를 사용하여 Kinesis Data Stream으로 들어오는 데이터를 분석해봅시다. 1. 준비 스트리밍 데이터를 수집할 Kinesis Data Stream을 생..
Amazon Athena는 표준 SQL을 사용하여 Amazon S3에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다. Athena는 S3에 저장된 비정형, 반정형 및 정형 데이터를 분석하는데 도움을 주며 인프라를 관리할 필요 없이 S3 데이터에 대해 대화형 쿼리를 쉽게 실행할 수 있습니다. AWS Glue Data Catalog 및 다른 AWS 서비스들과 통합되는 것 또한 장점입니다. 오늘은 S3에 있는 데이터로 Athena에서 Table을 생성하고, SQL로 몇 가지 쿼리를 실행해봅시다. 1. Table 생성 Amazon Athena 콘솔로 접속합니다. Create > S3 bucket data를 누릅니다. Table의 이름을 작성합니다. 새로운 Database를 생성하거나, G..
RDS Database에 접속할 때 암호를 사용해도 되지만, IAM 인증을 사용해도 됩니다. IAM 인증에서는 RDS가 생성하는 인증 토큰을 사용하며 각 토큰의 수명은 15분입니다. SSL 또는 TLS를 사용하여 DB 인스턴스에 대한 연결을 암호화합니다. 오늘은 EC2 Instance에서 RDS MySQL Instance로 IAM 인증을 사용하여 접속해봅시다. 1. 준비 RDS Database를 생성할 때나 Database Modify를 통해 IAM database authentication 옵션에 체크합니다. EC2와 연결되는 IAM Role에 다음과 같은 Policy가 있어야 합니다. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "A..
Kinesis Data Stream으로 로그를 전송하는 기본적인 방법은 Kinesis Agent를 이용하는 것입니다. Kinesis Agent는 Kinesis Data Stream이나 Kinesis Data Firehose에 데이터를 전송할 수 있으며 CloudWatch Metrics로 지표도 보낼 수 있습니다. 1. 준비 Kinesis Data Stream 하나를 생성합니다. 데이터를 확인하기 위해 Kinesis Data Firehose까지 생성해도 좋습니다. 로그를 생성할 EC2 Instance(Amazon Linux) 하나를 생성합니다. EC2 Instance가 사용하는 IAM Role에 다음과 같은 Policy가 있어야 합니다. { "Version": "2012-10-17", "Statement"..