Transférer des données depuis S3 via CloudFront

Les transferts depuis Amazon S3 peuvent utiliser une distribution Amazon CloudFront comme chemin de sortie.

Les transferts de données via CloudFront peuvent bénéficier de coûts de sortie AWS inférieurs par rapport aux transferts directs depuis S3. Voir les tarifs de CloudFront ; Frais de sortie S3 pour en savoir plus.

L'utilisation de CloudFront comme chemin de sortie n'expose pas vos objets S3 au public. Consultez la page L'utilisation de CloudFront expose-t-elle mes objets au public ?

Présentation

Pour transférer des données S3 via CloudFront, procédez comme suit:

Configurer les autorisations IAM

Suivez les instructions de la section Autorisations de transfert sans agent pour accorder les autorisations Google Cloud requises.

Configurer l'accès à votre bucket S3

Suivez les instructions de la section Configurer l'accès à une source : Amazon S3 pour configurer l'accès à vos données dans Amazon S3.

Créer une distribution CloudFront pour votre bucket S3

  1. Dans votre compte AWS, accédez à CloudFront.
  2. Cliquez sur Créer une distribution CloudFront.
  3. Sous Domaine d'origine, sélectionnez votre bucket S3.
  4. Le champ Chemin d'origine doit être laissé vide.
  5. Acceptez le nom d'origine renseigné automatiquement ou spécifiez votre propre valeur.
  6. Dans la section Accès à l'origine, sélectionnez Public. Votre bucket ne devient pas public. CloudFront indique simplement qu'aucun mécanisme d'accès ne doit être configuré.
  7. Dans la section Clé de cache et requêtes d'origine :
    1. Pour Règle de cache, sélectionnez CachingDisabled. Cela empêche CloudFront depuis la mise en cache des requêtes et leur diffusion auprès de lecteurs non authentifiés.
    2. Pour Règle de requête d'origine, sélectionnez AllViewerExceptHostHeader. Ce permet à CloudFront de transmettre les en-têtes d'authentification à S3, de sorte que Le service de transfert de stockage peut accéder à votre bucket à l'aide de vos identifiants sécurisés.
  8. Dans la section Pare-feu d'application Web (WAF), sélectionnez Ne pas activer.
  9. (Facultatif) Sélectionnez une catégorie de prix. Le service de transfert de stockage sélectionne les pools de nœuds de calcul en fonction de la région du bucket source. Les tarifs CloudFront sont donc facturés dans cette région. Pour bénéficier du tarif le plus bas, assurez-vous que votre source se trouve aux États-Unis ou en Europe, ou sélectionnez Utiliser uniquement l'Amérique du Nord et l'Europe. comme classe de prix dans CloudFront.
  10. Cliquez sur Créer une distribution CloudFront.

    Une fois la distribution créée, la page des détails de la distribution CloudFront s'affiche.

  11. Notez le nom de domaine de distribution. Exemple : https://dy1h2n3l4ob56.cloudfront.net. Si la page d'informations n'inclut pas le protocole https:// devant le nom du domaine de distribution, vous avez besoin pour l'ajouter vous-même lors de la création du job de transfert.

Créer un job de transfert

Le transfert via une distribution CloudFront est possible dans la console Google Cloud et l'API REST.

N'incluez pas d'informations sensibles telles que des informations permettant d'identifier personnellement l'utilisateur ou des données de sécurité dans le nom de votre tâche de transfert. Les noms de ressources peuvent être propagés vers les noms d'autres ressources Google Cloud et peuvent être exposés aux systèmes internes de Google, en dehors de votre projet.

console Google Cloud

Pour créer un transfert à l'aide de la console Google Cloud, suivez les instructions pour créez un transfert.

Lorsque vous êtes invité à saisir le domaine CloudFront, saisissez le nom de domaine de distribution que vous avez noté dans la section précédente. Vous pouvez également trouver cette valeur dans la section CloudFront de la console Amazon Web Services. Il se présente au format https://dy1h2n3l4ob56.cloudfront.net.

API REST

Pour créer un transfert à l'aide de l'API REST, suivez l'exemple sur la page Créer des transferts.

Spécifiez le nom de domaine de distribution comme valeur du champ 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"
    }
  },
  ...
}

Questions fréquentes

L'utilisation de CloudFront expose-t-elle mes objets au public ?

Non. Si vous avez suivi les étapes de configuration décrites sur cette page, vos objets sont n'est pas exposée au public.

  • Cloudfront n'a pas d'accès direct à vos objets S3.
  • Les utilisateurs reçoivent une erreur permission denied s'ils tentent d'accéder à vos objets directement ou via CloudFront (si votre bucket est privé).
  • Le service de transfert de stockage signe les requêtes envoyées à CloudFront à l'aide des identifiants que vous avez fournis dans la tâche de transfert. Cela nous permet de télécharger vos objets de manière sécurisée, comme si nous les téléchargions directement depuis S3. Cela fonctionne grâce au paramètre de transfert d'en-tête AllViewerExceptHostHeader.