このクイック スタートでは、カスタム リソース プロバイダーを作成し、そのリソース プロバイダーのカスタム リソースをデプロイします。 カスタム リソース プロバイダーの詳細については、「 Azure カスタム リソース プロバイダーの概要」を参照してください。
[前提条件]
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- このクイック スタートの手順を完了するには、
REST操作を呼び出す必要があります。 REST 要求を送信する方法はさまざまです。
Azure CLI の環境を準備します。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
Azure CLI の例では、az rest要求にRESTを使用します。 詳細については、 az rest を参照してください。
カスタム リソース プロバイダーをデプロイする
カスタム リソース プロバイダーを設定するには、サンプル テンプレート を Azure サブスクリプションにデプロイします。
このテンプレートでは、次のリソースがサブスクリプションにデプロイされます。
- リソースとアクションの操作を含む関数アプリ。
- カスタム リソース プロバイダーを使用して作成されたユーザーを格納するためのストレージ アカウント。
- カスタム リソースの種類とアクションを定義するカスタム リソース プロバイダー。 要求の送信には関数アプリ エンドポイントが使用されます。
- カスタム リソース プロバイダーのカスタム リソース。
カスタム リソース プロバイダーをデプロイするには、Azure CLI、PowerShell、または Azure portal を使用します。
この例では、リソース グループ、場所、プロバイダーの関数アプリ名を入力するように求められます。 名前は、他のコマンドで使用される変数に格納されます。 az group create コマンドと az deployment group create コマンドは、リソースをデプロイします。
read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read
Azure portal からテンプレートをデプロイするには、[Azure にデプロイ ] ボタンを選択します。
カスタム リソース プロバイダーとリソースを表示する
ポータルでは、カスタム リソース プロバイダーは非表示のリソースの種類です。 リソース プロバイダーがデプロイされたことを確認するには、リソース グループに移動し、[ 非表示の種類の表示] を選択します。
デプロイしたカスタム リソースを表示するには、リソースの種類に対して GET 操作を使用します。 JSON 応答に表示 Microsoft.CustomProviders/resourceProviders/users リソースの種類には、テンプレートによって作成されたリソースが含まれます。
GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI
次のような応答が返されます。
{
"value": [
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
"name": "ana",
"properties": {
"FullName": "Ana Bowman",
"Location": "Moon",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
]
}
通話アクション
カスタム リソース プロバイダーにも、 pingという名前のアクションがあります。 要求を処理するコードは、関数アプリに実装されます。
pingアクションはあいさつで応答します。
ping要求を送信するには、アクションに対してPOST操作を使用します。
POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI
次のような応答が返されます。
{
"message": "hello <function-name>.azurewebsites.net",
"pingcontent": {
"source": "<function-name>.azurewebsites.net"
}
}
PUT を使用してリソースを作成する
このクイック スタートでは、テンプレートはリソースの種類 Microsoft.CustomProviders/resourceProviders/users を使用してリソースをデプロイしました。
PUT操作を使用してリソースを作成することもできます。 たとえば、リソースがテンプレートと共にデプロイされていない場合、 PUT 操作によってリソースが作成されます。
この例では、テンプレートによってリソースが既にデプロイされているため、 PUT 操作によって新しいリソースが作成されます。
PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview
{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"
次のような応答が返されます。
{
"id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
"name": "testuser",
"properties": {
"FullName": "Test User",
"Location": "Earth",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
カスタム GETセクションから操作を再実行して、作成された 2 つのリソースを表示できます。 この例では、Azure CLI コマンドからの出力を示します。
{
"value": [
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
"name": "ana",
"properties": {
"FullName": "Ana Bowman",
"Location": "Moon",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
},
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
"name": "testuser",
"properties": {
"FullName": "Test User",
"Location": "Earth",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
]
}
カスタム リソース プロバイダー コマンド
カスタム プロバイダー コマンドを使用して、カスタム リソース プロバイダーを操作します。
カスタム リソース プロバイダーを一覧表示する
list コマンドを使用して、サブスクリプション内のすべてのカスタム リソース プロバイダーを表示します。 既定では、現在のサブスクリプションのカスタム リソース プロバイダーが一覧表示されるか、 --subscription パラメーターを指定できます。 リソース グループを一覧表示するには、 --resource-group パラメーターを使用します。
az custom-providers resource-provider list --subscription $subID
[
{
"actions": [
{
"endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
"name": "ping",
"routingType": "Proxy"
}
],
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
"location": "eastus",
"name": "<provider-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<rg-name>",
"resourceTypes": [
{
"endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
"name": "users",
"routingType": "Proxy, Cache"
}
],
"tags": {},
"type": "Microsoft.CustomProviders/resourceproviders",
"validations": null
}
]
プロパティを表示する
show コマンドを使用して、カスタム リソース プロバイダーのプロパティを表示します。 出力形式は、 list 出力に似ています。
az custom-providers resource-provider show --resource-group $rgName --name $funcName
新しいリソースを作成する
create コマンドを使用して、カスタム リソース プロバイダーを作成または更新します。 この例では、 actions と resourceTypesを更新します。
az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
{
"endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
"name": "ping",
"routingType": "Proxy"
}
],
"resourceTypes": [
{
"endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
"name": "users",
"routingType": "Proxy, Cache"
}
],
プロバイダーのタグを更新する
update コマンドは、カスタム リソース プロバイダーのタグのみを更新します。 Azure portal で、カスタム リソース プロバイダーのアプリ サービスにタグが表示されます。
az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
"new": "tag"
},
カスタム リソース プロバイダーを削除する
deleteコマンドは、ユーザーにプロンプトを表示し、カスタム リソース プロバイダーのみを削除します。 ストレージ アカウント、App Service、App Service プランは削除されません。 プロバイダーが削除されると、コマンド プロンプトに戻ります。
az custom-providers resource-provider delete --resource-group $rgName --name $funcName
リソースをクリーンアップする
この記事で作成したリソースが完了したら、リソース グループを削除できます。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースが削除されます。
az group delete --resource-group $rgName
次のステップ
カスタム リソース プロバイダーの概要については、次の記事を参照してください。