Automatizzazione della creazione del database

Puoi automatizzare la creazione dei database Firestore con il seguente processo:

  1. Crea un nuovo progetto Google Cloud. Ogni progetto è limitato a un databaseFirestore.
  2. Creare un'applicazione App Engine. Firestore dipende da App Engine. Devi attivare App Engine per utilizzare Firestore.
  3. Crea un database Firestore.

In questa pagina viene descritto come completare questo processo utilizzando le API REST, lo strumento a riga di comando gcloud e Terraform.

Crea un database con le API REST

Per eseguire il provisioning di un database Firestore, puoi utilizzare l'API Resource Manager e l'API Amministratore App Engine.

Autenticazione e autorizzazione

Per accedere alle API Resource Manager e App Engine Admin, devi autenticare la richiesta con un token di accesso. Il token di accesso richiede un ambito OAuth 2.0 di:

https://www.googleapis.com/auth/cloud-platform

Per configurare l'autenticazione per un'applicazione, vedi Configurare l'autenticazione per le applicazioni di produzione server-server.

Durante lo sviluppo e il test della tua applicazione, puoi ottenere un token di accesso utilizzando:

gcloud auth application-default print-access-token.

binaria

L'account utente autenticato o l'account di servizio richiede l'autorizzazione resourcemanager.projects.create per creare un nuovo progetto. Il ruolo IAM Autore progetto, ad esempio, concede questa autorizzazione.

Per concedere questo ruolo, consulta Concedere, modificare e revocare l'accesso alle risorse.

Crea un nuovo progetto e un nuovo database

  1. Utilizza il metodo projects.create per avviare un'operazione di creazione del progetto. Nel corpo della richiesta, definisci una risorsa Project, ad esempio:

    HTTP

    POST https://cloudresourcemanager.googleapis.com/v1/projects HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
    Content-Type: application/json
    
    {
      "projectId": "project-id"
    }
          

    dove:

    Se l'operazione ha esito positivo, la richiesta restituisce un nome dell'operazione:

    200:
    
    {
      "name": "operations/cp.6311184959990822268"
    }
        
  2. Utilizza il nome dell'operazione del passaggio precedente e il metodo operations.get di Resource Manager per confermare la creazione del progetto:

    HTTP

    GET https://cloudresourcemanager.googleapis.com/v1/operations/operation-name HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
    

    Una volta completata la creazione del progetto, la risposta include il seguente campo:

    "done": true,
          
  3. Utilizza il metodo apps.create dell'API App Engine Admin per creare un'applicazione App Engine e un database Firestore. Nel corpo della richiesta, definisci una risorsa Applicazione e includi il campo databaseType, ad esempio:

    HTTP

    POST https://appengine.googleapis.com/v1/apps HTTP/1.1
    
    Authorization: Bearer access_token
    Accept: application/json
    Content-Type: application/json
    
    {
      "databaseType": "CLOUD_FIRESTORE",
      "id": "project-id",
      "locationId": "location"
    }
          

    dove:

    • project-id è l'ID del progetto che hai creato.
    • location imposta la località sia dell'applicazione App Engine sia del database Firestore. Una volta impostata, non puoi modificare la posizione. Per un elenco completo delle località supportate, consulta Località App Engine.

      App Engine e Firestore supportano le stesse località, ma le seguenti aree geografiche di App Engine sono mappate a più aree geografiche Firestore:

      • us-central (Iowa) crea un database Firestore nell'area geografica multipla nam5 (Stati Uniti).
      • europe-west (Belgio) crea un database Firestore nella eur3 Europa (più aree geografiche).

    La richiesta restituisce un nome dell'operazione:

    200:
    
    {
      "name": "apps/project-id/operations/8612e502-4aeb-4f12-9e41-bbac0a0b819c",
      "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "method": "google.appengine.v1.Applications.CreateApplication",
        "insertTime": "2020-06-05T23:34:32.587Z",
        "user": "username",
        "target": "apps/project-id"
      }
    }
            
  4. Utilizza il nome dell'operazione del passaggio precedente e apps.operations.get per confermare la creazione del database:

    HTTP

    GET https://appengine.googleapis.com/v1/operation-name HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
        

    Quando l'operazione ha esito positivo, la risposta include il seguente campo:

    "done": true,
          

Aggiungere un account di fatturazione e servizi Firebase

Per associare in modo programmatico un account di fatturazione al progetto, utilizza il metodo projects.updateBillingInfo.

Per attivare in modo programmatico i servizi Firebase per il tuo progetto, consulta l'articolo su come configurare e gestire un progetto Firebase utilizzando l'API REST di gestione.

Crea un database con gcloud

Puoi utilizzare lo strumento a riga di comando gcloud per automatizzare la creazione dei database in uno script Bash o PowerShell. Nello script, procedi come riportato di seguito:

  1. Crea un nuovo progetto con gcloud projects create:

    gcloud projects create project-id
  2. Attiva App Engine con gcloud app create:

    gcloud app create --region=region --project=project-id

    dove region è la posizione dell'applicazione App Engine e del database Firestore. Una volta impostata, non puoi modificare la posizione. Per un elenco completo delle località supportate, consulta Località di App Engine.

    App Engine e Firestore supportano le stesse località, ma le seguenti aree geografiche App Engine sono mappate a più aree geografiche Firestore:

    • us-central (Iowa) crea un database Firestore nell'area geografica multipla nam5 (Stati Uniti).
    • europe-west (Belgio) crea un database Firestore nella eur3 Europa (più aree geografiche).
  3. Abilita l'API App Engine Admin con gcloud services enable:

    gcloud services enable appengine.googleapis.com --project=project-id
  4. Crea un database Firestore con gcloud alpha firestore databases create o gcloud alpha datastore databases create:

    gcloud alpha firestore databases create --project=project-id --region=region

    Per creare un database VMware in modalità Datastore, utilizza:

    gcloud alpha datastore databases create --project=project-id --region=region

    Per region, devi utilizzare lo stesso valore utilizzato per attivare App Engine.

Crea un database con Terraform

Per eseguire il provisioning di un database Firestore con Terraform, utilizza la risorsa google_app_engine_application. Imposta database_type su CLOUD_FIRESTORE o CLOUD_DATASTORE_COMPATIBILITY.

Ad esempio, il seguente file di configurazione Terraform crea un nuovo progetto ed esegue il provisioning di un database Firestore:

firestore.tf

provider "google" {
  credentials = file("credentials-file")
}

resource "google_project" "my_project" {
  name = "My Project"
  project_id = "project-id"
}

resource "google_app_engine_application" "app" {
  project     = google_project.my_project.project_id
  location_id = "location"
  database_type = "CLOUD_FIRESTORE"
}

dove:

  • credentials-file è il percorso del file della chiave dell'account di servizio.
  • project-id è l'ID progetto. Gli ID progetto devono essere univoci.
  • location è la posizione sia dell'applicazione App Engine che del database Firestore. Una volta impostata, non puoi cambiare la posizione. Per un elenco completo delle località supportate, consulta Località di App Engine.

    App Engine e Firestore supportano le stesse località, ma le seguenti aree geografiche App Engine sono mappate a più aree geografiche di Firestore:

    • us-central (Iowa) crea un database Firestore nell'area geografica multipla nam5 (Stati Uniti).
    • europe-west (Belgio) crea un database Firestore nella eur3 Europa (più aree geografiche).