この記事では、キャッシュ カスタム リソースを実装するエンドポイントの要件について説明します。 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 を実行する PUT、 GET、および DELETE 用の新しい Azure リソース API と、既存のすべてのリソースを取得するための GET を生成します。
注
Azure API は、 PUT、 GET、 DELETEの要求メソッドを生成しますが、キャッシュ エンドポイントは PUT と DELETEのみを処理する必要があります。
エンドポイントでは、 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"
}
}
}
]
}