라벨이 AWS인 게시물 표시

AWS CloudWatch와 AWS Lambda를 활용해 AWS EC2 실행, 중지 될 때마다 Slack 메세지 받기(How to receive Slack message using AWS CloudWatch and AWS Lambda when AWS EC2 state is changed)

## AWS CloudWatch와 AWS Lambda를 활용해 AWS EC2 실행, 중지 될 때마다 Slack 메세지 받기(How to receive Slack message using AWS CloudWatch and AWS Lambda when AWS EC2 state is changed) [이 글](https://ghkdgh2365.blogspot.com/2020/12/aws-lambda-aws-cloudwatch-aws-rds-how.html)을 쓴 김에 쓰는 글입니다. AWS EC2 상태가 변경(실행 또는 중지 등)할 때마다 슬랙으로 메세지를 받는 방법에 대해서 작성합니다. 순서는 아래와 같습니다. 1. Slack 설정 2. AWS Lambda 설정 3. AWS CloudWatch 설정 ### 1. Slack 설정 [해당 페이지](http://ghkdgh2365.blogspot.com/2020/12/aws-lambda-aws-cloudwatch-aws-rds-how.html) 1. Slack 설정과 같습니다. ### 2. AWS Lambda 설정 AWS Lambda 에 가서 **함수 생성** 버튼을 클릭하고 **함수 이름**을 적은 뒤 함수를 생성합니다. 저의 경우 **런타임**(사용할 프로그래밍 언어)은 **Python 2.7**로 했습니다. 생성한 뒤 **함수 코드**는 아래와 같이 작성합니다. `'YOUR SLACK URL'` 자리에 Slack 설정 시 확인했던 **Webhook URL** 을 복사해서 붙여넣어주면 됩니다. ``` # -*- coding: utf-8 -*- import json, random import httplib from botocore.vendored import requests def lambda_handler(event, context): slack_url = 'https://hooks.slack.com/services/TBF4TQCQ4/B01GABAKDSP/i...

Amazon RDS 이벤트 알림 규칙(Feat. AWS CloudWatch, Amazon EventBridge)(Amazon RDS event notification rules)

## Amazon RDS 이벤트 알림 규칙(Feat. AWS CloudWatch, Amazon EventBridge)(Amazon RDS event notification rules) AWS Lambda 와 함께 AWS CloudWatch, Amazon EventBridge의 RDS 상태 변경과 관련된 규칙을 사용하고 싶을 때 아래와 같이 설정하면 됩니다. [해당 페이지](https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.html)에서 더 자세히 확인하실 수 있습니다. #### RDS Cluster가 중지됐을 때 ``` { "source": [ "aws.rds" ], "detail-type": [ "RDS DB Cluster Event" ], "detail": { "EventID": [ "RDS-EVENT-0150" ], "EventCategories": [ "notification" ], "SourceType": [ "CLUSTER" ], "SourceArn": [ "arn:aws:rds:ap-northeast-2:xxxxxxxxxxx" # 해당 RDS cluster 의 arn ], "SourceIdentifier": [ "xxxxxxxx" # 해당 RDS cluster 의 DB 식별자 ] } } ``` #### RDS Cluster가 시작됐을 때 ``` { "source": [ "aws.rds...

AWS Lambda와 AWS CloudWatch 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받기(How to receive slack message using AWS Lambda and AWS CloudWatch when AWS RDS is started or stopped)

이미지
## AWS Lambda와 AWS CloudWatch 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받기(How to receive slack message using AWS Lambda and AWS CloudWatch when AWS RDS is started or stopped) AWS Lambda와 CloudWatchAWS 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받는 방법을 소개하려고 합니다. ~~(AWS RDS는 비싸니깐요?)~~ 여기서 가장 중요한 부분은 **AWS CloudWatch 이벤트 생성 규칙**입니다. 따라서 가장 마지막에 적겠습니다. ~~(왜..?)~~ 순서는 다음과 같습니다. 1. Slack 설정 2. AWS Lambda 설정 3. AWS CloudWatch 설정 ### 1. Slack 설정 slack에 들어가 Apps 옆에 있는 **+** 버튼을 클릭합니다. 그 다음 검색창에 **incoming-webhook** 을 검색해 들어간 후 **Add**를 누르고, 새 창이 열리면 **Add to slack** 이라는 버튼을 클릭합니다. 그 다음 메시지를 받기 원하는 채널을 선택한 후 **Add Incoming WebHooks integration** 버튼을 선택하면 끝납니다. 새 페이지에서 **Webhook URL**에 적혀져 있는 링크만 복사해서 보관하고 있으면 끝. 혹시 메시지 알려주는 봇? 의 이름을 바꿔주고 싶다면 조금 더 아래로 내려가서 **Customize Name**을 바꿔주면 됩니다. 그 아래 **Icon** 도 바꾸실 수 있습니다. ### 2. AWS Lambda 설정 AWS Lambda 에 가서 **함수 생성** 버튼을 클릭하고 **함수 이름**을 적은 뒤 함수를 생성합니다. 저의 경우 **런타임**(사용할 프로그래밍 언어)은 **Python 2.7**로 했습니다. 생성한 뒤 **함수 코드**는 아래와 같이 작성합니다. `'YOU...

AWS Lambda + CloudWatch 를 이용해 주기적으로 AWS EC2 중지, 시작하는 방법(How to stop and start AWS EC2 periodically using AWS Lambda + CloudWatch)

## AWS Lambda + CloudWatch 를 이용해 주기적으로 AWS EC2 중지, 시작하는 방법(How to stop and start AWS EC2 periodically using AWS Lambda + CloudWatch) [해당 글](https://ghkdgh2365.blogspot.com/2020/12/aws-lambda-cloudwatch-aws-rds-how-to.html)을 쓴 김에 쓰는 글입니다. ### AWS Lambda + CloudWatch 설정 먼저 크게 1. AWS Lambda 설정 2. IAM 정책 설정, 3. CloudWatch 설정 순으로 나눠서 설정해보자. #### 1. AWS Lambda 설정 AWS 계정은 있다고 가정하고, AWS에 로그인하고 들어가 서비스에서 **AWS Lambda** 를 클릭한다. 그 다음 **함수 생성**을 클릭. **새로 작성** 을 선택하고(그대로 두고) **함수 이름** 을 작성합니다. 런타임(사용할 언어)의 경우 여기선, Python 2.7로 하겠습니다. 그리고 **권한**은 그대로 **기본 Lambda 권한을 가진 새 역할 생성** 으로 두고 **함수 생성**을 클릭합니다. 생성이 되면 생성된 함수에 들어가 코드를 삽입합니다. **함수 코드**는 다음과 같이 삽입합니다. 아래의 코드는 EC2를 중지하는 코드입니다. ``` import boto3 region = 'ap-northeast-2' # EC2가 존재하는 region instances = ['i-0dd344443184503fa'] # EC2 Instance id def lambda_handler(event, context): ec2 = boto3.client('rds', region_name=region) ec2.stop_instances(InstanceIds=instances) print 'stopped your EC2...

AWS Lambda + CloudWatch 를 이용해 주기적으로 AWS RDS 중지, 시작하는 방법(How to stop and start AWS RDS periodically using AWS Lambda + CloudWatch)

이미지
## AWS Lambda + CloudWatch 를 이용해 주기적으로 AWS RDS 중지, 시작하는 방법(How to stop and start AWS RDS periodically using AWS Lambda + CloudWatch) 가끔씩 사용하는 **AWS EC2 + RDS** 가 있다. 그래서 평소에는 중지해놓고, 필요할 때만 실행시키고 싶은데 **RDS** 가 문제다. 왜 그런지는 모르겠는데~~(AWS가 돈을 많이 벌고 싶어서 인 것 같은데... 왜 그런지 아시는 분은 알려주세요...)~~ 중지 후 7일마다 스스로 시작이 된다. 그래서 깜빡하고 나면 비싸도 너무 비싼 RDS 요금이 왕창 나온다. 그래서 매 주 미리 알림을 맞춰놓고, 콘솔에 들어가 중지를 하는데 가끔씩 까먹기도 하고, 너무 귀찮기도 해서 나를 대신할 방법을 찾아봤다. 크게 방법이 2가지 있는데, 아래와 같다. 1. [AWS Instance Scheduler](https://aws.amazon.com/ko/solutions/implementations/instance-scheduler/) 를 이용하는 방법 2. AWS Lambda + CloudWatch 를 이용하는 방법 그런데 검색해보니 1번 방법은 적어도 5달러 이상 나올 것 같아서, 2번 방법으로 시도해봤다.~~(내 돈은 아니지만 5달러도 아까ㅇ...)~~ 서두가 길었는데, 이제 AWS Lambda + CloudWatch 를 이용해 주기적으로 AWS RDS 중지, 시작하는 방법을 알아보자. ### AWS Lambda + CloudWatch 설정 먼저 크게 1. AWS Lambda 설정 2. IAM 정책 설정, 3. CloudWatch 설정 순으로 나눠서 설정해보자. #### 1. AWS Lambda 설정 AWS 계정은 있다고 가정하고, AWS에 로그인하고 들어가 서비스에서 **AWS Lambda** 를 클릭한다. 그 다음 **함수 생성**을 클릭. **새로 작성** 을 선택하고(그대...

AWS EC2 ubuntu 18.04 에 Python3, pip3, opencv, requests 설치 방법(How to install Python3, pip3, opencv, requests in AWS EC2 ubuntu 18.04)

## AWS EC2 ubuntu 18.04 에 Python3, pip3, opencv, requests 설치 방법 2020년 5월경 만든 AWS EC2 ubuntu 18.04에 Python3, pip3, opencv-python, requests를 설치해봤습니다. 기본적으로 Python2.7.17, Python3.6.9가 깔려있었습니다. 버전 확인은 아래와 같이 합니다. ``` python -V ``` Python3의 경우엔 ``` python3 -V ``` `pip3` 설치는 아래와 같이 합니다. ``` sudo apt-get install python3-pip ``` `pip3`을 정상적으로 설치되었으면, 아래와 같이 `opencv-python`를 설치합니다. ``` pip3 install opencv-python ``` opencv-python 설치 도중, `ModuleNotFoundError: No module named 'skbuild'` 라는 오류가 났습니다. 검색 후 아래와 같은 해결 방법으로 해결했습니다. ``` pip3 install --upgrade pip ``` 그 다음 아래와 같은 명령어로 설치가 되었는지 확인합니다. ``` python3 -c "import cv2; print(cv2.__version__)" ``` 만약 오류가 나는 경우, apt로 python3-opencv 설치를 해줍니다 ``` sudo apt update sudo apt install python3-opencv ``` 그 다음 다시 확인해보면 설치된 버전을 확인할 수 있습니다. `requests` 의 경우엔 아래와 같이 설치하는데 이미 깔려있다고 알려줍니다. ``` pip3 install requests ``` #### 참고 사이트 https://yuddomack.tistory.com/entry/%EC%B2%98%EC%9D%8C%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%9...

크론탭을 이용한 리눅스 서버 용량 줄이기(How to solve linux server disk problem by using crontab)

리눅스 서버 용량이 자꾸 늘어 서버에 오류가 발생하는 경우가 생겼습니다. 이에 대한 해결 방법을 작성합니다. 먼저 `df -h` 리눅스 명령어를 이용해 파일 시스템 별 디스크 용량을 확인해봅니다. ``` Filesystem Size Used Avail Use% Mounted on udev 971M 0 971M 0% /dev tmpfs 199M 776K 198M 1% /run /dev/xvda1 7.7G 7.6G 0.1G 99% / tmpfs 993M 0 993M 0% /dev/ tmpfs 5.0M 0 5.0M 0% /run/ tmpfs 993M 0 993M 0% /sys/ /dev/loop0 18M 18M 0 100% /dev/loop1 94M 94M 0 100% /snap/ /dev/loop2 94M 94M 0 100% /snap/ tmpfs 199M 0 199M 0% /run/ ``` 그 다음, root 위치에서부터 어떤 디렉토리에서 사용량이 많은지 확인해나갑니다. 현재 디렉토리에서 디스크 사용량 상위 10개를 확인해보는 명령어입니다. ``` du -hsx * | sort -rh | head -n 10 ``` 그 결과, 대부분이 로그 파일 용량이 문제임을 확인했습니다. 로그 파일의 경우 파일크기가 지속적으로 증가하기 때문에, 주기적으로 로그 파일 용량을 줄여주기로 했습니다. 리눅스 crontab 을 이용해 주기적으로 로그 파일 용량을 줄여주도록 합니다. 먼저, crontab으로 실행시킬 shell 파일을 생성합니다. ``` vi delete_log_file.sh ``` 만든 파일에 다음과 같이 입력합니다. ``` #!/bin/bash truncate --size 0 파...

AWS 요금 폭탄

  ## AWS 요금 폭탄 AWS 청구서를 보고 멘붕이 왔다. 테스트용으로 $533.17가 사용됐다. 실서버도 아닌데 말이다.... 다 내 무지에서, 안일함에서 나온 비용이다. 해킹을 당한게 아니라 오로지 내가 무지해서 나온 비용임으로 어디에 하소연할 곳도 없다. 하지만, '소잃고 외양간이라도 고쳐야지'라는 심정으로 글을 적어본다. 서울 리전과 도쿄 리전, 두 개 리전에서 동일하게 EC2, RDS, Route53, Elastic IP, VPC를 사용했다. 한 개 리전 비용의 2배가 총 비용이 되겠다. 리전 1개에 대하여 되짚어보자. 가장 많이 비용이 나온 것은 RDS다. RDS를 맨 처음 생성할 때 default 값이 db.r5.large 였는데 이게 그렇게 비싼 db인지 모르고 아무 생각 없이 만들었던게 문제였다. 기본적으로 RDS 요금은 세 가지 항목으로 구성되어 요금이 책정된다. 중지해놓지 않고 사용 중일 때 나가는 instance 요금과 중지해도 과금되는 storage 요금, I/O Request에 따른 요금이다. 테스트용이였기 때문에, storage나 I/O Request에 따른 요금은 2달러 내외였다. 문제는 instance 요금. 이게 거의 $240달러가 나왔다. 테스트용이었기 때문에, 테스트 안할 때는 껐어야 했다. 그리고 db.r5.large만큼 큰 db가 아니라 t2.small, t2.medium 정도로 했어야했다. 그랬으면 이런 불상사가 없었을텐데. 다음으로 많이 나온 것은 EC2다. 3개의 instance를 사용했는데, 1개는 t2.medium, 1개는 t2.small, 1개는 VPC용 t2.nano 였다. 이건 켜놓지 않아도 비용이 들기 때문에, 사용하지 않는 경우에는 AMI를 이용해 이미지를 생성해놓고 필요할 때 꺼내서 사용했어야 했다. 하지만 그렇게 하지 않아 $24가 청구 됐다. 마지막으로 사전에 얼만큼 필요한지, 요금은 얼마인지 알아봐야했다. 그리고 조직에 연결되어있는 AWS여서 결제에 대한 aler...

AWS Educate Pathways - Solutions Architect(1)

이미지
AWS Educate Pathways는 직무마다 필요한 지식을 제공하는 곳. 지인의 추천으로 Solutions Architect 직무에 대한 공부를 시작하려고 한다. 기본적으로 대학교 메일이 있으면 무료로 진행할 수 있다. 언어는 한국어, 영어 모두 있긴한데 사실상 영어로 듣는거라고 생각하는게 좋다. (참고자료 같은 것이 다 영어자료이기 때문) 나는 한국어 코스로 한 번, 영어 코스로 한 번 들어보고자 한다. Solutions Architect 는 고객의 요구사항에 맞춰 최적의 기술 솔루션(비즈니스용 클라우드 인프라)을 제안하고, 클라우드를 교육하고, 엔지니어팀과 협업하는 직무라고 설명한다. 학습목표는 아래와 같다. 스크립팅 언어, 소프트웨어 개발 아키텍처, 효율적인 DevOps 전략, 데이터베이스, 윈도우, 리눅스, 가상화, 네트워크 등 상당히 다양한 부문의 지식을 필요로 한다. 자 그럼 시작해보자.

Start AWS Cloud9 (3) - Start Ruby on rails(AWS c9 시작하기 - 루비 온 레일즈 시작하기)

이미지
Start AWS Cloud9 (3) - Start Ruby on rails(AWS c9 시작하기 - 루비 온 레일즈 시작하기) Start AWS Cloud9 (3) - Start Ruby on rails(AWS c9 시작하기 - 루비 온 레일즈 시작하기) 클라우드 개발 환경이 만들어졌으면 ruby on rails 로 개발을 하는 방법에 대해 알아보자 Start Ruby on rails 기본적으로 ruby(2.4.1) 와 rails(ver 5.1.4), sqlite3(ver 3.7.17)가 깔려있다. 확인해주자 루비 버전 체크 명령어 ruby -v sqlite3 버전 체크 명령어 sqlite3 --version 레일즈 버전 체크 명령어 rails --version 확인이 끝났으면 새로운 레일즈 프로젝트를 만들어준다. 새로운 레일즈 프로젝트 만드는 명령어 rails new projectName 그러면 아래 그림과 같이 필요한 파일, 폴더들을 알아서 만들어준다 ! 다 만들어졌으면 만들어진 폴더에 들어가는 명령어를 입력한다. cd projectName 그 다음 서버를 켜서 제대로 레일즈가 동작하는지 확인하기 위해 콘솔창 옆에 + 버튼을 눌러서 New Run Configuration 을 클릭한다. 그 다음 오른쪽에 CWD를 눌러 만든 폴더로 위치시킨 후 SELECT 버튼을 누른다. 그 다음 Command 창에 rails s를 쓰고 엔터 친다. 그 다음 Preview 버튼을 누르고 Preview Running Application 버튼을 클릭한다. 그 다음 맨 오른쪽에 네모 버튼을 누르면 레일즈가 제대로 작동하는 것을 확인할 수 있다. 앞으로 해당 브라우저에서 우리의 작업물을 실시간으로 확인할 수 있다. 참고로 아래 콘솔창이 꺼졌을 경우 당황하지말고 view 를 클릭해서 console 을 클릭하면 다시 켜진다 :) 이제 AWS c9 에서 Ruby on rails...

Start AWS Cloud9 (2) - Create environment (AWS c9 시작하기 - 클라우드 개발 환경 만들기)

이미지
가장 중요한 돈에 대한 설정이 끝났으니 개발 환경을 만들려고 한다. 기본적으로 작업을 한 결과물을 EC2를 이용해 확인할 수 있다. 그리고 원한다면 EC2를 계속 켜두어 상시 접속할 수 있는 페이지를 만들 수 있다. 이 부분은 간단한 작업이니 빠르고 간단하게 글을 쓰고 마치려고 한다. How to create environment 이름 옆에 있는 지역을 자신이 있는 지역과 가장 가까운 지역으로 설정한다. 그 다음 create environment 클릭 ! Environment 의 Name을 설정해준다. 기본으로 설정되어있는 그대로 놔두고 Next step 을 클릭 ! 만약 설정을 바꾸고싶다면 바꿔도 됨 ! 설정 내용을 확인하고 Create environment 클릭! 그러면 내가 설정한 개발 환경이 하나 만들어진다. Open IDE 를 클릭하게 되면 아래와 같은 화면이 나옴 ! 끝! 이제 하나의 개발할 수 있는 새로운 컴퓨터가 하나 생겼다고 생각하면 편하다. 더 좋은 방법이 있거나 제가 쓴 글의 오류가 있다면 언제든지 코멘트해주시면 감사하겠습니다 :)

Start AWS Cloud9 (1) - Set Billing Management, Alarm, CloudWatch (AWS c9 시작하기 - AWS 결제, 알람 설정)

이미지
처음 코딩을 시작했을 때 Cloud9(c9)으로 시작했다. 클라우드 환경이라서 언제, 어디서나, 어떤 컴퓨터에서 코딩할 수 있는 환경을 쉽게 만들어주어서 편리했다. 특히 컴맹, 초보자인 나에게는 더욱 더 편리했다. 하지만 그 c9이 이제는 AWS에 인수합병(?)이 되어서 기존의 c9은 기존 사용자만 사용할 수 있고(언제까지 사용할 수 있는지 모르겠다) 새롭게 c9을 사용하고자 하는 사람들은 AWS c9 을 사용하여야한다. 그래서 더 좋은 대안이 나오기 전까지는 AWS c9으로 코딩을 해보려고 한다. AWS c9을 이용하기 위해서 AWS 계정 필요하다. AWS 계정을 가입할 때 특이사항은 신용카드를 등록해야하고 카드를 등록하게 되면 1달러가 결제가 된다. 하지만 그 결제된 1달러는 카드 확인용으로써 다시 입금된다고 하니 걱정하지마시길. 가입이 완료되었으면 AWS c9을 사용하기 전에 가장 걱정이 되는 돈!에 대한 설정을 먼저 해주려고한다. 가입 후 1년간 무료이지만 무료로 제공하는 서비스 범위를 넘게 되면 과금이 되고 또 1년이 지나면 과금이 되니 불안함을 제거하기 위해서 설정을 해주는 것이 좋다. 방법은 아래와 같다. 매우 쉽다. How to set AWS billing alarm (AWS 알람 설정하는 방법) 먼저 AWS cloud9에 접속합니다. 로그인 후 오른쪽 상단에 있는 "계정이름" 버튼을 클릭하고 "내 계정 대시보드"를 클릭합니다. 왼쪽 네브바에 있는 항목 중 "기본 설정" 클릭! "프리티어 사용량 알림 수신" 에 체크해주시고 알림을 어느 이메일에서 받을지 "이메일 주소"를 적어주세요. 그리고 아래에 "결제 알림 받기" 를 체크 ! 마지막으로 꼭 "기본 설정 저장"을 클릭해주세요. 다음으로는 조금 더 자세한 알림 설정을 위해서 ...