この記事では、カスタム リソースを実装する Azure カスタム リソース プロバイダー エンドポイントを作成するための要件とベスト プラクティスについて説明します。 Azure カスタム リソース プロバイダーに慣れていない場合は、 カスタム リソース プロバイダーの概要を参照してください。
リソース エンドポイントを定義する方法
エンドポイントは、サービスを指す URL であり、サービスと Azure の間の基になるコントラクトを実装します。 エンドポイントはカスタム リソース プロバイダーで定義され、パブリックにアクセスできる任意の URL にすることができます。 次のサンプルには、endpointURLによって実装されたmyCustomResourceというresourceTypeがあります。
ResourceProvider のサンプル:
{
"properties": {
"resourceTypes": [
{
"name": "myCustomResource",
"routingType": "Proxy, Cache",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus",
"type": "Microsoft.CustomProviders/resourceProviders",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"name": "{resourceProviderName}"
}
リソース エンドポイントの構築
resourceType を実装するエンドポイントは、Azure の新しい API の要求と応答を処理する必要があります。
resourceType を持つカスタム リソース プロバイダーが作成されると、Azure で新しい API のセットが生成されます。 この場合、 resourceType は、1 つのリソースに対して CRUD を実行する PUT、 GET、および DELETE 用の新しい Azure リソース API と、既存のすべてのリソースを取得するための GET を生成します。
単一リソース (PUT、 GET、 DELETE) を操作します。
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource/{myCustomResourceName}
すべてのリソースの取得 (GET):
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource
カスタム リソースの場合、カスタム リソース プロバイダーは、"" と "Proxy" の 2 種類の Proxy, Cache を提供します。
プロキシ ルーティングの種類
"Proxy" routingType は、カスタム リソース プロバイダーで指定された エンドポイント にすべての要求メソッドをプロキシします。 "Proxy" を使用する場合:
- 応答を完全に制御する必要があります。
- システムと既存のリソースの統合。
"Proxy" リソースの詳細については、カスタム リソース プロキシ リファレンスを参照してください
プロキシ キャッシュ ルーティングの種類
"Proxy, Cache" routingType は、カスタム リソース プロバイダーで指定されたPUTにDELETEおよび要求メソッドのみをプロキシします。 カスタム リソース プロバイダーは、キャッシュに格納されている内容に基づいて、 GET 要求を自動的に返します。 カスタム リソースがキャッシュでマークされている場合、カスタム リソース プロバイダーは応答でフィールドを追加または上書きして、API を Azure に準拠させることもできます。 "Proxy, Cache" を使用する場合:
- 既存のリソースがない新しいシステムを作成する。
- 既存の Azure エコシステムと連携します。
"Proxy, Cache" リソースの詳細については、カスタム リソース キャッシュリファレンスを参照してください
カスタム リソースの作成
カスタム リソース プロバイダーからカスタム リソースを作成するには、主に次の 2 つの方法があります。
- Azure CLI
- Azure Resource Manager テンプレート
Azure CLI
カスタム リソースを作成します。
az resource create --is-full-object \
--id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName} \
--properties \
'{
"location": "eastus",
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
}'
| パラメーター | 必須 | Description |
|---|---|---|
| is-full-object | はい | プロパティ オブジェクトに、場所、タグ、SKU、プランなどの他のオプションが含まれていることを示します。 |
| id | はい | カスタム リソースのリソース ID。 これは ResourceProvider の外に存在する必要があります |
| プロパティ | はい | エンドポイントに送信される要求本文。 |
Azure カスタム リソースを削除します。
az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
| パラメーター | 必須 | Description |
|---|---|---|
| id | はい | カスタム リソースのリソース ID。 これは ResourceProvider の外に存在する必要があります。 |
Azure カスタム リソースを取得します。
az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
| パラメーター | 必須 | Description |
|---|---|---|
| id | はい | カスタム リソースのリソース ID。 これは ResourceProvider の外に存在する必要があります |
Azure Resource Manager テンプレート
注
リソースでは、応答にidからの適切なname、type、およびが含まれている必要があります。
Azure Resource Manager テンプレートでは、ダウンストリーム エンドポイントから id、 name、 type が正しく返される必要があります。 返されるリソースの応答は、次の形式である必要があります。
エンドポイント応答のサンプル:
{
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
},
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
"name": "{customResourceName}",
"type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"
}
Azure Resource Manager テンプレートのサンプル:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}",
"name": "{resourceProviderName}/{customResourceName}",
"apiVersion": "2018-09-01-preview",
"location": "eastus",
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
}
]
}
| パラメーター | 必須 | Description |
|---|---|---|
| resourceTypeName | はい | カスタム リソース プロバイダーで定義されている resourceType の名前。 |
| リソースプロバイダ名 | はい | カスタム リソース プロバイダー インスタンス名。 |
| customResourceName | はい | カスタム リソース名。 |