본문 바로가기

Cloud/AWS

(10)
CloudWatch로 EC2 로그 모니터링하기 목표EC2에 ssh 접속 이벤트가 발생할 때마다 CloudWatch에서 이를 모니터링하여 SNS 알림을 보내고자 한다.Ubuntu에서는 /var/log/auth.log 파일을 모니터링하여 SSH 로그인 이벤트를 감지할 수 있다. 이를 기반으로 로그 감지 데몬 + CloudWatch Agent를 설정하여 CloudWatch Logs + SNS 알림까지 연결할 계획이다. CloudWatch Logs 그룹 생성다음, CloudWatch Logs 그룹을 생성하고, CloudWatch Agent를 설정한다.나는 public key를 사용해 SSH 로그인을 하도록 설정했으므로, "Accepted publickey for"로 필터 패턴을 설정했다. 로그 그룹: EC2-SSH-Logs필터 패턴: "Accepted pu..
Amplify로 static 리소스 호스팅하기 Upload codes on Github Registry우선 Amplify에서 호스팅할 코드를 github 레지스트리에 업로드한다.my-v0-resume에 있는 코드를 올려보려고 한다. Create Amplify Application and Select 'Github' Option '다음'을 누르면 github 리포지토리 접근 권한을 얻기 위한 창이 뜨는데, 권한을 주면 된다. Add Github Repository and Branch연동해주면 자동으로 리포지토리와 브랜치 리스트가 뜬다. 업로드하고자 하는 리포지토리와 브랜치를 선택한다. Specify Application기본적으로 Amplify에서 github의 코드를 읽고 자동으로 설정 값을 넣어준다. yml 파일도 별도 수정이 필요 없다.Final ..
3-tier architecture on EC2, RDS (Vue.js+Node.js+MySQL) 본 글은 Vue.js, Node.js, MySQL 기반의 3-tier architecture를 AWS 상에 구축한 내용을 정리한 것입니다. 계정 분리 (Root / IAM User)적용: root 계정과 IAM user 계정을 분리하여 root 계정에서는 비용 현황을 모니터링하고, user 계정으로는 AWS 서비스를 기반으로 아키텍쳐를 구축하였습니다.설명: root 계정은 AWS 계정을 처음 생성할 때 사용하는 계정으로, 계정에 대한 모든 권한(결제 관리, 서비스 설정, 계정 폐쇄, 인증 관리)을 갖고있어 이 계정이 해킹되거나 악용될 시 전체 AWS 리소스가 위험에 처할 수 있습니다. 따라서 root 계졍과 IAM user 계정을 분리해 사용하는 것이 보안상 안전합니다.망분리 (Public / Priva..
AMI를 생성해 인스턴스를 복제할 수 있다. 서사 ALB 도메인으로 접속해도 구축해둔 웹서버를 통해 웹페이지가 뜨지 않아서, 모든 네트워크 설정과 라우팅 테이블, 보안 그룹을 검토했다.이것들을 검토하는데에는 위의 사진과 같은 아키텍쳐 도면에 모든 설정 값을 적어두고 흐름을 이해하면서 체크하는 것이 도움됐다.또한 아래와 같이 라우팅 테이블과 보안그룹을 한 눈에 볼 수 있도록 적어두면 내가 어떤 부분을 잘못 설정했는지 확인하기 쉽다. (물론 더 좋은 툴이 있는데 내가 아직 찾지 못한 걸 수도 있다! )  이렇게 두고 훑다보니 특정 인스턴스를 AZ2에 둬야하는데 AZ1에 할당해둔 것도 있었고, 특정 포트에 대해 아웃바운드 트래픽을 열어줘야하는데 막아두었던 것도 있었다. 확실히 도식화해서 확인하니 잘못 설정한 값들을 비교적 빠르게 파악할 수 있었다.본론본..
SA Project (5) / ALB와 AutoScaling 연동 점점 단계를 거칠수록 도면이 현실적이고 구체적으로 변해간다. 우선 AZ1 위에 LEMP 서버를 먼저 구성하고 동작여부를 확인했다. 그 다음 AZ2도 마찬가지로 적용하려했는데, 앞서 설치한 단계를 모두 다 거쳐야하는건지 궁금했다.(그럴리가 없을 것 같아서)이전 글에서 AMI를 생성해 인스턴스를 올바른 가용영역으로 다시 생성한 것 처럼, AutoScaling으로 자동생성되는 인스턴스들의 이미지도 기존에 생성해두었던 AZ1의 인스턴스로 미리 설정해둘 수 있다.ALB 생성할 때 사용할 영역 복수선택 가능하다!  최종적으로는 AutoScaling 그룹 생성 시 ALB를 부착해주면 된다.Q. 그럼 실무 개발자분들은 시작 템플릿으로 사용하기 위한 인스턴스(A)를 하나 만들고 이 템플릿으로 AutoScaling 그룹(..
SA Project (4) / ALB와 Nginx 연동 이전 글 SA Project (3) / public subnet에 NAT, ALB 생성NAT 생성- private subnet에 인터넷을 연결해줄 NAT를 각 가용영역의 public subnet에 생성해준다. - private subnet 라우팅테이블 수정하여 모든 패킷을 nat로 보내도록 한다.  인스턴스를 생성할 때, ssh 접속nolzaheo.tistory.com 이전 글에서 ALB를 생성해 private 서브넷의 인스턴스들을 가리키도록 했다. 해당 인스턴스들에는 Nginx가 WEB 서버로 동작하고있다. 따라서 ALB dns를 타고 들어온 트래픽들이 Nginx로 포워딩 되므로, 웹서버가 ALB dns 주소를 listen하도록 설정을 바꿔줘야한다. vi /etc/nginx/sites-available..
WEB 서버를 public / private 서브넷에 두는 데에는 정답이 없다. 아래와 같이 공식 문서에서도 두 가지 경우를 모두 설명하듯 개발시 고려해야 할 보안요소나 비용 측면에 따라 구성이 달라질 수 있다.예를들면, WEB server를 private 서브넷에 두는 경우 NAT를 사용해야 함에 따른 추가비용을 고려해야 한다. public subnet에 두는 경우 Example: VPC for web and database servers - Amazon Virtual Private CloudExample: VPC for web and database servers This example demonstrates how to create a VPC that you can use for a two-tier architecture in a production environment. To..
SA Project (3) / public subnet에 NAT, ALB 생성 NAT 생성- private subnet에 인터넷을 연결해줄 NAT를 각 가용영역의 public subnet에 생성해준다. - private subnet 라우팅테이블 수정하여 모든 패킷을 nat로 보내도록 한다.  인스턴스를 생성할 때, ssh 접속 시 key pair를 사용하도록 설정했었다. 따라서 이 key pair를 해당 인스턴스에 저장해줘야하는데, 이를 위해 아래와 같은 scp 명령어를 사용해 특정 디렉토리 내에 키를 저장해준다. ex) A에 저장된 key pair를 B에 전송하는 경우scp -i [B ssh 접속용 key].pem [전송대상파일 위치 of A] [수신파일저장위치 of B] 이런식으로 파일 설치 시 https 엔드포인트로도 접근하므로, 아웃바운드 규칙에 http, https 모두 ..