AWS 16

AWS Lambda 에서 Timeout 시간 늘리기

API 서버를 로컬에서 개발하고 돌렸을 때, 잘 돌아가다가 serverless 에 배포한 후에 에러가 발생하는 경우가 있다. 이럴때는 AWS Lambda 에서 Timeout 시간을 수정해주어야한다. 기본으로 설정돼있는 시간은 6초이기 때문에, 서버가 충분히 잘 돌 수 있도록 20초 또는 25초 정도로 늘려줄 것이다. 1. aws lambda 로 접속하여서 제한시간을 늘리는 방법 aws lambda 로 접속하여서 현재 진행하고 프로젝트로 들어간다. ApiLambdaFunction 을 클릭한다 구성을 선택한다. 편집 선택 제한시간을 수정해준다. 수정을 한 후 서버에 sls deploy 를 하여서 서버에 재배포를 한다. 2. 코드에서 바로 제한시간을 수정하는 방법이다, serverlss.yml 파일에서 tim..

AWS 2023.01.17

AWS S3 에 이미지 업로드하기

1. S3에 버킷 생성 AWS 의 S3 에 접속하여서 버킷을 생성한다. 객체 소유권에서 ACK 활성화 선택 모든 퍼플릭 억세스 차단 해제 버킷 생성 2. 코드 작성 vs code 로 이동하여서, AWS S3 에 이미지를 업로드 하는 코드를 작성하였다. S3에 파일을 업로드 하는 라이브러리 boto3 를 설치한다. pip install boto3 노출이 되면 안되는 정보들을 config 파일에 변수로 저장하였다. from flask import request from flask_jwt_extended import jwt_required from flask_restful import Resource from mysql.connector import Error from flask_jwt_extended imp..

AWS 2023.01.12

numpy, pandas 라이브러리를 lambda layer 로 만드는 방법

serverless 에 api 를 배포할 때, requirements.txt 파일에 우리가 로컬에서 설치한 파이썬 파일의 이름을 적어줘야 한다. 근데 pandas 와 numpy 를 적고 실행을 돌리면 Internal server error 가 발생한다. 그 이유는 pandas, numpy 의 용량이 너무 크기때문이다. 따라서, pandas 와 numpy 라이브러리를 Zip 파일로 만들어서 lambda layers 로 만들 것이다. numpy, pandas 라이브러리를 lambda layer 로 만드는 방법이다. 1. putty 로 ec2 에 접속한다. 2. 파이썬이 없으면, 먼저 아나콘다 설치 3. 람다의 환경이 파이썬 3.9 이므로, ec2 환경에 새로운 가상환경을 만든다 가상환경명은 lambda39 ..

AWS 2023.01.11

Flask API 를 lambda ( 서버리스 ) 에 배포하는 방법

이번 게시글 내용은 전에 작성한 글과 이어진다. https://yu1129.tistory.com/147 [Serverless] AWS 에서 IAM 을 이용하여 API 배포하기 AWS AWS - IAM - 사용자로 이동한다. 사용자 추가를 클릭하여서, 사용자 이름과 aws 자격 증명 유형 선택을 억세스 키 - 프로그래밍 방식 억세스로 선택을 해주고 다음으로 넘어간다. 권한 설정에서 yu1129.tistory.com 내가 만든 Flask 의 API 를 aws 에 배포하는 방법이다. 1. serverless.com 에서 서버리스 앱을 생성한다. https://www.serverless.com/ Serverless: Develop & Monitor Apps On AWS Lambda Easily develop a..

AWS 2023.01.11

[Serverless] AWS 에서 IAM 을 이용하여 API 배포하기

AWS AWS - IAM - 사용자로 이동한다. 사용자 추가를 클릭하여서, 사용자 이름과 aws 자격 증명 유형 선택을 억세스 키 - 프로그래밍 방식 억세스로 선택을 해주고 다음으로 넘어간다. 권한 설정에서 기존 정책 직접 연결을 클릭하여서 정책이름을 추가해준다. 아래처럼 총 7개를 추가하였다. 다음 버튼을 클릭하면 아래처럼 사용자 생성이 성공된다. 생성된 csv 파일을 다운로드 해서 잘 보관해둔다. node.js 설치 aws 에 배포하기 위해 아래 페이지로 접속하여 serverless framework 인 node.js 를 설치한다. https://nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript..

AWS 2023.01.10

AWS EC2 - 리눅스(linux) 운영체제에서 한글 사용하기 (한글 깨짐)

대시보드 streamlit 을 AWS EC2 서버에 배포하였을 때, 차트가 한글이 깨져서 나타나는 현상이 발생했다. 이럴때는 리눅스 서버에서 한글을 출력할 수 있도록, 폰트를 깔고 matplotlib 에 한글 폰트를 추가해주어야 한다. 나눔 폰트 다운로드 하기 폰트 관리 유틸리티 설치 // CentOS(EC2) 계열 sudo yum install fontconfig // Debian(Ubuntu)계열 sudo apt install fontconfig 네이버 나눔 폰트 다운로드 후 압출 풀기 진행 curl -o nanumfont.zip http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip sudo unzip -d /usr/share/fo..

AWS 2022.12.22

Github Actions 을 이용한 CI/CD

Github Actions 은 Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. CI/CD 는 지속적 통합 ( Continuous integration ) 과 지속적 배포 ( Continuous delivery ) 를 의미한다. Github Actions 을 설정하는 방법이다. 먼저 윈도우즈 사용자라면, EC2에 접속할 .pem 파일을 해야한다. 만약 윈도우즈에서 .ppk 파일로 사용중이였다면 putty key generator 툴을 이용하여서 .pem 파일로 변환을 해주어야 한다. 1. putty key generator 툴을 실행 시킨 후, 기존 ppk 파일을 load 2. Conversions 메뉴 선택 - Export Open SSH 선택후 파일명.pem 형식..

AWS 2022.12.20

하나의 EC2 서버에 여러개의 앱을 돌리는 방법

ec2 서버에 하나의 앱을 돌리면 아래처럼 명령어를 입력하면 된다. 8501 포트로 자동실행이 된다. $ nohup streamlit run 파일명 & 하나의 서버에 여러개의 앱을 돌리는 방법은 포트를 지정해주는 것이다. 아래처럼 포트번호를 직접 지정해주면, 하나의 서버에 여러개의 앱을 돌릴 수 있다 $ nohup streamlit run 파일명.py --server.port 8501 & $ nohup streamlit run 파일명.py --server.port 8502 & $ nohup streamlit run 파일명.py --server.port 8503 &

AWS 2022.12.16

AWS 방화벽에 8501 등의 포트 추가하기

AWS 방화벽에 8501 등의 포트 추가하기 streamlit 을 aws ec2 서버에서 실행시키고, 사이트에 연결을 하면 아래처럼 사이트에 연결할 수 없음.이 뜬다. 그 이유는 방화벽으로 막혀있기 때문이다. aws 페이지로 가서 포트번호를 허용해주어야한다 aws - EC2 -보안그룹을 클릭하여서 인바운드 규칙 편집을 해준다. 새로운 규칙 추가를 해서 streamlit 의 포트 번호를 적어준다. 사용자는 anywhere 로 해주고, 규칙 저장을 하면 이제 다시 웹페이지 연결이 된다.

AWS 2022.12.15

스트림릿을 ec2 서버에서 실행시킬때, 터미널 접속을 끊어도 24시간 365일 돌아가도록 하는 방법

스트림릿을 ec2 서버에서 실행시킬때, 터미널 접속을 끊어도 24시간 365일 돌아가도록 하는 방법이다. 먼저 puTTY 를 실행시킨 후, 이전에 저장해둔 session 을 load 한 후 open 을 하면 리눅스 터미널이 열린다. login as 에 ec2-user 를 작성하면 로그인이 된다. 기존에 streamlit 을 실행시킬 때는 streamlit run 파일명 형태로 작성하였다. 위 형태로 작성을 하면, 터미널을 닫으면 streamlit 연결도 끊기게 된다. 터미널 접속을 끊어도 계속 돌아가게 하려면, $ nohub streamlit run 파일명 & 을 작성해주면 된다. 그러면, 터미널 접속을 끊어도 스트림릿은 계속 돌아가게 된다. 돌아가는 프로세스 확인을 할 때는, 터미널에 아래의 코드를 작..

AWS 2022.12.14