【初心者向け】Azure FunctionsでPythonを実行する(HTTP Trigger)

前回、Azure Functionsの開発環境の準備からTimer Triggerを簡単に動かすところまでを実施しました。

【初心者向け】Azure FunctionsでPythonを実行する(Timer Trigger)
Azure FunctionsでPythonを実行するための初心者向けのガイドを行います。 開発するために必要な事前準備や、処理の実装を行う箇所や注意点等をわかりやすく整理しています。

続いてHTTP Triggerを試してみます。

機能は少し薄いですが、HTTP TriggerではAzure Functions単体でAPI公開が可能です。

Pythonコード開発

前回の記事の最後から開始します。

HTTP Triggerの追加

「WORKSPACE」の「Local Project」で⚡のマークを押します。

トリガー追加

HTTP Triggerを選択します。

HTTP Trigger

既にある「function_app.py」の中にHTTP Triggerを追加するので、「Add http Trigger function to an existing file」を選択します。既存ファイルへの追加

作成する関数名を指定します。
特にこだわりが無ければデフォルトでOKです。

関数名

承認レベルは「ANONIMOUS」とします。

承認レベル

自動でHTTP Triggerを「function_app.py」に追加してくれます。
関数追加

処理実装

作成されている「function_app.py」の中に処理を実装していくことになります。
赤枠の部分に実装していきましょう。

処理実装

注意@app.routeが、HTTP実行をつかさどる部分になりますので、この行は削除NGです。
URLのパスを変更したい等あれば、この部分の「route=」の部分変更しましょう。

とりあえず動かすだけなので、処理内容は変えずこのまま動作テストしてみます。

Timer Triggerの部分はあっても問題ありませんが、不要であれば削除するかコメントアウトしてしまいましょう。

HTTP Triggerを使うにはStorage Accountが必要になるのですが、ローカルPC環境にはないので、「Azurite」で代替します。

VSCode上で「Ctrl + Shift + p」でコマンドパレットを起動して、「Azurite: Start」を実行しましょう。

Azurite起動

Azuriteが起動したら、VSCodeでコマンドプロンプトのターミナルを起動して以下のコマンドを実行しましょう。
正常に起動するとローカル環境でAPIが起動します。
<blockquote>
<div class=”line number7 index6 alt2″ data-bidi-marker=”true”><code class=”java string”>func start</code></div></blockquote>

Functionsテスト実行

表示されたURLにアクセスすると正常に応答返ってきます。
デフォルトで書かれている処理は、クエリパラメータのnameをもとに動的に内容を変えてくれます。
表示されたURLに「?name=hogehoge」を追加してアクセスしてみましょう。

ローカルアクセス

Azure Functionsデプロイ

メニューからAzureのマークに移動して、「ACCOUNTS & TENANTS」で「Singn in to Azure…」を押下しましょう。

Azureサインイン

MicroSoftのログイン画面が表示されますので、デプロイ先のAzureアカウントのユーザーでログインしましょう。

ログイン画面

ログインできたら、「WORKSPACE」の「Local Project」で雲のマークを押します。

Deploy開始

既にAzure Functionsは作成済みなので、リストに出てきたFunctionsを指定します。

Functions指定

正常に完了したら、デプロイ先のAzure Functionsにコードがデプロイされています。

デプロイ完了

 

実行確認

実際にAPIが公開されているかを確認してみましょう。
デプロイされた「http_trigger」を押下します。

デプロイ完了

「関数のURLの取得」を押下すると公開されているAPIのURLが表示されます。

関数URLの取得

ローカルでテストしたときと同様にブラウザからアクセスしてみましょう。

アクセステスト

これでAzure FunctionsをHTTP Triggerで実装完了です。

IPアドレス制限

このままでは全世界公開されており、誰でもアクセスできてしまうのでよろしくありません。

Azure Functionsだけでも簡単な接続元制限はできますので、かけておきましょう。

メニューの「設定」から「ネットワーク」に遷移します。

ネットワーク設定

「受信トラフィックの構成」で「公衆ネットワークアクセス」のリンクを押下しましょう。
デフォルトだと「アクセス制限なしで有効」になっていると思います。

公衆ネットワーク

「選択した仮想ネットワークとIPアドレスから有効」で「一致しないルールのアクション」は「拒否」にして、
「追加」を押下します。

アクセス制限設定

必須入力の箇所を入力して、「規則の追加」を行いましょう。
「IPアドレスブロック」の箇所が許可される通信元になります。

設定画面

最後に忘れずに「保存」を押下しましょう。
このまま画面遷移すると設定が消えてしまいます。

設定保存

これで設定したIPアドレス以外からの通信は拒否されて以下のような画面になります。

アクセスブロック

まとめ

Azure FunctionsでHTTP Triggerを開発してみました。

まずは簡単な動作検証のみなので、中身は何も作りこんでいない状況ですが、
デプロイしてすぐにHTTPSのAPIが公開されました。

接続元IPの制限もできますので、
後は中の処理を作りこめば処理はかなり柔軟にできそうです。

APIとしてはバージョン管理やスロットリング、APIキー等の機能が薄いので、
がっつりAPI基盤として扱うには物足りないかもしれません。

その場合は、Azure API Managementと組み合わせることを検討してみるのがよさそうですね。

著者について

インフラエンジニアからクラウドエンジニアへ。
主にAWS環境の構築を担当。少しずつAzureを勉強中。

前田光太朗をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Azure)は、Azureを最大限活用するためのオールインワンサービスです。40年以上の様々なシステム構築・運用実績で得た業界理解と、Azure構築ナレッジを強みに、クラウドへの移行から運用までトータルでサポートし、お客様のAzure活用を実現します。

Azureクラウド
シェアする
タイトルとURLをコピーしました