クイック スタート: Azure カスタム リソースプロバイダーの作成とカスタム リソースのデプロイ
このクイックスタートでは、カスタム リソース プロバイダーを作成し、そのリソース プロバイダーのカスタム リソースをデプロイします。 カスタム リソース プロバイダーの詳細については、「Azure カスタム リソース プロバイダーの概要」を参照してください。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- このクイックスタートの手順を完了するには、
REST
操作を呼び出す必要があります。 REST 要求を送信するさまざまな方法があります。
Azure CLI の環境を準備します。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
Azure CLI の例では、REST
要求に az 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"
}
]
}
カスタム リソース プロバイダーのコマンド
カスタム リソース プロバイダーを操作するには、custom-providers コマンドを使用します。
カスタム リソース プロバイダーの一覧表示
サブスクリプション内のカスタム リソースプロバイダーをすべて表示するには、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 では、カスタム リソース プロバイダーの App Service にタグが表示されます。
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
次のステップ
カスタム リソース プロバイダーの概要については、次の記事をご覧ください。