0
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?

FUJITSUAdvent Calendar 2024

Day 19

App Runnerで画像生成アプリをさくっと(?)デプロイする

Last updated at Posted at 2024-12-18

はじめに

Amazon Bedrock(以下Bedrock)のStability AIのAPIを叩いて画像生成するアプリを趣味で作ってます。(仕事はインフラ系なので、その上で動いているものってどんな感じなのか知りたい)

気が向いたときに少しずつ開発を進めているのですが、フロントエンドはなかなか手が進まず、簡単なhtml書いてlocalhost立ててAPIリクエスト飛ばしてお茶を濁していました。

Advent Calendarの時期なので、API叩くコンテナイメージ作ってApp Runnerでデプロイして記事にすることにしました。

構成はこんな感じです。サーバレスサービスで組んでます。
Lambdaはいったんプロンプトをコードにベタ打ちし、Stability AIにリクエストを投げ、
生成された画像はレスポンスとして返しつつ、S3にも保管します。
image.png

バックエンドはAPI Gateway+Lambda+Bedrock+S3で作ってます。
Amazon Bedrockで画像生成&S3保存するPythonコードを書く
Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く

余談ですが、Bedrockの1年前とだいぶUI変わりましたね、以前はリスト形式でAIモデルが出てきた記憶があります。
image.png

Docker Imageを作る

とりあえずAPI Gatewayにリクエストを送るんだ…という勢いでDockerfileとapp.pyとrequirements.txtを書きました。app.pyだけ載せてみますが、今後ブラッシュアップします。

app.py
import requests
from flask import Flask, jsonify

app=Flask(__name__)

@app.route('/hoge')
def hoge():
    try:
        response = requests.get('API GatewayのリクエストURL')
        return jsonify(response.json())
    except requests.exceptions.RequestException as e:
        return jsonify({'error':str(e)}),500

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0',port=8080)

App Runnerを立てる

docker imageをECRのプライベートリポジトリにpushし、App Runner側でリポジトリを指定してアプリをデプロイします。

使ってみる

アプリにアクセスしたらこんな画面になった……画面作るのは今後の課題にします。
image.png

S3には画像が保存されていました。お題はbeautiful skyです。
beautiful sky.png

おわりに

亀の歩みというのも亀に失礼なくらいのんびりした進捗ですが、html+localhostよりは様になった…と思います。
Flaskを勉強してアプリの体裁をもうちょっと整えたいです。

0
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
0
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?