HTTP

Il connettore HTTP fornisce connettività al servizio HTTP e utilizza API basate su HTTP. Il connettore supporta anche la connettività SSL/TLS tramite configurazione personalizzata e vari meccanismi di autenticazione come la concessione delle credenziali client OAuth 2.0, di base e Digest.

Prima di iniziare

Prima di utilizzare il connettore HTTP, svolgi le seguenti attività:

  • Nel tuo progetto Google Cloud:
    • Concedi il ruolo IAM roles/connectors.admin all'utente che configura il connettore.
    • Concedi i seguenti ruoli IAM all'account di servizio che vuoi utilizzare per il connettore:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      Un account di servizio è un tipo speciale di Account Google destinato a rappresentare una persona non umana utente che deve autenticarsi e avere l'autorizzazione ad accedere ai dati nelle API di Google. Se non hai un account di servizio, devi crearne uno. Per maggiori informazioni le informazioni, vedi Creazione di un account di servizio.

    • Attiva i seguenti servizi:
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Per informazioni su come abilitare i servizi, vedi Attivazione dei servizi.

    Se questi servizi o autorizzazioni non sono stati abilitati in precedenza per il tuo progetto, ti viene chiesto di abilitarli durante la configurazione del connettore.

Configura il connettore

Per configurare il connettore è necessario creare una connessione al tuo origine dati (sistema di backend). Una connessione è specifica per un'origine dati. it significa che se hai molte origini dati, devi creare una connessione separata per ogni origine dati. Per creare una connessione:

  1. Nella console Cloud, vai a Connettori di integrazione > Pagina Connessioni e poi selezionare o creare un progetto Google Cloud.

    Vai alla pagina Connessioni

  2. Fai clic su + Crea nuova per aprire la pagina Crea connessione.
  3. Nella sezione Località, scegli la località della connessione.
    1. Regione: seleziona una località dall'elenco a discesa.

      Per l'elenco di tutte le regioni supportate, consulta Località.

    2. Fai clic su Avanti.
  4. Nella sezione Dettagli connessione, completa quanto segue:
    1. Connettore: seleziona HTTP dall'elenco a discesa dei connettori disponibili.
    2. Versione connettore: seleziona la versione del connettore dall'elenco a discesa delle versioni disponibili.
    3. Nel campo Nome connessione, inserisci un nome per l'istanza di connessione.

      I nomi delle connessioni devono soddisfare i seguenti criteri:

      • I nomi delle connessioni possono contenere lettere, numeri o trattini.
      • Le lettere devono essere minuscole.
      • I nomi delle connessioni devono iniziare con una lettera e terminare con una lettera o un numero.
      • I nomi delle connessioni non possono contenere più di 49 caratteri.
    4. Facoltativamente, inserisci una descrizione per l'istanza di connessione.
    5. Se vuoi, attiva Cloud Logging e poi seleziona un livello di log. Per impostazione predefinita, il livello di log è impostato su Error.
    6. Account di servizio: seleziona un account di servizio con i ruoli richiesti.
    7. Se vuoi, per controllare lo stato della connessione, specifica un URL endpoint nel campo Controllo stato. L'URL può anche includere un indirizzo IP di allegato dell'endpoint. Lo stato è attivo per impostazione predefinita.
    8. Facoltativamente, configura le impostazioni del nodo di connessione:

      • Numero minimo di nodi: inserisci il numero minimo di nodi di connessione.
      • Numero massimo di nodi: inserisci il numero massimo di nodi di connessione.

      Un nodo è un'unità (o una replica) di una connessione che elabora le transazioni. Sono necessari più nodi per elaborare più transazioni per una connessione e, al contrario, meno nodi per elaborare meno transazioni. Per capire in che modo i nodi influiscono sui prezzi dei connettori, consulta Prezzi per i nodi di connessione. Se non inserisci alcun valore, per impostazione predefinita il numero minimo di nodi è impostato su 2 (per una maggiore disponibilità) e il numero massimo di nodi è impostato su 50.

    9. Utilizza proxy: seleziona la casella di controllo per configurare un server proxy per la connessione.
      1. Fai clic su + Aggiungi destinazione.
      2. Seleziona un Tipo di destinazione.
        • Indirizzo host: specifica il nome host o l'indirizzo IP della destinazione.

          Se vuoi stabilire una connessione privata al tuo backend, segui questi passaggi:

    10. Facoltativamente, fai clic su + AGGIUNGI ETICHETTA per aggiungere un'etichetta alla connessione sotto forma di coppia chiave/valore.
    11. Se vuoi utilizzare SSL, seleziona Abilita SSL. Vengono visualizzati i dettagli della configurazione SSL.
      1. Seleziona un tipo di magazzino attendibile. Può essere Pubblico, Privato o Connessione non sicura.
      2. Seleziona i certificati come visualizzati in base alla selezione dell'archivio di attendibilità.
      3. Se utilizzi mTLS, seleziona i certificati dell'archivio chiavi nella sezione Archivio chiavi.
      4. Facoltativamente, seleziona la versione TLS.
      5. Inserisci il pacchetto di crittografia supportato. Inserisci più suite di crittografia, come separati da virgole. Per ulteriori informazioni, vedi Suite di crittografia supportate.
    12. Fai clic su Avanti.
  5. Nella sezione Destinazioni, inserisci i dettagli dell'host remoto (sistema di backend) a cui vuoi connetterti.
    1. Tipo di destinazione: seleziona un Tipo di destinazione.
      • Seleziona Indirizzo host dall'elenco per specificare il nome host o l'indirizzo IP della destinazione.
      • Se vuoi stabilire una connessione privata ai tuoi sistemi di backend, seleziona Allegato endpoint dall'elenco, quindi seleziona l'allegato endpoint richiesto dall'elenco Allegato endpoint.

      Se vuoi stabilire una connessione pubblica ai tuoi sistemi di backend con una maggiore sicurezza, puoi prendere in considerazione la configurazione di indirizzi IP statici in uscita per le tue connessioni, quindi configurare le regole del firewall in modo da inserire nella lista consentita solo gli indirizzi IP statici specifici.

      Per inserire altre destinazioni, fai clic su + Aggiungi destinazione.

    2. Fai clic su Avanti.
  6. Nella sezione Autenticazione, inserisci i dettagli di autenticazione.
    1. Seleziona un Tipo di autenticazione e inserisci i dettagli pertinenti.

      La connessione HTTP supporta i seguenti tipi di autenticazione:

    2. Per capire come configurare questi tipi di autenticazione, consulta Configurare l'autenticazione.

    3. Fai clic su Avanti.
  7. Verifica: controlla i dettagli della connessione e dell'autenticazione.
  8. Fai clic su Crea.

Configura autenticazione

Inserisci i dettagli in base all'autenticazione che vuoi utilizzare.

  • Autenticazione personalizzata

    I dettagli di autorizzazione personalizzati possono essere aggiunti come intestazione della richiesta durante l'esecuzione dell'azione della task Connettori.

  • OAuth 2.0 - Concessione delle credenziali client
    • ID client: l'ID client da utilizzare per l'autenticazione della richiesta HTTP.
    • Client Secret: secret di Secret Manager contenente il client secret per l'autenticazione della richiesta HTTP.
    • Formato della richiesta per il token di accesso: il formato della richiesta da utilizzare nelle richieste effettuate per recuperare il token di accesso dal server di autenticazione. Seleziona body per passare l'ID cliente e il segreto come corpo della richiesta oppure header per passarli come intestazione codificata.
    • Percorso richiesta token: percorso della richiesta da aggiungere all'URL del server di autenticazione per recuperare l'URL del token di accesso.
    • Scadenza predefinita: data di scadenza predefinita (in secondi) per il token di accesso. Questo valore verrà utilizzato nel caso in cui la risposta del token di accesso non abbia una data e un'ora di scadenza. Se non viene fornito alcun valore, il token verrà aggiornato tra 6 ore.
  • Autenticazione di base
    • Nome utente: il nome utente utilizzato per effettuare una richiesta HTTP.
    • Password: il segreto Secret Manager contenente la password associata al nome utente fornito.
  • Autenticazione Digest
    • Nome utente: il nome utente utilizzato per effettuare una richiesta HTTP.
    • Password: il segreto Secret Manager contenente la password associata al nome utente fornito.
  • OAuth 2.0 - Codice di autorizzazione
    • ID client : l'ID client fornito dall'applicazione esterna.
    • Ambiti : gli ambiti delle autorizzazioni supportati dalla tua applicazione esterna.
    • Client secret: seleziona il secret di Secret Manager. Devi aver creato il secret di Secret Manager prima di configurare questa autorizzazione.
    • Versione secret: versione del secret di Secret Manager per il client secret.
    • Se il server di backend lo supporta, puoi attivare l'opzione PKCE (Proof Key for Code Exchange).
    • URL di autorizzazione: inserisci l'URL di autorizzazione per la tua applicazione esterna.
    • URL token di accesso : inserisci l'URL per ricevere il token di accesso dell'applicazione esterna.

    Per il tipo di autenticazione Authorization code, dopo aver creato la connessione, devi eseguire alcuni passaggi aggiuntivi per configurare l'autenticazione. Per ulteriori informazioni, consulta Passaggi aggiuntivi dopo la creazione della connessione.

  • Account di servizio

    Seleziona questa opzione per eseguire l'autenticazione utilizzando l'account di servizio che hai fornito i passaggi precedenti durante la configurazione di questa connessione. Assicurati di avere fornito all'account di servizio i ruoli e le autorizzazioni IAM pertinenti richiesti per l'autenticazione.

    • Ambiti: seleziona gli ambiti OAuth 2.0 richiesti dal menu a discesa. Per ulteriori informazioni, consulta Ambiti di accesso.
  • Autenticazione del token dell'ID dell'account di servizio

    Seleziona questa opzione per eseguire l'autenticazione utilizzando il token ID generato dall'account di servizio che che hai indicato nei passaggi precedenti. Questa autenticazione utilizza token web JSON (JWT) per l'autenticazione. Il fornitore di token di identità firma ed emette i JWT per l'autenticazione utilizzando un account di servizio.

    • Pubblico: inserisci i destinatari a cui è destinato il JWT.
    • Nome intestazione: inserisci il nome dell'intestazione per il token ID generato da utilizzare nell'intestazione HTTP. In caso contrario specificare qualsiasi valore per questo campo. Per impostazione predefinita, il valore della chiave è impostato su Authorization.
  • Autenticazione con chiave API

    Seleziona questa opzione per eseguire l'autenticazione mediante una chiave API.

    • Chiave API: seleziona l'API secret di Secret Manager della chiave API.
    • Versione del secret: seleziona la versione del secret.
    • Nome parametro chiave API: inserisci un nome parametro per la chiave API. Una chiave API viene inviata come coppia chiave-valore. Il valore inserito qui verrà utilizzato come nome della chiave per la chiave API che hai selezionato in precedenza.
    • Posizione della chiave API: seleziona dove vuoi aggiungere la chiave API nella richiesta.

Suite di crittografia supportate

Versione TLS Suite di crittografia supportate
1.2
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
1.3
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_GCM_SHA256

Passaggi aggiuntivi dopo la creazione della connessione

Se hai selezionato OAuth 2.0 - Authorization code per l'autenticazione, devi eseguire i seguenti passaggi aggiuntivi dopo aver creato la connessione:

  1. Nella pagina Connessioni, individuare la connessione appena creata.

    Tieni presente che lo stato del nuovo connettore sarà Autorizzazione richiesta.

  2. Fai clic su Autorizzazione obbligatoria.

    Viene visualizzato il riquadro Modifica autorizzazione.

  3. Copia il valore dell'URI di reindirizzamento nell'applicazione esterna.
  4. Verifica i dettagli dell'autorizzazione.
  5. Fai clic su Autorizza.

    Se l'autorizzazione va a buon fine, lo stato della connessione verrà impostato su Attivo nella pagina Connessioni.

Nuova autorizzazione per il codice di autorizzazione

Se utilizzi il tipo di autenticazione Authorization code e hai apportato modifiche alla configurazione dell'applicazione HTTP di backend, devi autorizzare di nuovo la connessione HTTP. Per autorizzare di nuovo una connessione, segui questi passaggi:

  1. Fai clic sulla connessione richiesta nella pagina Connessioni.

    Viene visualizzata la pagina dei dettagli della connessione.

  2. Fai clic su Modifica per modificare i dettagli della connessione.
  3. Verifica i dettagli del codice di autorizzazione OAuth 2.0 nella sezione Autenticazione.

    Se necessario, apporta le modifiche necessarie.

  4. Fai clic su Salva. Verrà visualizzata la pagina dei dettagli della connessione.
  5. Fai clic su Modifica autorizzazione nella sezione Autenticazione. Viene visualizzato il riquadro Autorizza.
  6. Fai clic su Autorizza.

    Se l'autorizzazione va a buon fine, lo stato della connessione verrà impostato su Attivo nella pagina Connessioni.

Entità, operazioni e azioni

Tutti i connettori di integrazione forniscono un livello di astrazione per gli oggetti l'applicazione connessa. Puoi accedere agli oggetti di un'applicazione solo tramite questa astrazione. L'astrazione ti viene esposta sotto forma di entità, operazioni e azioni.

  • Entità: un'entità può essere considerata un oggetto o una raccolta di proprietà nell'applicazione o nel servizio collegato. La definizione di un'entità varia da un connettore all'altro. Ad esempio, in un connettore di database, le tabelle sono le entità, connettore file server, le cartelle sono le entità e, in un connettore del sistema di messaggistica, le code sono le entità.

    Tuttavia, è possibile che un connettore non supporti o non abbia entità, nel qual caso l'elenco Entities sarà vuoto.

  • Operazione: un'operazione è l'attività che puoi eseguire su un'entità. Puoi eseguire una qualsiasi delle seguenti operazioni su un'entità:

    Selezionando un'entità dall'elenco disponibile, viene generato un elenco di le operazioni disponibili per l'entità. Per una descrizione dettagliata delle operazioni, consulta le operazioni sulle entità dell'attività Connettori. Tuttavia, se un connettore non supporta nessuna delle operazioni sulle entità, queste operazioni non supportate non sono elencate nell'elenco Operations.

  • Azione: un'azione è una funzione di prima classe resa disponibile per l'integrazione. attraverso l'interfaccia del connettore. Un'azione consente di apportare modifiche a una o più entità variano da connettore a connettore. Normalmente, un'azione ha alcuni parametri di input e un output . Tuttavia, è possibile che un connettore non supporta alcuna azione, nel qual caso l'elenco Actions sarà vuoto.

Limitazioni di sistema

Il connettore HTTP può elaborare 100 transazioni al secondo per nodo e limita le transazioni oltre questo limite. Per impostazione predefinita, Integration Connectors alloca due nodi (per una migliore disponibilità) per una connessione.

Per informazioni sui limiti applicabili a Integration Connectors, vedi Limiti.

Azioni supportate

Il connettore HTTP supporta le seguenti azioni:

Azione HttpRequest

Le seguenti tabelle descrivono i parametri di input e output dell'azione HttpRequest.

Parametri di input dell'azione HttpRequest

Nome parametro Tipo di dati Obbligatorio Descrizione
URL Struct No URL per cui vuoi inviare la richiesta. L'URL è nel formato <scheme>://<netloc>/<path>;<params>?<query>#<fragment>. Se specifichi il valore netloc, questo sostituisce il nome host fornito durante la creazione della connessione.
Metodo Stringa No Metodo di richiesta HTTP, ad esempio GET, POST, DELETE o PUT. Il valore predefinito è GET.
Intestazioni Struct No Intestazioni delle richieste HTTP.
Corpo Stringa No Corpo della richiesta HTTP.
RequestHasBytes Booleano No Indica se inviare la richiesta come byte. Se impostato su true, devi inviare la richiesta come stringa codificata in Base64 nel parametro Body. Il valore predefinito è false.
ResponseHasBytes Booleano No Indica se ricevere la risposta sotto forma di byte. Se impostato su true, riceverai la risposta come stringa codificata Base64 nel parametro di output ResponseBody. Il valore predefinito è false.
HttpVersion Stringa No La versione HTTP da utilizzare per effettuare una richiesta. I valori supportati sono 1.1 e 2. Se specifichi la versione 2, viene eseguita la negoziazione ALPN (Application-Layer Protocol Negotiation) e verrà utilizzata la versione 1.1 se il server non supporta la versione 2. Il valore predefinito è 2.
ResponseFormat Stringa No Specifica il formato della risposta dal connettore. I valori supportati sono v1 e v2. Il valore predefinito è v1.

Risposta v1 di esempio:

[{
"ResponseBody": "{\n \"status\": 200\n}"
}, {
"StatusCode": 200.0
}, {
"HttpVersion": "2"
}, {
"ResponseHeaders": {
":status": "200",
"content-length": "19"
}
}]

Esempio di risposta v2:

[{
"ResponseBody": "{\n \"status\": 200\n}",
"StatusCode": 200.0,
"HttpVersion": "2",
"ResponseHeaders": {
":status": "200",
"content-length": "19"
}
}]
FailOnError Booleano No Specifica il comportamento della connessione quando si verifica un errore nell'applicazione di backend.
  • true: genera un'eccezione. L'eccezione generata dal backend viene propagata nella risposta della connessione.
  • false: non genera un'eccezione. ma restituisce il codice e il messaggio di errore nella risposta.

Il valore predefinito è true.

Timeout Numero intero No Valore del timeout per la richiesta HTTP in secondi. Il valore massimo consentito è 150 secondi.

Parametri di output dell'azione HttpRequest

Nome parametro Tipo di dati Descrizione
ResponseBody Stringa Risposta ricevuta dal server HTTP.
StatusCode Numero intero Codice di stato ricevuto dal server HTTP.
HttpVersion Stringa Versione negoziata per la richiesta HTTP.
ResponseHeaders Struct Intestazioni delle risposte HTTP sotto forma di coppie key,value.

Esempi

Gli esempi di questa sezione descrivono le seguenti operazioni:

  • configura un payload di richieste
  • Invia contenuti in byte
  • Ottenere i contenuti dei byte

La tabella seguente elenca gli scenari di esempio e la configurazione corrispondente nell'attività Connettori:

Attività Configurazione
configura un payload di richieste
  1. Nella finestra di dialogo Configure connector task, fai clic su Actions.
  2. Seleziona l'azione HttpRequest e poi fai clic su Fine.
  3. Nella sezione Input attività dell'attività Connettori, fai clic su connectorInputPayload, quindi inserisci un valore simile al seguente nella Campo Default Value:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
        "path": "post",
        "query": "example=A&sort=value",
        "fragment": "exampleFragment"
      },
      "Method": "POST",
      "Headers": {
        "Accept": ["application/json", "application/xml"],
        "a": "b"
      },
      "Body": "{\"thisIsRequestJSON\":\"someValue\"}"
    }
  4. Fai clic su Salva.

Questo esempio effettua una richiesta POST all'URL https://httpbin.org/post?example=A&=value#exampleFragment. Inoltre, poiché netloc viene fornito nel payload, sostituisce il nome host fornito durante la creazione della connessione.

Invia contenuti byte

Per inviare contenuti in byte (ad esempio file), devi impostare l'attributo della richiesta RequestHasBytes su true e l'attributo body sulla stringa codificata Base64 che vuoi inviare, come mostrato nell'esempio seguente.

  1. Nella finestra di dialogo Configure connector task, fai clic su Actions.
  2. Seleziona l'azione HttpRequest e poi fai clic su Fine.
  3. Nella sezione Input attività dell'attività Connettori, fai clic su connectorInputPayload, quindi inserisci un valore simile al seguente nella Campo Default Value:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
      },
      "Method": "POST",
      "Headers": {
        "Accept": ["application/json", "application/xml"],
        "a": "b"
      },
      "Body": "SGVsbG8gV29ybGQ=",
      "RequestHasBytes":true
    }
  4. Fai clic su Salva.

In questo esempio viene effettuata una richiesta POST al server httpbin.org e nel corpo della richiesta invia i contenuti del file sotto forma di stringa codificata Base64. Il server può decidere come elaborare i contenuti del file.

Ottenere i contenuti dei byte

Per ottenere i byte (come stringa Base64) dal server, devi impostare l'attributo della richiesta ResponseHasBytes su true, come mostrato nell'esempio seguente.

  1. Nella finestra di dialogo Configure connector task, fai clic su Actions.
  2. Seleziona l'azione HttpRequest e poi fai clic su Fine.
  3. Nella sezione Input attività dell'attività Connettori, fai clic su connectorInputPayload, quindi inserisci un valore simile al seguente nella Campo Default Value:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
      },
      "Method": "GET",
      "ResponseHasBytes":true
    }
  4. Fai clic su Salva.

In questo esempio viene effettuata una richiesta GET al server httpbin.org e nel corpo della richiesta imposta ResponseHasBytes su true.

Codici di errore

Questa sezione descrive i messaggi di errore che potresti ricevere quando utilizzi la connessione HTTP.

Messaggio di errore Causa
Errore di connessione al server HTTP La connessione HTTP non è riuscita a stabilire la connessione con il server a causa di un errore di handshake SSL o di un endpoint del server HTTP errato.
Risposta di errore ricevuta dal server HTTP Il server HTTP a cui stai tentando di connetterti restituisce una risposta di errore con il codice di stato 4xx o 5xx. Esempio di risposta:
{
  "error": {
    "code": 400,
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "metadata": {
          "Body": "{\"thisIsResponseJSON\":\"someValue\"}"
          "Error": "Error response received from the HTTP server",
          "Headers": "{\":status\":[\"400\"], \"access-control-allow-credentials\":[\"true\"]}",
          "StatusCode": "400",
          "connection_type": "Http"
        }
      }
    ],
    "message": "Unable to execute HTTP Request",
    "status": "FAILED_PRECONDITION"
  }
}
Errore durante il recupero del token di accesso Si è verificato un errore durante il recupero del token di accesso per il tipo di autenticazione OAuth Client Credentials Grant.
Errore di autenticazione Digest Il runtime del connettore non ha ricevuto una verifica del digest o la verifica è di tipo non supportato.

Utilizzare Terraform per creare connessioni

Puoi utilizzare il comando Terraform risorsa per creare una nuova connessione.

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.

Per visualizzare un modello Terraform di esempio per la creazione di connessioni, vedi il modello di esempio.

Quando crei questa connessione utilizzando Terraform, devi impostare le seguenti variabili nel file di configurazione di Terraform:

Nome parametro Tipo di dati Obbligatorio Descrizione
proxy_enabled BOOLEANO Falso Seleziona questa casella di controllo per configurare un server proxy per la connessione.

Utilizzare la connessione HTTP in un'integrazione

Dopo aver creato la connessione, questa diventa disponibile in Apigee Integration e Application Integration. Puoi usare la connessione in un'integrazione tramite l'attività Connettori.

  • Per informazioni su come creare e utilizzare l'attività Connectors in Apigee Integration, consulta Attività Connectors.
  • Per informazioni su come creare e utilizzare l'attività Connettori in Application Integration, consulta Attività Connettori.

Ricevi assistenza dalla community Google Cloud

Puoi pubblicare le tue domande e discutere di questo connettore nella community Google Cloud ai forum Cloud.

Passaggi successivi