この記事の続きです。
前回は「明細ぶん投げくん」の作り方と解析ロジックまで紹介しました。
今回は Docker を使ってコンテナ化し、AWS で公開するまでの流れをまとめます。
実装の流れ
- Docker でアプリをコンテナ化
- AWS ECR(コンテナレジストリ) にイメージを保存
- 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) はコンテナイメージを簡単に保存、管、共有、デプロイできるコンテナレジストリです。
ECR リポジトリ作成
ECR のプライベートレポジトリを作成 ※コンソールで作業しました
- 名前:
expense-parser - イメージタグ設定:
Mutable - 暗号化設定:
AES-256
このような URI が発行されます。
`19XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/expense-parser
プッシュ
作成後に表示される プッシュ手順の案内をそのまま実行します。
プッシュコマンドを表示というボタンを押すと以下のような案内があります。
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 は、ソースコードやコンテナイメージからウェブアプリケーションに直接デプロイできるようにするサービスです。
サービス作成
App Runner でサービスを作成
- ソース
- リポジトリタイプ:
コンテナレジストリ - プロバイダー:
Amazon ECR
- リポジトリタイプ:
- コンテナイメージ:先ほど ECR で発行された URI を使います
- サービス名:
expense-parser - CPU / メモリ:お好み(最小でもOK)
- 環境変数
-
OPENAI_API_KEY(勘定科目分類に必要)
-
- ポート:8501(Docker 側と合致させる)
作成とデプロイで URL が発行されれば公開完了です。
数分でサービスが立ち上がり、
https://xxx.awsapprunner.com のような URL が払い出されます。
この URL にアクセスすれば、インターネット越しに Streamlit アプリが表示されます!




