Referência de proxy de recurso personalizado
Este artigo abordará os requisitos para pontos de extremidade que implementam recursos personalizados de proxy. Se você não conhecer os Provedores de Recursos Personalizados do Azure, confira a visão geral dos provedores de recursos personalizados.
Definir um ponto de extremidade de recurso de proxy
Um recurso de proxy pode ser criado especificando o routingType
como "Proxy".
Amostra do provedor de recursos personalizado:
{
"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 de extremidade de recurso de proxy
Um ponto de extremidade que implementa um ponto de extremidade do recurso de "Proxy" deve gerenciar a solicitação e a resposta para a nova API no Azure. Nesse caso, o #resourceType* vai gerar uma nova API do recurso do Azure para PUT
, GET
e DELETE
a fim de executar CRUD em apenas um recurso, bem como GET
para recuperar todos os recursos existentes.
Observação
Os campos id
, name
e type
não são obrigatórios, mas são necessários para integrar o recurso personalizado com um 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âmetro:
Propriedade | Amostra | Descrição |
---|---|---|
name | '{myCustomResourceName}' | O nome do recurso personalizado. |
type | 'Microsoft.CustomProviders/resourceProviders/{resourceTypeName}' | O namespace do tipo de recurso. |
id | '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/ providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/ myCustomResources/{myCustomResourceName}' |
A ID do recurso. |
Criar um recurso personalizado
Solicitação 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"
}
}
}
Esta solicitação será encaminhada para o ponto de extremidade 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"
}
}
}
A resposta do ponto de extremidade será encaminhada de volta ao cliente. A resposta deve retornar:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas abaixo de um objeto superior.
- O cabeçalho
Content-Type
deve ser definido como "application/json; charset=utf-8".
Resposta do ponto de extremidade:
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 Provedor 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
Solicitação 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
Esta solicitação será encaminhada para o ponto de extremidade 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}
A resposta do ponto de extremidade será encaminhada de volta ao cliente. A resposta deve retornar:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas abaixo de um objeto superior.
- O cabeçalho
Content-Type
deve ser definido como "application/json; charset=utf-8".
Resposta do ponto de extremidade:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Resposta do Provedor de Recursos Personalizados do Azure:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Recuperar um recurso personalizado
Solicitação 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
Esta solicitação será encaminhada para o ponto de extremidade 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}
A resposta do ponto de extremidade será encaminhada de volta ao cliente. A resposta deve retornar:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas abaixo de um objeto superior.
- O cabeçalho
Content-Type
deve ser definido como "application/json; charset=utf-8".
Resposta do ponto de extremidade:
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 Provedor 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
Solicitação 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
Esta solicitação será encaminhada para o ponto de extremidade 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
A resposta do ponto de extremidade será encaminhada de volta ao cliente. A resposta deve retornar:
- Um documento de objeto JSON válido. Todas as matrizes e cadeias de caracteres devem ser aninhadas abaixo de um objeto superior.
- O cabeçalho
Content-Type
deve ser definido como "application/json; charset=utf-8". - A lista de recursos deve ser colocada sob a propriedade de nível superior
value
.
Resposta do ponto de extremidade:
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 Provedor 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"
}
}
}
]
}
Próximas etapas
- Visão Geral nos Provedores de Recursos Personalizados do Azure
- Início rápido: criar um Provedor de Recursos Personalizado do Azure e implantar recursos personalizados
- Tutorial: criar ações e recursos personalizados no Azure
- Tutorial: como adicionar ações personalizadas à API REST do Azure
- Referência: referência de Cache do Recurso Personalizado