カスタム リソース プロバイダーを作成して使用する
カスタム リソース プロバイダーは、Azure とエンドポイントの間のコントラクトです。 カスタム リソース プロバイダーを使って、Azure 上のワークフローを変更できます。 このチュートリアルでは、カスタム リソース プロバイダーを作成する手順について説明します。 Azure カスタム リソース プロバイダーについてなじみがない場合は、Azure カスタム リソース プロバイダーの概要に関するページを参照してください。
カスタム リソース プロバイダーの作成
Note
このチュートリアルでは、エンドポイントの作成方法については取り上げません。 RESTFUL エンドポイントがない場合は、このチュートリアルの土台となっている、RESTful エンドポイントの作成に関するチュートリアルに従ってください。
エンドポイントを作成した後は、カスタム リソース プロバイダーを作成して、プロバイダーとエンドポイントの間のコントラクトを生成できます。 カスタム リソース プロバイダーで、エンドポイント定義のリストを指定できます。
{
"name": "myEndpointDefinition",
"routingType": "Proxy",
"endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
プロパティ | 必須 | 説明 |
---|---|---|
name | はい | エンドポイント定義の名前。 この名前は、次の場所の対応する API を通じて公開されます: /subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ名>/providers/Microsoft.CustomProviders /resourceProviders/<リソース プロバイダー名>/<エンドポイント定義名> |
routingType | いいえ | エンドポイントのコントラクトの種類。 この値が指定されなかった場合は、"Proxy" が既定値となります。 |
endpoint | はい | 要求をルーティングするエンドポイント。 このエンドポイントによって応答が処理され、また要求の副作用があればそれも処理されます。 |
Azure 関数アプリのトリガー URL が endpoint の値になります。
<yourapp>
、<funcname>
、<functionkey>
の各プレースホルダーは、作成した関数アプリの値に置き換える必要があります。
カスタム アクションとリソースを定義する
カスタム リソース プロバイダーには、actions プロパティと resourceTypes プロパティでモデル化されるエンドポイント定義のリストが含まれます。
actions プロパティは、カスタム リソース プロバイダーによって公開されるカスタム アクションに対応し、resourceTypes プロパティはカスタム リソースを表します。 このチュートリアルのカスタム リソース プロバイダーには、myCustomAction
という名前の actions プロパティと myCustomResources
という名前の resourceTypes プロパティがあります。
{
"properties": {
"actions": [
{
"name": "myCustomAction",
"routingType": "Proxy",
"endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
],
"resourceTypes": [
{
"name": "myCustomResources",
"routingType": "Proxy",
"endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
]
},
"location": "eastus"
}
カスタム リソース プロバイダーをデプロイする
Note
endpoint の値は、前のチュートリアルで作成した関数アプリのトリガー URL に置き換える必要があります。
前に示したカスタム リソース プロバイダーは、Azure Resource Manager テンプレートを使ってデプロイできます。
{
"$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.CustomProviders/resourceProviders",
"name": "myCustomProvider",
"apiVersion": "2018-09-01-preview",
"location": "eastus",
"properties": {
"actions": [
{
"name": "myCustomAction",
"routingType": "Proxy",
"endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
],
"resourceTypes": [
{
"name": "myCustomResources",
"routingType": "Proxy",
"endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
]
}
}
]
}
カスタム アクションとカスタム リソースを使用する
カスタム リソース プロバイダーを作成したら、新しい Azure API を使用できます。 以下のセクションでは、カスタム リソース プロバイダーを呼び出して使用する方法を説明します。
カスタム アクション
Azure CLI
Note
{subscriptionId}
と {resourceGroupName}
の各プレースホルダーは、カスタム リソース プロバイダーのデプロイ先のサブスクリプションとリソース グループに置き換える必要があります。
az resource invoke-action --action myCustomAction \
--ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider \
--request-body
'{
"hello": "world"
}'
パラメーター | 必須 | 説明 |
---|---|---|
action | はい | カスタム リソース プロバイダーで定義されているアクションの名前。 |
ids | はい | カスタム リソース プロバイダーのリソース ID。 |
request-body | いいえ | エンドポイントに送信される要求本文。 |
カスタム リソース
Note
{subscriptionId}
と {resourceGroupName}
の各プレースホルダーは、カスタム リソース プロバイダーのデプロイ先のサブスクリプションとリソース グループに置き換える必要があります。
カスタム リソースの作成
az resource create --is-full-object \
--id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1 \
--properties
'{
"location": "eastus",
"properties": {
"hello" : "world"
}
}'
パラメーター | 必須 | 説明 |
---|---|---|
is-full-object | はい | properties オブジェクトに、場所、タグ、SKU、プランなどの他のオプションが含まれるかどうかを示します。 |
ID | はい | カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。 |
properties | はい | エンドポイントに送信される要求本文。 |
カスタム リソースを削除する
az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
パラメーター | 必須 | 説明 |
---|---|---|
ID | はい | カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。 |
カスタム リソースの取得
az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
パラメーター | 必須 | 説明 |
---|---|---|
ID | はい | カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。 |
Note
カスタム リソース プロバイダーのデプロイと使用が済んだら、Azure 関数アプリも含めて、作成したリソースをすべてクリーンアップしてください。
次のステップ
この記事では、カスタム リソース プロバイダーについて学習しました。 詳細については、次を参照してください。