Transfert à partir de 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 à ceux des transferts directement depuis S3. Pour en savoir plus, consultez les tarifs de CloudFront et les frais de sortie S3.

L'utilisation de CloudFront comme chemin de sortie n'expose pas vos objets S3 au public. Consultez la section 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 chemin de l'origine doit être laissé vide.
  5. Acceptez le champ Nom de l'origine saisi automatiquement ou spécifiez votre propre valeur.
  6. Dans la section Accès à l'origine, sélectionnez Public. Cela ne rend pas votre bucket public, mais indique à CloudFront qu'aucun mécanisme d'accès ne doit être configuré.
  7. Dans la section Clé de mise en cache et requêtes concernant l'origine :
    1. Pour Règle de cache, sélectionnez CachingDisabled. Cela empêche CloudFront de mettre en cache les requêtes et de les diffuser auprès de lecteurs non authentifiés.
    2. Pour Règle de requête d'origine, sélectionnez AllViewerExceptHostHeader. CloudFront peut ainsi transférer les en-têtes d'authentification à S3, afin que le service de transfert de stockage puisse accéder à votre bucket avec vos identifiants sécurisés.
  8. Dans la section Pare-feu d'application Web (WAF), sélectionnez Ne pas activer.
  9. (Facultatif) Choisissez une Classe 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 de CloudFront sont donc appliqués dans cette région. Pour obtenir le tarif le plus bas, assurez-vous que votre bucket 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 créée, la page d'informations 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 devrez l'ajouter vous-même lors de la création de la tâche 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 la tâche de transfert. Les noms de ressources peuvent être propagés aux noms d'autres ressources Google Cloud et 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 permettant de créer un transfert.

Lorsque vous êtes invité à indiquer le domaine CloudFront, indiquez le nom du domaine de distribution que vous avez noté dans la section précédente. Cette valeur est également disponible dans la section CloudFront de la console Amazon Web Services. Elle est au format https://dy1h2n3l4ob56.cloudfront.net.

API REST

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

Spécifiez le nom du domaine de distribution en tant que 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 ne sont pas exposés au public.

  • Cloudfront ne dispose pas d'un 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 auprès de CloudFront à l'aide des identifiants que vous avez fournis dans la tâche de transfert, ce qui nous permet de télécharger vos objets de manière sécurisée, comme si nous les téléchargions directement à partir de S3. Cela fonctionne grâce au paramètre de transfert d'en-tête AllViewerExceptHostHeader.