次の方法で共有


カスタム リソース キャッシュ リファレンス

この記事では、キャッシュ カスタム リソースを実装するエンドポイントの要件について説明します。 Azure カスタム リソース プロバイダーに慣れていない場合は、 カスタム リソース プロバイダーの概要を参照してください。

キャッシュ リソース エンドポイントを定義する

プロキシ リソースは、 routingType を "Proxy, Cache" に指定することで作成できます。

カスタム リソース プロバイダーの例:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy, Cache",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus",
  "type": "Microsoft.CustomProviders/resourceProviders",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
  "name": "{resourceProviderName}"
}

プロキシ リソース エンドポイントを構築する

"プロキシ、キャッシュ" リソース エンドポイントを実装するエンドポイントは、Azure の新しい API の要求と応答を処理する必要があります。 この場合、 resourceType は、1 つのリソースに対して CRUD を実行する PUTGET、および DELETE 用の新しい Azure リソース API と、既存のすべてのリソースを取得するための GET を生成します。

Azure API は、 PUTGETDELETEの要求メソッドを生成しますが、キャッシュ エンドポイントは PUTDELETEのみを処理する必要があります。 エンドポイントでは、 GETも実装することをお勧めします。

カスタム リソースを作成する

Azure API 受信要求:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

この要求は、次の形式でエンドポイントに転送されます。

PUT https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

その後、エンドポイントからの応答が顧客に転送されます。 応答は次を返す必要があります。

  • 有効な JSON オブジェクト ドキュメント。 すべての配列と文字列は、一番上のオブジェクトの下に入れ子にする必要があります。
  • Content-Type ヘッダーは "application/json; に設定する必要があります。charset=utf-8".
  • カスタム リソース プロバイダーは、要求の nametype、および id フィールドを上書きします。
  • カスタム リソース プロバイダーは、キャッシュ エンドポイントの properties オブジェクトの下のフィールドのみを返します。

エンドポイントの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

nameid、およびtypeフィールドは、カスタム リソース プロバイダーによってカスタム リソースに対して自動的に生成されます。

Azure カスタム リソース プロバイダーの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "name": "{myCustomResourceName}",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
    "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

カスタム リソースを削除する

Azure API 受信要求:

Delete https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

この要求は、次の形式でエンドポイントに転送されます。

Delete https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

その後、エンドポイントからの応答が顧客に転送されます。 応答は次を返す必要があります。

  • 有効な JSON オブジェクト ドキュメント。 すべての配列と文字列は、一番上のオブジェクトの下に入れ子にする必要があります。
  • Content-Type ヘッダーは "application/json; に設定する必要があります。charset=utf-8".
  • Azure カスタム リソース プロバイダーは、200 レベルの応答が返された場合にのみ、キャッシュから項目を削除します。 リソースが存在しない場合でも、エンドポイントは 204 を返す必要があります。

エンドポイントの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

Azure カスタム リソース プロバイダーの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

カスタム リソースを取得する

Azure API 受信要求:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

要求はエンドポイントに転送 されません

Azure カスタム リソース プロバイダーの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "name": "{myCustomResourceName}",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
    "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

すべてのカスタム リソースを列挙する

Azure API 受信要求:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

要求はエンドポイントに転送 されません

Azure カスタム リソース プロバイダーの応答:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "value" : [
        {
            "name": "{myCustomResourceName}",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
            "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3" : "myPropertyValue3"
                }
            }
        }
    ]
}

次のステップ