【備忘録・随時更新】AzureFunctionsのあれこれ
1. はじめに
この記事は、前回の備忘録にて書けなかった事柄について
書いていきます。
項目は以下の通りです。
また、この記事は随時更新予定です。
節 | タイトル | 内容 |
---|---|---|
2 | API Manaegment と統合 | AzureFunctions をドメインを付与した URL で実行可能にする |
3 | Azure Identity の利用 | 他のリソースへのアクセスを許可する |
2. API Managementと統合
この説では、API Management を利用して、作成した AzureFunctions のHttpTrigger
の利便性を高くします。
2.1 Azure FunctionsのHttpTriggerの不十分な点
API Management を作成する前に、 AzureFunctions のHttpTrigger
では不十分な点について説明します。
それは、AzureFunctions で発行される URL にあります。
Azure Functions のGet function URL
から取得した URL を以下に示します。
以下に示す URL はAzureFunctions の名前がドメインの一部になっており、
AzureFunctions を別の名前に変更する必要に迫られた場合、
利用している箇所の全ての URL を変更する必要があります。
自分が対応可能な範囲ならば問題は小さいかもですが、
この URL を展開していて他の開発者にも変更を迫るのは仕様上あまり良くないです。
加えて、実行を制限するキーとなるcode=***
の***
の部分は同じ FunctionApp 内の AzureFunctions ごとに異なり、
管理する上でもコスト高になります。
https://gsy0911-function.azurewebsites.net/api/tech/qiita?code=***
2.2 API Managementの作成
AzureFunctions の不十分な点は以下の2点でした。
- AzureFunctions の名前がドメインの一部になっており、変更に弱い
-
code
が AzureFunctions ごとに異なり管理のコストが高い
これらの問題点を解決するために、API Management
を作成・利用します。
Basics
にて設定するのは名前などの項目です。
Pricing tier
はDeveloper
を設定していますが、それでも月額5000円程度
は勝手にかかるので
利用していない場合は削除するようにするのが良いです。
Monitoring
は Application Insights へログを出力するかどうかの設定で、 On にします。
Managed identity
の項目も On にします。
それ以外の項目は、デフォルトでいきます。
最後までいったらCreate
ボタンを押下します。
作成の完了まで、地味に時間がかかります。
2.3 AzureFunctionsの統合
API Management が作成されたら、早速 Function App の登録をします。
APIs
・Function App
の順に押下します。
すると、下のようなポップアップが出てくるので、Browse
を押下します。
一見わかりにくいですが、Configure required settings
のボタンを押下します。
すると、右側から新しいタブが出てくるので、追加したい AzureFunctions が含まれる FunctionApp を選択します。
Function App の名前にgsy0911-function
が、そして、 AzureFunction にhttp_trigger
の項目が追加されています。
さらに、HTTP methods
にはPOST
が、URL template
にはtech/qiita
があります。
いずれの項目も前回の記事にて設定した項目です。
ここまでできたら、画面左下(下の写真には写ってないです)のSelect
を押下します。
すると、選択した Functions App が設定されていることがわかります。
ここで、以下の内容は変更できます。
項目 | 値 |
---|---|
Display name | API Management にて表示される値 |
Name | 特に意味はなさそう |
API URL suffix |
重要:Base URL の後ろに/ から付与される値 |
特に気にならなければデフォルトのままで大丈夫ですが、
API URL suffix
は重要なので慎重に考えた方が良いです。
写真のようにgsy0911-function
のままだと付与される URL はhttps://apim-gsy0911.azure-api.net/gsy0911-function/tech/qiita
になります。
空文字列も指定できるため、普段使いの場合は何も入力しない方が良さそうです。
何も入力しない場合は、https://apim-gsy0911.azure-api.net/tech/qiita
になります。
こうして無事に Function App と API Management を統合できました。
Test
タブを押下し、http_trigger
を選択すると、右画面の下の方に API の呼び方と、 Key が発行されます。
Python からこの API の呼び方は以下の通りです。
import requests
URL = "https://apim-gsy0911.azure-api.net/gsy0911-function/tech/qiita"
SUBSCRIPTION_KEY = "****"
payload = {
"name": "taro"
}
headers = {
"Ocp-Apim-Subscription-Key": SUBSCRIPTION_KEY
}
response = requests.post(URL, json=payload, headers=headers)
print(response)
curl
を利用する場合は次のようになります。
$ curl -X POST -H "Content-Type:application/json" -H "Ocp-Apim-Subscription-Key:****" -d '{"name": "taro"}' https://apim-gsy0911.azure-api.net/gsy0911-function/tech/qiita
2.4 API Keyの発行
上記の 2.3 でほぼ完了しているのですが、
作成した API を展開する場合は、API Key を別に発行した方が良いです。
理由は以下の通りです。
- 作成した API Key ごとにアクセス制限などがかけられる
- 万が API Key が一流出してしまった場合でも、その API Key を削除すれば被害を最小限に抑えられる
早速、API Key を作成していきます。
Products
からAdd
を押下します。
すると、新しい API Key を作成する画面に行くので
Display Name
, Id
, Published
, APIs
の項目を設定し、Create
を押下します。
API Key の作成後、APIs
, Test
, http_trigger
の順に追っていき、
Product
のところにさっき作成したDisplay Name
があれば作成できています。
上記の手順を踏むことで、本 API を展開する準備ができました。
3. Azure Identityの利用
(まだ書いていません)
4. おわりに
気がついたことがあれば随時こちらに更新していきます。
Author And Source
この問題について(【備忘録・随時更新】AzureFunctionsのあれこれ), 我々は、より多くの情報をここで見つけました https://qiita.com/gsy0911/items/2aecefa94db0e8443b10著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .