次の方法で共有


Azure REST API へのカスタム リソースの追加

この記事では、カスタム リソースを実装する 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 を実行する PUTGET、および DELETE 用の新しい Azure リソース API と、既存のすべてのリソースを取得するための GET を生成します。

単一リソース (PUTGETDELETE) を操作します。

/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 は、カスタム リソース プロバイダーで指定されたPUTDELETEおよび要求メソッドのみをプロキシします。 カスタム リソース プロバイダーは、キャッシュに格納されている内容に基づいて、 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からの適切なnametype、およびが含まれている必要があります。

Azure Resource Manager テンプレートでは、ダウンストリーム エンドポイントから idnametype が正しく返される必要があります。 返されるリソースの応答は、次の形式である必要があります。

エンドポイント応答のサンプル:

{
  "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 はい カスタム リソース名。

次のステップ