この例のシナリオでは、メイン アプリケーションは、アクセス キーで保護されたサードパーティの API を使用します。 このセクションでは、Azure Functions を使用する API について説明しますが、別のクラウド プロバイダーまたは従来の Web サーバーでアプリケーションをホストする場合でも、API を実装する方法や場所に関係なく、同じ原則が適用されます。
重要な側面は、保護されたエンドポイントに対するクライアント要求にはアクセス キーを含める必要があり、アプリは安全に管理する必要があります。 このセクションでは、Azure Functions を使用してこのような API を実装する方法の概要を説明しますが、特定のニーズに合わせて原則を調整できます。
サード パーティ製 API の実装例
サード パーティ製 API の例は、1 から 999 までの乱数を返す単純なエンドポイントです。 API はアクセス キーで保護されます。これは、エンドポイントにアクセスするための要求で指定する必要があります。 デモンストレーションの目的で、この API はエンドポイント ( https://msdocs-example-api.azurewebsites.net/api/RandomNumber
) にデプロイされます。 ただし、API を呼び出すには、d0c5atM1cr0s0ft
URL パラメーターまたは HTTP ヘッダーの?code=
プロパティにアクセス キー'x-functions-key'
を指定する必要があります。 たとえば、アプリと API をデプロイした後、ブラウザーまたは curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft
でこの URL を試します。
アクセス キーが有効な場合、エンドポイントは、1 つのプロパティ "value" を含む JSON 応答を返します。値は 1 から 999 までの数値 ( {"value": 959}
など) です。
エンドポイントは Python で実装され、Azure Functions にデプロイされます。 コードは次のとおりです。
import logging
import random
import json
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('RandomNumber invoked via HTTP trigger.')
random_value = random.randint(1, 1000)
dict = { "value" : random_value }
return func.HttpResponse(json.dumps(dict))
サンプル リポジトリでは、このコードは third_party_api/RandomNumber/__init__.py にあります。 RandomNumber フォルダーは関数の名前を提供し、__init__.pyにはコードが含まれています。 フォルダー内の別のファイル (function.json) では、関数がトリガーされるタイミングについて説明します。 third_party_api親フォルダー内の他のファイルは、関数自体をホストする Azure 関数アプリの詳細を提供します。
コードをデプロイするには、サンプルのプロビジョニング スクリプトで次の手順を実行します。
状態と内部操作を管理するための
az storage account create
、Azure CLI コマンドを使用して Azure Functions のバッキング ストレージ アカウントを作成します。Azure CLI コマンドを使用して Azure Functions アプリを作成
az function app create
。ホストが完全にプロビジョニングされるまで 60 秒待った後、 Azure Functions Core Tools コマンドを使用してコードをデプロイ
func azure functionapp publish
。アクセス キー (
d0c5atM1cr0s0ft
) を関数に割り当てます。 (関数キーの背景については、 Azure Functions のセキュリティ 保護に関するページを参照してください)。プロビジョニング スクリプトでは、この手順は az functionapp function keys set Azure CLI コマンドを使用して実行されます。
必要に応じて 、Functions キー管理 API への REST API 呼び出しを通じてこの手順を実行する方法を示すコメントが含まれています。 その REST API を呼び出すには、関数アプリのマスター キーを取得するために、最初に別の REST API 呼び出しを行う必要があります。
Azure portal からアクセス キーを割り当てることもできます。 Functions アプリのページで、[ Functions] を選択し、セキュリティで保護する特定の関数 (この例では RandomNumber
) を選択します。 関数のページで、[ ファンクション キー ] を選択して、これらのキーを作成および管理できるページを開きます。