라벨이 Python인 게시물 표시

koyeb(heroku 대체제) 으로 flask 배포하기

이미지
## koyeb 선택 이유 2015년부터 잘 쓰던 heroku(무료 플랜)가 곧 무료 플랜을 종료한다고 해서 대체제를 찾아봤다. fly.io, render.com 등을 확인해봤는데 fly.io 는 카드를 등록해야해서 탈락. render.com 는 괜찮은 것 같았는데 가격 대비 서비스가 미세하게나마 koyeb이 좋아서 선택. CPU 1 / RAM 512 / SSD 5G 가 무료라고 되어 있다. 정확히는 5달러를 주고 저 플랜을 5.4달러에 제공해서 0.4달러를 내야하는 것 같은데... 아래 이미지처럼 되어 있어서 일단 한 달 써보려고 한다. 0.4달러를 내야하면 render.com 로 가면 되니. 배포하는 방법은 별 것 없어서 쓸데없는 말이 길어졌다. ## 배포 방법 아래 이미지대로 쭉 따라하면 된다. 먼저 create app 을 누르고, gunicorn 을 사용하기 때문에 **run command** 에 `gunicorn app:app` 을 작성했다. 만약 python version 을 고정하고 싶다면 추가 작업이 필요하다. `root` directory 에 `runtime.txt` 파일을 추가하고 `python-3.9.15` 라고 명시하면 된다. 해당 작업을 하지 않으면 koyeb이 알아서 파이썬 버전을 정해서 빌드한다. 배포는 이렇게하면 끝이다. 적고 나니까 render.com 도 올려 봐야겠다는 생각이 든다. 뭐가 더 간단하려나.

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...