1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Streamlit アプリをコンテナ化して AWS App Runner で公開するまでの最短構成

Posted at

この記事の続きです。

前回は「明細ぶん投げくん」の作り方と解析ロジックまで紹介しました。
今回は Docker を使ってコンテナ化し、AWS で公開するまでの流れをまとめます。

実装の流れ

  1. Docker でアプリをコンテナ化
  2. AWS ECR(コンテナレジストリ) にイメージを保存
  3. AWS App Runner で公開(URL 発行)

AWS には ECS や Lambda など多数の選択肢がありますが、App Runner はコンテナイメージをそのまま指定するだけで公開可能なので、そのあたりが実感できれば良いと思います。


技術スタックのおさらい

分類 技術 / サービス
フロントエンド / UI Streamlit
バックエンド Python 3.11
AI / 学習 OpenAI API(openai ≥ 1.0.0)
コンテナ化 Docker
デプロイ AWS App Runner、Amazon ECR

コンテナ化とデプロイをこの記事では紹介します。

1. Docker

Dockerfile

FROM python:3.11
WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .
EXPOSE 8501

CMD ["sh", "-c", "streamlit run app.py --server.address=0.0.0.0 --server.port=${PORT:-8501}"]

  • --server.address=0.0.0.0 で外部アクセスを有効化
  • ${PORT:-8501} でクラウド側のポート指定にも対応

ローカルで確認

docker build -t expense-parser .
docker run -p 8501:8501 --env-file .env expense-parser

ブラウザで http://localhost:8501 を開き、動作を確認します。

2. ECR(コンテナレジストリ)への登録

ECR (Elastic Container Registry) はコンテナイメージを簡単に保存、管、共有、デプロイできるコンテナレジストリです。

image.png

ECR リポジトリ作成

ECR のプライベートレポジトリを作成 ※コンソールで作業しました

  • 名前:expense-parser
  • イメージタグ設定:Mutable
  • 暗号化設定:AES-256

このような URI が発行されます。
`19XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/expense-parser

プッシュ

作成後に表示される プッシュ手順の案内をそのまま実行します。
プッシュコマンドを表示というボタンを押すと以下のような案内があります。

image.png

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 19XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com

docker build -t expense-parser .

docker tag expense-parser:latest 19XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/expense-parser:latest

docker push 19XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/expense-parser:latest

AWS CLI を使っています。

ECR のイメージ一覧に expense-parser:latest が出ていれば成功です。

3. App Runner で公開

AWS App Runner は、ソースコードやコンテナイメージからウェブアプリケーションに直接デプロイできるようにするサービスです。

image.png

サービス作成

App Runner でサービスを作成

  • ソース
    • リポジトリタイプ:コンテナレジストリ
    • プロバイダー:Amazon ECR
  • コンテナイメージ:先ほど ECR で発行された URI を使います

image.png

  • サービス名:expense-parser
  • CPU / メモリ:お好み(最小でもOK)
  • 環境変数
    • OPENAI_API_KEY(勘定科目分類に必要)
  • ポート:8501(Docker 側と合致させる)

作成とデプロイで URL が発行されれば公開完了です。
数分でサービスが立ち上がり、
https://xxx.awsapprunner.com のような URL が払い出されます。
この URL にアクセスすれば、インターネット越しに Streamlit アプリが表示されます!

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?