Referência de proxy de recurso personalizado
Este artigo irá analisar os requisitos para pontos finais que implementam recursos personalizados de proxy. Se não estiver familiarizado com os Fornecedores de Recursos Personalizados do Azure, veja a descrição geral dos fornecedores de recursos personalizados.
Definir um ponto final de recurso de proxy
Um recurso proxy pode ser criado ao especificar o routingType
para "Proxy".
Fornecedor de recursos personalizado de exemplo:
{
"properties": {
"resourceTypes": [
{
"name": "myCustomResources",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus",
"type": "Microsoft.CustomProviders/resourceProviders",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"name": "{resourceProviderName}"
}
Criar um ponto final de recurso de proxy
Um ponto final que implemente um ponto final de recurso "Proxy" tem de processar o pedido e a resposta para a nova API no Azure. Neste caso, o #resourceType* irá gerar uma nova API de recursos do Azure para PUT
, GET
e DELETE
executar CRUD num único recurso, bem como GET
para obter todos os recursos existentes.
Nota
Os id
campos , name
e type
não são necessários, mas são necessários para integrar o recurso personalizado num ecossistema do Azure existente.
Recurso de exemplo:
{
"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"
}
}
}
Referência de parâmetros:
Propriedade | Sample | Descrição |
---|---|---|
name | "{myCustomResourceName}" | O nome do recurso personalizado. |
tipo | "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}" | O espaço de nomes do tipo de recurso. |
ID | "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/ providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/ myCustomResources/{myCustomResourceName}' |
O ID do recurso. |
Criar um recurso personalizado
Pedido de entrada da API do Azure:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resource-provider-name}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json
{
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
}
Em seguida, este pedido será reencaminhado para o ponto final no formulário:
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"
}
}
}
Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
- O
Content-Type
cabeçalho deve ser definido como "application/json; charset=utf-8".
Resposta do ponto final:
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"
}
}
}
Resposta do Fornecedor de Recursos Personalizados do 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"
}
}
}
Remover um recurso personalizado
Pedido de entrada da API do Azure:
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
Em seguida, este pedido será reencaminhado para o ponto final no formulário:
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}
Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:
- Documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
- O
Content-Type
cabeçalho deve ser definido como "application/json; charset=utf-8".
Resposta do ponto final:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Resposta do Fornecedor de Recursos Personalizados do Azure:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Obter um recurso personalizado
Pedido de entrada da API do Azure:
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
Em seguida, este pedido será reencaminhado para o ponto final no formulário:
GET 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}
Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
- O
Content-Type
cabeçalho deve ser definido como "application/json; charset=utf-8".
Resposta do ponto final:
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"
}
}
}
Resposta do Fornecedor de Recursos Personalizados do 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"
}
}
}
Enumerar todos os recursos personalizados
Pedido de entrada da API do Azure:
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
Em seguida, este pedido será reencaminhado para o ponto final no formulário:
GET 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
Em seguida, a resposta do ponto final é reencaminhada para o cliente. A resposta deve devolver:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias devem ser aninhadas num objeto superior.
- O
Content-Type
cabeçalho deve ser definido como "application/json; charset=utf-8". - A lista de recursos deve ser colocada sob a propriedade de nível
value
superior.
Resposta do ponto final:
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"
}
}
}
]
}
Resposta do Fornecedor de Recursos Personalizados do 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"
}
}
}
]
}
Passos seguintes
- Descrição geral dos Fornecedores de Recursos Personalizados do Azure
- Início Rápido: Criar o Fornecedor de Recursos Personalizados do Azure e implementar recursos personalizados
- Tutorial: Criar ações e recursos personalizados no Azure
- Procedimentos: Adicionar Ações Personalizadas à API REST do Azure
- Referência: Referência da Cache de Recursos Personalizada