사용자 지정 리소스 캐시 참조

이 문서에서는 캐시 사용자 지정 리소스를 구현하는 엔드포인트에 대한 요구 사항을 살펴봅니다. 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}"
}

프록시 리소스 엔드포인트 빌드

"Proxy, Cache" 리소스 엔드포인트를 구현하는 모든 엔드포인트는 Azure의 새 API에 대한 요청 및 응답을 처리해야 합니다. 이러한 경우 resourceTypePUT, GET, 단일 리소스에서 CRUD를 수행하기 위한 DELETE뿐만 아니라 모든 기존 리소스를 검색하기 위한GET에 대해 새 Azure 리소스 API를 생성합니다.

참고 항목

Azure API는 요청 메서드인 PUT, GET, DELETE를 생성하지만 캐시 엔드포인트는 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”으로 설정해야 합니다.
  • 사용자 지정 리소스 공급자는 요청에 대한 name, type, id 필드를 덮어씁니다.
  • 사용자 지정 리소스 공급자는 캐시 엔드포인트에 대한 properties 개체 아래에서만 필드를 반환합니다.

엔드포인트 응답:

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

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

name, id, 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"
                }
            }
        }
    ]
}

다음 단계