Desenvolver para o Azure NetApp Files com a API REST

A API REST para o serviço Azure NetApp Files define operações HTTP aplicadas a recursos como a conta NetApp, o pool de capacidade, os volumes e instantâneos. Este artigo ajuda você a começar a usar a API REST do Azure NetApp Files.

Especificação da API REST dos Arquivos NetApp do Azure

A especificação da API REST para Arquivos NetApp do Azure é publicada por meio do GitHub:

https://github.com/Azure/azure-rest-api-specs/tree/main/specification/netapp/resource-manager

Considerações

  • Quando o limite da API foi excedido, o código de resposta HTTP é 429. Por exemplo:

    "Microsoft.Azure.ResourceProvider.Common.Exceptions.ResourceProviderException: Error getting Pool. Rate limit exceeded for this endpoint - try again later ---> CloudVolumes.Service.Client.Client.ApiException: Error calling V2DescribePool: {\"code\":429,\"message\":\"Rate limit exceeded for this endpoint - try again later\"}

    Esse código de resposta pode vir de limitação ou de uma condição temporária. Consulte Código de resposta HTTP 429 do Azure Resource Manager para obter mais informações.

Acessar a API REST dos Arquivos NetApp do Azure

  1. Instale a CLI do Azure se ainda não tiver feito isso.

  2. Crie um principal de serviço no seu Microsoft Entra ID.

    1. Verifique se você tem permissões suficientes.

    2. Insira o seguinte comando na CLI do Azure:

      az ad sp create-for-rbac --name $YOURSPNAMEGOESHERE --role Contributor --scopes /subscriptions/{subscription-id}
      

      A saída do comando é semelhante ao exemplo a seguir:

      { 
          "appId": "appIDgoeshere", 
          "displayName": "APPNAME", 
          "name": "http://APPNAME", 
          "password": "supersecretpassword", 
          "tenant": "tenantIDgoeshere" 
      } 
      

      Mantenha a saída do comando. Você vai precisar dos valores appId, password e tenant.

  3. Solicite um token de acesso OAuth:

    Os exemplos neste artigo usam cURL. Você também pode usar várias ferramentas de API, como Postman, Insomnia e Paw.

    Substitua as variáveis no exemplo a seguir pela saída do comando da Etapa 2 acima.

    curl -X POST -d 'grant_type=client_credentials&client_id=[APP_ID]&client_secret=[PASSWORD]&resource=https%3A%2F%2Fmanagement.azure.com%2F' https://login.microsoftonline.com/[TENANT_ID]/oauth2/token
    

    A saída fornece um token de acesso semelhante ao exemplo a seguir:

    eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5iQ3dXMTF3M1hrQi14VWFYd0tSU0xqTUhHUSIsImtpZCI6Im5iQ3dXMTF3M1hrQi14VWFYd0tSU0xqTUhHUSJ9

    O token exibido é válido por 3600 segundos. Depois disso, você precisa solicitar um novo token. Salve o token em um editor de texto. Você vai precisar dele para o próximo passo.

  4. Envie uma chamada de teste e inclua o token para validar seu acesso à API REST:

    curl -X GET -H "Authorization: Bearer [TOKEN]" -H "Content-Type: application/json" https://management.azure.com/subscriptions/[SUBSCRIPTION_ID]/providers/Microsoft.Web/sites?api-version=2022-05-01
    

Exemplos de uso da API

Este artigo usa a seguinte URL para a linha de base das solicitações. Esta URL aponta para a raiz do namespace de Arquivos NetApp do Azure.

https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts?api-version=2022-05-01

Você deve substituir os valores SUBIDGOESHERE e RESOURCEGROUPGOESHERE nos exemplos a seguir por seus próprios valores.

Exemplos de solicitação GET

Você usa uma solicitação GET para consultar objetos dos Arquivos NetApp do Azure em uma assinatura, como mostram os exemplos a seguir:

#get NetApp accounts 
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts?api-version=2022-05-01
#get capacity pools for NetApp account 
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools?api-version=2022-05-01
#get volumes in NetApp account & capacity pool 
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes?api-version=2022-05-01
#get snapshots for a volume 
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/VOLUMEGOESHERE/snapshots?api-version=2022-05-01

Exemplos de solicitação PUT

Você usa uma solicitação PUT para criar novos objetos nos Arquivos NetApp do Azure, como mostram os exemplos a seguir. O corpo da solicitação PUT pode incluir os dados formatados em JSON para as alterações. Deve ser incluído no comando curl como texto ou referenciado como um ficheiro. Para referenciar o corpo como um ficheiro, guarde o exemplo JSON num ficheiro e adicione -d @<filename> ao comando curl.

#create a NetApp account  
curl -d @<filename> -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE?api-version=2022-05-01
#create a capacity pool  
curl -d @<filename> -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE?api-version=2022-05-01
#create a volume  
curl -d @<filename> -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/MYNEWVOLUME?api-version=2022-05-01
 #create a volume snapshot  
curl -d @<filename> -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json" https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/MYNEWVOLUME/Snapshots/SNAPNAME?api-version=2022-05-01

Exemplos de JSON

O exemplo a seguir mostra como criar uma conta NetApp:

{ 
    "name": "MYNETAPPACCOUNT", 
    "type": "Microsoft.NetApp/netAppAccounts", 
    "location": "westus2", 
    "properties": { 
        "name": "MYNETAPPACCOUNT" 
    }
} 

O exemplo a seguir mostra como criar um pool de capacidade:

{
    "name": "MYNETAPPACCOUNT/POOLNAME",
    "type": "Microsoft.NetApp/netAppAccounts/capacityPools",
    "location": "westus2",
    "properties": {
        "name": "POOLNAME",
        "size": "4398046511104",
        "serviceLevel": "Premium"
    }
}

O exemplo a seguir mostra como criar um novo volume. (O protocolo padrão para o volume é NFSV3.)

{
    "name": "MYNEWVOLUME",
    "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes",
    "location": "westus2",
    "properties": {
        "serviceLevel": "Premium",
        "usageThreshold": "322122547200",
        "creationToken": "MY-FILEPATH",
        "snapshotId": "",
        "subnetId": "/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.Network/virtualNetworks/VNETGOESHERE/subnets/MYDELEGATEDSUBNET.sn"
         }
}

O exemplo a seguir mostra como criar um instantâneo de um volume:

{
    "name": "apitest2/apiPool01/apiVol01/snap02",
    "type": "Microsoft.NetApp/netAppAccounts/capacityPools/Volumes/Snapshots",
    "location": "westus2",
    "properties": {
         "name": "snap02",
        "fileSystemId": "0168704a-bbec-da81-2c29-503825fe7420"
    }
}

Observação

Você precisa especificar fileSystemId para criar um instantâneo. Você pode obter o fileSystemId valor com uma solicitação GET para um volume.

Próximos passos