On the journey of
[AWS 사전공인교육] 2. AWS Cloud9 - Hello World API 및 실행 본문
Experiences & Study/AWS
[AWS 사전공인교육] 2. AWS Cloud9 - Hello World API 및 실행
dlrpskdi 2023. 9. 16. 17:182. AWS Cloud 9
- Provisioning
- 시스템OS, 자원, 할당등 Windows, Linux, Ubuntu… Memory, CPU…
- Python library 설치 (java, js, c# 모든 언어 가능)
- 기본 제공한 Python 버전이 정해져 있음
- dJango, Flask, FastAPI 등의 library 설치 WebService 제공
- WebService App 실행 (참고)
- flask 의 경고문구 (wsgi) 개발, dev 용으로만 사용
- Network 설정
- cloud 에서 실행한 웹 서비스에 대한 접근 설정
- inbound port 설정 8080, 8081, 8082 는 열려있음.
2-1. AWS Cloud9 - Hello World API
- AWS → Cloud9 → Create environment
- form 입력 후 Create
그 후, 하단 terminal 에서 (shell 언어 기준) 아래와 같이 코드를 작성해준다.
pip install flask
- root 경로에 main.py 생성 후 아래 코드 작성
모든 코드의 기본은 Hello World이므로, 폴더명은 HelloWorldTest로 지어줬다. 즉 root 경로는 이 폴더가 되는 것이며, main.py가 생성되면 .py인 만큼 파이썬으로 아래와 같이 코드를 작성해준다.
#Main.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "hello~\n"
@app.route("/hello/<name>")
def hello_world(name):
return f"hello~, {name}!\n"
if __name__ == '__main__':
app.run()
작성 후 shell로 돌아와서
python main.py
작성 후 실행해주면 된다.
그 외 (Flask 및 port, Requirements)
WSGI : flask 는 테스트를 위한 개발용 WSGI 서버 자체를 내장하고 있음
- 외부에서 접근 가능하도록 host 를 0.0.0.0 으로 설정
- port 변경 가능 (아래 코드 참조)
app.run(host="0.0.0.0", port="8080")
-
- AWS → EC2
- 좌측 메뉴 : 인스턴스 → 인스턴스 목록에서 ID클릭 → 하단 보안 탭 → 보안그룹 클릭
- 인바운드 규칙 편집 → 규칙 추가 → 아래와 같이 입력 후 → 규칙 저장
- 좌측 메뉴 : 인스턴스 → 인스턴스 목록에서 체크
- 퍼블릭 IPv4 주소 복사 ( 또는 퍼블릭 IPv4 DNS 복사 )
- 브라우저에서
- http://{복사한 ip}:8080
- http://{복사한 ip}:8080/hello/aws 접속하면 실행되는 것 확인 가능!
Requirements
생각보다 버전이 맞지 않아서 발생하는 오류가 꽤-나 많아서 정리해보는 requirements (txt 파일로 정리해서 사용하면 굿!)
- pip 사용
$ pip install flask
$ pip install numpy
$ pip install boto3 Pillow streamlit
- 아래와 같은 상황 발생 가능
- streamlit → gradio
- Flask → FastAPI
- Pillow 안쓰게 됨
- pip uninstall … (삭제 후 재설치 시 사용)
- 다른 서버에 구성 시 pip 로 전부 설치해야 함
- 올바른 requirements.txt는 버전을 명시해야 한다
#bash 상에서 pip install -r requirements.txt 실행
#아래는 requirements.txt : 업데이트 시 버전은 계속 바뀐다.
streamlit==1.20.0
numpy==1.21.6
opencv-python-headless==4.5.1.48
boto3==1.26.107
Pillow==9.5.0
flask==2.2.3
'Experiences & Study > AWS' 카테고리의 다른 글
[AWS 사전공인교육] Streamlit 활용하기 (2) (1) | 2023.10.07 |
---|---|
[AWS 사전공인교육] Streamlit 활용하기 (1) (1) | 2023.10.04 |
[AWS 사전공인교육] 10-1.Crawling 기본코드 정리 (0) | 2023.09.28 |
[AWS 사전공인교육] 3. Lambda ~ 3.1 Hello World API (0) | 2023.09.19 |
[AWS 사전공인교육] 1. Cloud와 Serverless (0) | 2023.09.16 |