Trasferimento da S3 tramite CloudFront

I trasferimenti da Amazon S3 possono utilizzare una distribuzione Amazon CloudFront come percorso in uscita.

I trasferimenti di dati tramite CloudFront potrebbero beneficiare di costi di uscita AWS inferiori rispetto al trasferimento diretto da S3. Per i dettagli, consulta Prezzi di CloudFront e Costi in uscita S3.

L'utilizzo di CloudFront come percorso in uscita non espone i tuoi oggetti S3 al pubblico. Consulta La distribuzione di CloudFront espone i miei oggetti al pubblico?

Panoramica

Per trasferire i dati S3 tramite CloudFront, devi seguire questi passaggi:

Configurare le autorizzazioni IAM

Segui le istruzioni riportate in Autorizzazioni di trasferimento senza agenti per concedere le autorizzazioni Google Cloud richieste.

Configurare l'accesso al bucket S3

Segui le istruzioni riportate in Configurare l'accesso a un'origine: Amazon S3 per configurare l'accesso ai dati in Amazon S3.

Creare una distribuzione CloudFront per il bucket S3

  1. Nel tuo account AWS, vai a CloudFront.
  2. Fai clic su Crea una distribuzione CloudFront.
  3. In Dominio di origine seleziona il bucket S3.
  4. Il campo Percorso di origine deve essere lasciato vuoto.
  5. Accetta il Nome di origine compilato automaticamente o specifica un valore personalizzato.
  6. Nella sezione Accesso all'origine, seleziona Pubblico. In questo modo il bucket non diventa pubblico, ma indica a CloudFront che non deve essere configurato alcun meccanismo di accesso.
  7. Nella sezione Chiave della cache e richieste di origine :
    1. In Policy della cache seleziona CachingDisabled. In questo modo CloudFront non memorizza nella cache le richieste e non le invia ai visualizzatori non autenticati.
    2. In Policy delle richieste di origine seleziona AllViewerExceptHostHeader. In questo modo CloudFront può inoltrare le intestazioni di autenticazione a S3, in modo che Storage Transfer Service possa accedere al bucket con le tue credenziali sicure.
  8. Nella sezione Web Application Firewall (WAF), seleziona Non attivare.
  9. (Facoltativo) Scegli una classe di prezzo. Storage Transfer Service seleziona i pool di worker in base alla regione del bucket di origine, quindi i prezzi di CloudFront vengono applicati in quella regione. Per ottenere i prezzi più bassi, assicurati che il bucket di origine si trovi negli Stati Uniti o in Europa oppure seleziona Usa solo Nord America ed Europa come classe di prezzo in CloudFront.
  10. Fai clic su Crea distribuzione CloudFront.

    Una volta creata correttamente, viene visualizzata la pagina dei dettagli della distribuzione CloudFront.

  11. Prendi nota del nome di dominio della distribuzione. Ad esempio: https://dy1h2n3l4ob56.cloudfront.net. Se la pagina dei dettagli non include il protocollo https:// prima del nome di dominio della distribuzione, dovrai aggiungerlo tu quando crei il job di trasferimento.

Creare un job di trasferimento

Il trasferimento tramite una distribuzione CloudFront è supportato nella Google Cloud Console e nell'API REST.

Non includere informazioni sensibili come quelle che consentono l'identificazione personale (PII) oppure dati di sicurezza nel nome del job di trasferimento. I nomi delle risorse potrebbero essere propagati ai nomi di altre risorse Google Cloud e potrebbero essere esposti a sistemi interni di Google al di fuori del tuo progetto.

Google Cloud Console

Per creare un trasferimento utilizzando la Google Cloud Console, segui le istruzioni per creare un trasferimento.

Quando ti viene richiesto di inserire il dominio CloudFront, inserisci il nome di dominio della distribuzione annotato nella sezione precedente. Puoi trovare questo valore anche nella sezione CloudFront della console Amazon Web Services. Ha il formato https://dy1h2n3l4ob56.cloudfront.net.

API REST

Per creare un trasferimento utilizzando l'API REST, segui l'esempio nella pagina Creare trasferimenti.

Specifica il nome di dominio della distribuzione come valore del campo transferSpec.awsS3DataSource.cloudfrontDomain:

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
    "awsAccessKey": {
      "accessKeyId": "AWS_ACCESS_KEY_ID",
      "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
    }
  },
  ...
}

Risoluzione dei problemi

Errore AuthorizationHeaderMalformed

Se riscontri un errore AuthorizationHeaderMalformed che specifica una mancata corrispondenza della regione (ad esempio, the region 'Location A' is wrong; expecting 'Location B'), è probabile che sia dovuto a una configurazione CloudFront non supportata.

Questo errore si verifica se utilizzi una singola distribuzione CloudFront per gestire più bucket S3 che si trovano in regioni AWS diverse.

Per risolvere il problema, assicurati che ogni distribuzione CloudFront gestisca i bucket S3 in una sola regione AWS. Se hai bucket S3 in regioni diverse, crea una distribuzione CloudFront separata per ogni regione.

Domande frequenti

La distribuzione di CloudFront espone i miei oggetti al pubblico?

No. Se hai seguito i passaggi di configurazione descritti in questa pagina, i tuoi oggetti non sono esposti al pubblico.

  • CloudFront non ha accesso diretto ai tuoi oggetti S3.
  • Gli utenti ricevono un errore permission denied se tentano di accedere ai tuoi oggetti direttamente o tramite CloudFront (se il bucket è privato).
  • Storage Transfer Service firma le richieste a CloudFront utilizzando le credenziali fornite nel job di trasferimento, il che ci consente di scaricare i tuoi oggetti in modo sicuro come se li scaricassimo direttamente da S3. Questo funziona grazie all'impostazione di inoltro dell'intestazione AllViewerExceptHostHeader.