Distribuire API di generazione dati in Istanze di Azure Container

Questa guida illustra come distribuire Il generatore di API dati (DAB) in Istanze di Azure Container usando un'immagine del contenitore personalizzata compilata con Registro Azure Container. Istanze di Container offre un modo rapido per eseguire un contenitore in Azure senza gestire le macchine virtuali o adottare un agente di orchestrazione.

Diagramma dell'architettura complessiva quando la distribuzione in Istanze di Azure Container è completa.

Prerequisiti

Compilare il file di configurazione

Per iniziare, compilare un file di configurazione del generatore di API dati (DAB) per connettersi al database esistente. Questo file viene usato in un secondo momento con il contenitore finale.

  1. Creare una directory vuota nel computer locale per archiviare il file di configurazione.

  2. Inizializzare un nuovo file di configurazione di base usando dab init. Usare le impostazioni seguenti almeno all'inizializzazione.

    Impostazione Valore
    Tipo di database Selezionare un tipo di database supportato.
    Stringa di connessione Usare la @env() funzione per fare riferimento alla DATABASE_CONNECTION_STRING variabile di ambiente.
    dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"
    

    Importante

    Alcuni tipi di database richiedono impostazioni di configurazione aggiuntive per l'inizializzazione.

  3. Aggiungere almeno un'entità di database alla configurazione. Usare il dab add comando per configurare un'entità. Configurare ogni entità per consentire tutte le autorizzazioni per gli utenti anonimi. Ripeti dab add quante volte vuoi per le entità.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Aprire ed esaminare il contenuto del file dab-config.json . Questo file verrà usato più avanti in questa guida.

Creare un'immagine del contenitore personalizzata

Creare un'immagine personalizzata che include dab-config.json in /App/dab-config.json. Eseguire questi comandi dalla cartella che contiene dab-config.json.

  1. Creare un nuovo gruppo di risorse. Questo gruppo di risorse viene usato per tutte le nuove risorse in questa guida.

    Suggerimento

    È consigliabile denominare il gruppo di risorse msdocs-dab-aci.

  2. Creare un Registro Azure Container e creare l'immagine.

    az acr create \
        --resource-group "<resource-group-name>" \
        --name "<registry-name>" \
        --sku Basic \
        --admin-enabled true
    
    # Create a Dockerfile that embeds dab-config.json
    cat <<'EOF' > Dockerfile
    FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
    COPY dab-config.json /App/dab-config.json
    EOF
    
    # Build and push the image
    az acr build \
        --registry "<registry-name>" \
        --image "dab:1" \
        .
    
  3. Registrare il server di accesso del Registro di sistema (<registry-name>.azurecr.io) e il tag immagine (dab:1). Questi valori vengono usati durante la creazione dell'istanza del contenitore.

  4. Ottenere il nome utente e la password del Registro di sistema.

    az acr credential show \
        --name "<registry-name>" \
        --query "{username:username,password:passwords[0].value}"
    

Creare l'istanza del contenitore

Crea il contenitore in Azure utilizzando Istanze di Azure Container con la tua immagine personalizzata.

  1. Creare una risorsa Istanze di Azure Container utilizzando az container create. Usare queste impostazioni per configurare la risorsa.

    Impostazione Valore
    Gruppo di risorse Usare il gruppo di risorse creato in precedenza
    Nome contenitore Immettere un nome univoco globale
    Area geografica Usare la stessa area del gruppo di risorse
    SKU Utilizzare Standard
    Image Immetti <registry-name>.azurecr.io/dab:1
    Tipo di sistema operativo Usare Linux
    Tipo di rete Usa Public
    Porte di rete Immetti 5000
    Etichetta del nome DNS Immettere un'etichetta univoca a livello globale
    Variabili di ambiente Immettere DATABASE_CONNECTION_STRING e la stringa di connessione per il database.
    az container create \
        --resource-group "<resource-group-name>" \
        --name "<unique-container-instance-name>" \
        --image "<registry-name>.azurecr.io/dab:1" \
        --location "<region>" \
        --sku "Standard" \
        --os-type "Linux" \
        --ip-address "public" \
        --ports "5000" \
        --dns-name-label "<unique-dns-label>" \
        --environment-variables "DATABASE_CONNECTION_STRING=<database-connection-string>" \
        --registry-login-server "<registry-name>.azurecr.io" \
        --registry-username "<registry-username>" \
        --registry-password "<registry-password>"
    

    Suggerimento

    È consigliabile usare una stringa di connessione che non include chiavi di autorizzazione. Usare invece identità gestite e controllo degli accessi in base al ruolo per gestire l'accesso tra il database e l'host. Per altre informazioni, vedere Servizi di Azure che usano identità gestite.

  2. Usare az container show per eseguire una query sul nome di dominio completo (FQDN) per la nuova istanza del contenitore. Visitare quindi il sito Web dell'istanza del contenitore.

    az container show \
        --resource-group "<resource-group-name>" \
        --name "<unique-container-instance-name>" \
        --query "join('://', ['https', ipAddress.fqdn])" \
        --output "tsv"
    
  3. Osservare la risposta che indica che il contenitore DAB è in esecuzione e che lo stato è integro.

    {
        "status": "healthy",
        "version": "1.1.7",
        "app-name": "dab_oss_1.1.7"
    }
    

    Annotazioni

    Il numero di versione e il nome variano in base alla versione corrente di Generatore API dati.

  4. Passare al percorso /api/swagger dell'applicazione attualmente in esecuzione. Usare l'interfaccia utente di Swagger per inviare una richiesta HTTP GET per una delle entità.

Pulire le risorse

Quando l'applicazione o le risorse di esempio non sono più necessarie, rimuovere la distribuzione corrispondente e tutte le risorse.

  1. Passare al gruppo di risorse usando il portale di Azure.

  2. Nella barra dei comandi selezionare Elimina.

Passo successivo