Skip to content

Repository files navigation

EC2 Signal Lab — Streamlit on AWS Learner Lab

브라우저 입력이 EC2 터미널 로그로 이어지는 장면을 증명하는 오픈소스소프트웨어실습 3 프로젝트

제출자 학번 실행 파일 공개 저장소
안하람 2023612016 app.py ahnharam/streamlit-ec2-practice

이 저장소는 AWS Learner Lab의 EC2 인스턴스에서 Streamlit 앱을 포그라운드로 실행하고, 외부 브라우저에서 앱을 조작하는 동안 EC2 터미널에 구조화된 로그가 출력되는 모습을 촬영하기 위한 과제 프로젝트입니다.

과제 핵심 구현

  • 학번·이름·과제명이 보이는 첫 화면
  • 텍스트 입력, 선택 상자, 슬라이더, 버튼과 결과 출력
  • 다음 실습의 FastAPI 연동을 염두에 둔 입력 → 요청 → 결과 흐름
  • 모든 Streamlit rerun의 page_render 터미널 로그
  • 버튼 클릭 시 별도의 button_clicked 터미널 로그
  • 사용자 입력 원문 대신 길이만 기록하여 로그 노출 최소화
  • EC2 환경·호스트명·포트 상태 카드
  • 영상 필수 요소를 확인하는 4단계 체크리스트
  • Amazon Linux 2023과 Ubuntu용 배포 스크립트
  • Streamlit AppTest 및 GitHub Actions

터미널 로그 예시:

[EC2-DEMO] {"event": "page_render", "environment": "AWS Learner Lab EC2", ...}
[EC2-DEMO] {"event": "button_clicked", "confidence": 8, "topic": "Streamlit on EC2", ...}

로컬 실행

Python 3.10 이상이 필요합니다.

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
streamlit run app.py

브라우저에서 http://localhost:8501을 엽니다.

EC2 빠른 실행

AWS Learner Lab에서 EC2 인스턴스를 준비하고 연결한 뒤 터미널에서 실행합니다.

git clone --depth 1 --branch main https://github.com/ahnharam/streamlit-ec2-practice.git
cd streamlit-ec2-practice

bash scripts/bootstrap_host.sh
bash deploy_ec2.sh

deploy_ec2.sh는 가상환경 생성, 고정 의존성 설치, EC2 환경 표시 및 Streamlit 실행을 담당합니다. 프로세스를 포그라운드로 유지하므로 브라우저 조작 때 발생하는 로그를 바로 촬영할 수 있습니다.

외부 브라우저 주소:

http://<현재-EC2-Public-IPv4>:8501

실제 주소는 공개 README에 적지 않고 영상의 브라우저 주소창에서 보여 줍니다. EC2 중지·재시작 후 일반 Public IPv4가 바뀔 수 있으므로 촬영 직전에 다시 확인하세요.

자세한 인스턴스·보안 그룹·접속 절차는 EC2 배포 안내를 따릅니다.

보안 그룹 원칙

  • SSH 22: 브라우저 EC2 Instance Connect를 쓰면 해당 리전의 AWS 관리형 EIC prefix list, 로컬 SSH를 쓰면 My IP (/32)
  • Streamlit 8501: 촬영할 컴퓨터의 My IP (/32)
  • SSH 220.0.0.0/0에 공개하지 않음
  • 8501도 기본적으로 전체 공개하지 않고, 현재 촬영 IP만 허용
  • .pem, .ppk, .key, .env, secrets.toml은 Git에서 제외

영상 촬영

데모 영상 대본에 다음 흐름을 준비했습니다.

  1. EC2 Public IPv4와 브라우저 주소창 표시
  2. EC2 터미널에서 bash deploy_ec2.sh 포그라운드 실행
  3. 브라우저에서 입력·선택·슬라이더 조작
  4. 결과 버튼 클릭
  5. 앱 성공 메시지와 터미널의 button_clicked 로그 동시 확인
  6. 공개 GitHub 저장소 확인

일부 공개 YouTube 주소는 공개 README에 게시하지 않고 KLAS 제출란에만 입력합니다.

테스트

python -m pip install -r requirements-dev.txt
python -m pytest -q

실행 중인 EC2 내부 상태 확인은 두 번째 터미널에서 다음을 실행합니다.

bash scripts/healthcheck.sh

성공 시 [HEALTHCHECK] ok가 출력됩니다.

구조

streamlit-ec2-practice/
├─ app.py                         # Streamlit 앱과 stdout 이벤트 로그
├─ deploy_ec2.sh                  # 포그라운드 배포·실행 진입점
├─ scripts/
│  ├─ bootstrap_host.sh           # AL2023/Ubuntu 패키지 준비
│  └─ healthcheck.sh              # 로컬 Streamlit 상태 점검
├─ docs/
│  ├─ EC2_DEPLOYMENT.md           # Learner Lab 배포 절차
│  ├─ DEMO_SCRIPT.md              # 필수 영상 촬영 대본
│  └─ SUBMISSION_CHECKLIST.md      # 최종 제출 체크리스트
├─ tests/test_app.py              # Streamlit UI 스모크 테스트
├─ .streamlit/config.toml         # 0.0.0.0:8501, headless 설정
├─ .github/workflows/tests.yml    # 자동 테스트
├─ .gitignore
├─ requirements.txt
└─ requirements-dev.txt

공식 참고 자료

라이선스

이 프로젝트는 MIT License로 공개합니다.

About

Streamlit app deployed on AWS Learner Lab EC2 for OSS practice

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages