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

More than 1 year has passed since last update.

Streamlit をAzure App Serviceで動かす時のAPI Keyの置き場所

Last updated at Posted at 2023-09-21

最近、エンジニア職じゃないのに生成AIのデモアプリをChatGPTに聞きながら、Streamlitで作る、というのにハマっています。本当に楽しい、いい時代になりました!

ただ、StreamlitってCommunity Cloudで共有するのはとても簡単なんですが、プライベートなレポジトリからは1つしかアプリを作れなくて、2つやりたいんですよ、と思っても有料プランがない。デモアプリをそれぞれ違うお客さん向けに作っておきたいなー、というとき、いきなり不便です。

そしたら、Azure App Serviceで動かせますよ、という記事がQiitaにあって、初めてAzure App Serviceを使いましたが、その手順通りにしたら、かなり手軽にできました。
Streamlit を Azure App Serviceで動かす!

記事を書いてくださったマイクロソフトの方、ありがとうございます!

簡単なんではありますが、生成AIのAPIを使ったデモアプリを作るにあたり、私が個人的にどうやるのかわからず、はまったことがあるので、書いておきます。

APIキーはどこに置くの?

APIキーはどこに置くのでしょうか?色々な方法があるとは思いますが、上記の手順書で、"アプケーション設定にSCM_DO_BUILD_DURING_DEPLOYMENTというKEYを作り、値にtrueまたは1をセットします。最後に保存ボタンをクリックすることをお忘れなく。"という作業があります。この作業と同じように、アプリケーション設定でAPIキーの変数名と、API Keyの値を格納しておくことができます。

こんな感じ。
image.png

アプリケーション設定へのAPIキーの書き込み方

で、この時、APIキーの値は、クォーテーションマークなどでは囲みません。そのまま書き込みます。ローカルに置いた.envファイルからコピっていた私は最初、ここでつまづきました。つまり、こんな感じです。

  • ダメな例: "apikeyの文字列です"
  • 良い例: apikeyの文字列です

APIキーの呼び出し方

アプリ側でのAPIキーの呼び出し方は、こんな感じです。ローカルに置いた.envファイルからの呼び出しとは書き方が少し違うと思います。

your_api_key = os.environ['YOUR_API_KEY']

簡単なパスワード認証のかけ方

ちなみに、元の記事には、Azure Active Directoryでの認証の付け方が書かれていました。しかし、もっと簡単にpwを一個だけ設定しておくようにしたいのだよな、というときもあると思います。その際も、上と同じやり方で、Azure App Serviceのアプリケーション設定にパスワードを入れておき、同じやり方で取り出して使うことができます。

あとは、Streamlit公式のやり方に沿って作ります。公式の内容は、Streamlit Communiy Cloudを使う前提になっているので、st.secrets["password"]としていますが、これを上と同じようにos.envison["password"]とするだけで、Azure App Serviceのアプリケーション設定に格納したパスワードに変えることができます。

おしまいです。それでは!

参考文献

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