WebAPI作成に挑戦(2)「WebAPIとしてデプロイ」

概要

QRコードを発行するWebAPIをデプロイし、Power Automateのカスタムコネクタから接続します。全3回を予定しています。

  1. 「QRコードを発行するAPIをつくってみる」
  2. 「WebAPIとしてデプロイ」<-今回の記事
  3. 「Power Automateカスタムコネクタから接続」

2回目はQRコードを発行するAPIをDeta Microsというサービスにデプロイします。 Sample QR API

DetaFastAPIのDocsページに紹介されているサービスです。

DetaのIntroから引用

Intro#

Deta is a free cloud crafted with the developer and user experience at heart.

It is our mission to dramatically reduce the gap between ideas and working cloud applications.

Why is Deta Cloud free for ever?#

We want anyone, at any age from anywhere in the world to experiment and build their ideas without worrying about limits of credit cards.

とあるように開発者が費用を気にすることなくさまざまな試みを行えるようです。(メモリや容量などに制限はある)

DetaはMicros、Base、Driveの3つのサービスが利用できます。

  • MicrosはNodeやPythonのアプリをデプロイできます
  • Baseは使いやすいAPIを利用できるデータベースです
  • Driveは10Gまでイメージやファイルを保存できるクラウドストレージです

今回は、Microsを使用します。 前回作ったAPIをデプロイしたあと、APIキーを設定までを行います。FastAPIのドキュメント「Detaにデプロイ」に沿って進め、プラスαとしてAPIキーの設定を行います。

環境

  • Visual Studio Code 1.66.2
  • deta-cli v1.3.0-beta arm64-darwin
  • Python 3.9.12
  • FastAPI 0.75.2
  • qrcode 7.3.1
  • Pillow 9.1.0
  • uvicorn 0.17.6
  • Power Apps 開発者プログラム (今回は使いません)
  • Power Automate 試用ライセンス(今回は使いません)

注意事項

  • 前提条件としてVisual Studio Codeと各種機能拡張、Pythonのインストールが必要です。
  • デプロイ先はFastAPIのチュートリアルにあるDetaを利用します。
  • Detaで利用できるPythonのバージョンは3.7、3.8、3.9となっています。
  • 「QRコード」はデンソーウェーブの登録商標です。
  • 仕様についてはデンソーウェーブのHPを参考にしてください。
  • これまでWebAPIを利用することはあっても作ったことはなかったので、学習した備忘録です。
  • 自己責任でお願いいたします。
  • 2022年5月の情報です。

デプロイ用フォルダーを構成する

作業フォルダーの中にdeploy_qrcode(任意の名前)フォルダーを作成し、前回つくったmain.pyを移動させます。

deploy_qrcodeのなかにrequirements.txtを作成し、デプロイに必要なライブラリーを記述します。今回必要になるのは次の3つです。

fastapi
qrcode
Pillow

アカウント取得

DetaトップページのJoin Detaからアカウント取得します。

アカウント取得後ログインするとダッシュボードが表示されます。

まずはログインできている状態にします。

CLIのインストール

Visual Studio Codeのターミナルでコマンドを実行しました。

Macの場合、zshでインストールコマンドを実行しました。

curl -fsSL https://get.deta.dev/cli.sh | sh

Windowsの場合、ターミナルをPowerShellにしてインストールコマンドを実行します。

iwr https://get.deta.dev/cli.ps1 -useb | iex

インストール後ターミナルを一度閉じて、新たに開き直す必要があります。

Detaにデプロイしてみる

deploy_qrcodeフォルダーに移動します。 cd ./deploy_qrcode

deta loginとコマンドを実行すると、ブラウザに切替りログインが行われます。

Visual Studio Codeに戻るとログインした状態になっているのでdeta newとデプロイコマンドを実行します。

これでデプロイされライブラリーのインストールが行われます。1分弱で終了しました。 https://b3z3xa.deta.dev/にデプロイされ、デフォルトで"http_auth": “disabled"に設定されているようです。 なおドメイン名は管理画面の設定から独自のものに設定可能です。

ダッシュボードからもデプロイ完了しているのが確認できます。

発行されたURLにアクセスしてみます。

作成したコードはqr_wordを必須にしているためエラーが返ってきます。 自動作成されたWeb APIのDocsにアクセスします。

うまくいっているようなのでこのまま試してみます。😀

GETを展開してTry it outからqr_wordに入力しExecuteで実行します。

execute

ローカル環境で変更があった場合deta deployコマンドで更新できます。

APIキーを設定する

DetaのDocsAPI Keysを参考にすすめます。 デプロイしたフォルダーにいるのを確認してからdeta auth enableを実行します。

http authをonにした後APIキーを設定します。 deta auth create-api-key --name first_key --desc "api key for agent 1"

キーの名前と説明文を記入できます。今回はdeta auth create-api-key --name qrcode_api --desc "my first api"として入力しました。

api_keyをメモします。次回Power Automateのカスタムコネクタから使用します。

ブラウザからhttps://b3z3xa.deta.dev/docsにアクセスし確認します。

保護されているのが確認できました。

まとめ

わずか数分でDetaにWebAPIとしてデプロイし、APIキーを設定することができました。画像サイズが大きくならないように、入力値の範囲を狭くしたものを別途作成しました。興味ある方はお試しください。 Sample QR API 次回はPower Automateのカスタムコネクタを使用して作成したWebAPIに接続します。