AWS EC2 인스턴스에서 Flask 애플리케이션을 실행시키면서 발생할 수 있는 문제와 그 해결 방법

연수김·2023년 3월 14일
0

flask

목록 보기
1/1

최근 ChatGPT를 slack-bot으로 만들고 싶어 flask 애플리케이션을 aws ec2 인스턴스에 실행해 보려고한다. flask로 한 이유는 python json 파싱에 익숙하기 때문이다..(java에서 json 파싱은 욕만 나온다,,,언어 숙련도 이슈;;)

spring boot 애플리케이션을 배포한 것처럼 똑같이 하면 될줄 알았는데 몇가지 문제들이 있었다. AWS EC2 인스턴스에서 Flask 애플리케이션을 실행시키는 경우, 발생하는 문제들에 대해 알아보겠다.

1. 포트가 열려있지 않은 경우

AWS EC2 인스턴스에서 Flask 애플리케이션을 실행시키려면, 먼저 포트가 열려있어야 한다. 기본적으로 EC2 인스턴스는 모든 포트가 닫혀 있다. 따라서, 포트를 열어주어야 한다.

AWS 관리 콘솔에서 EC2 인스턴스를 선택하고, 보안 그룹 설정을 수정함으로서 해결할 수 있다. 인바운드 규칙을 추가하여 해당 포트를 열어준다. 이때, flask 애플리케이션은 default로 5000번 포트를 사용하므로 포트를 5000으로 지정하여 열어준다.

2. 로컬 루프백 주소로 실행된 경우

이번 포스팅에서 문제가 되었던 부분이다.
Flask 애플리케이션을 실행시킬 때, 로컬 루프백 주소를 사용하여 실행시킨 경우, 해당 애플리케이션은 로컬 머신에서만 접근이 가능하다. 다른 컴퓨터나 네트워크에서 접근하려면, 호스트를 변경해주어야 한다.

위 사진을 보면 5000번 포트가 로컬 루프백 주소(127.0.0.1)를 사용하여 실행된 것을 알 수 있다.

Flask 애플리케이션을 실행시킬 때, app.run() 메서드를 호출할 때 host와 port 매개변수를 지정해줄 수 있다. host 매개변수를 0.0.0.0으로 설정하면, 모든 IP 주소에서 접근 가능하게 된다.

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

host를 바꾸자 0.0.0.0:5000 으로 실행시킨다. 0.0.0.0은 다른 모든 네트워크에서 접속할 수 있기 때문에 위험하지만 토이프로젝트니까,,,,ㅎㅎㅎㅎ

3. Flask 애플리케이션이 실행 중이지 않은 경우

Flask 애플리케이션이 실행 중이지 않은 경우, 해당 애플리케이션에 접근할 수 없다. 현재 백그라운드에서 실행 중이지 않기 때문에, 변경 사항이 생기면 애플리케이션을 종료해야한다. 이는 빠른 시일내에 CI/CD를 적용하여 해결할 것이다.


이렇게 하고 나서 api 요청을 보내면

성공!!!

profile
연수돼지

0개의 댓글