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:18

2. AWS Cloud 9

  1. Provisioning
    1. 시스템OS, 자원, 할당등 Windows, Linux, Ubuntu… Memory, CPU…
  2. Python library 설치 (java, js, c# 모든 언어 가능)
    1. 기본 제공한 Python 버전이 정해져 있음
    2. dJango, Flask, FastAPI 등의 library 설치 WebService 제공
  3. WebService App 실행 (참고)
    1. flask 의 경고문구 (wsgi) 개발, dev 용으로만 사용
  4. Network 설정
    1. cloud 에서 실행한 웹 서비스에 대한 접근 설정
    2. inbound port 설정 8080, 8081, 8082 는 열려있음.

출처 AWS

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