Comment diffuser un site web statique hébergé sur Amazon S3 à l'aide de CloudFront ?

Lecture de 11 minute(s)
0

Je souhaite héberger un site web statique à l'aide d'un compartiment Amazon Simple Storage Service (Amazon S3). Ensuite, je souhaite diffuser mon site web via une distribution Amazon CloudFront.

Brève description

Pour diffuser un site web statique hébergé sur Amazon S3, choisissez l'une des configurations suivantes pour déployer une distribution CloudFront :

  • Utilisez un point de terminaison d'API REST comme origine et limitez l'accès à l'aide d'un contrôle d'accès d'origine (OAC) ou d'une identité d'accès d'origine (OAI)
    **Remarque :**il est recommandé d'utiliser le contrôle d'accès d'origine (OAC) pour limiter l'accès. L'identité d'accès d'origine (OAI) est une ancienne méthode utilisée pour ce processus.
  • Utiliser le point de terminaison d'un site web comme point d'origine et autoriser l'accès anonyme (public)
  • Utiliser le point de terminaison d'un site web comme point d'origine et limiter l'accès à l'aide d'un en-tête Referer
  • Utiliser AWS CloudFormation pour déployer un point de terminaison de site web statique en tant qu'origine et un domaine personnalisé pointant vers CloudFront

Pour plus d'informations sur les deux types de point de terminaison, voir Principales différences entre un point de terminaison de site web et un point de terminaison d'API REST.

Résolution

Pour configurer une distribution CloudFront avec le type de point de terminaison S3 que vous souhaitez utiliser comme origine, procédez comme suit :

Utiliser un point de terminaison d'API REST comme origine et limitez l'accès avec un OAC ou un OAI (ancienne méthode)

1.    Ouvrez la console Amazon S3 pour créer un compartiment et télécharger les fichiers de votre site web.

Remarque : pour cette configuration, vous n'avez pas besoin d'activer l'hébergement de sites web statiques sur votre compartiment. Cette configuration utilise le point de terminaison de l'API REST du compartiment au lieu du point de terminaison du site web issu de la fonctionnalité d'hébergement de sites web statiques.

2.    Créez une distribution web CloudFront. Après avoir défini les paramètres de distribution de votre cas d'utilisation, suivez les étapes décrites dans l'une des sections suivantes pour limiter l'accès à l'origine Amazon S3. Il est recommandé d'utiliser l'OAC, car l'OAI est une ancienne méthode.

OAC

Lorsque vous créez une distribution, saisissez le nom de votre compartiment Amazon S3 dans le champ Domaine d'origine.

Sous Accès à l'origine, sélectionnez Paramètres de contrôle d'accès à l'origine (recommandé).

Dans la liste déroulante Contrôle d'accès à l'origine, sélectionnez le nom de l'OAC, puis Créer un paramètre de contrôle.

Dans la boîte de dialogue, nommez le paramètre de contrôle **.*. Il est recommandé de conserver le paramètre par défaut Signer les requêtes (recommandé). Cliquez ensuite sur Créer.

CloudFront fournit l'instruction de stratégie permettant à l'OAC d'accéder à votre compartiment Amazon S3 une fois la distribution créée. Sélectionnez Copier la stratégie et collez-la dans la configuration de la stratégie de votre compartiment S3.

OAI

Lorsque vous créez une distribution, saisissez le nom de votre compartiment Amazon S3 dans le champ Domaine d'origine.

Sous Accès à l'origine, sélectionnez Anciennes identités d'accès.

Dans la liste déroulante Identité d'accès à l'origine, sélectionnez le nom de l'identité d'accès à l'origine. Sélectionnez ensuite Créer une OAI.

Dans la boîte de dialogue, nommez votre nouvelle identité d'accès d'origine et cliquez sur Créer.

Pour la stratégie de compartiment, sélectionnez Oui, mettre à jour la stratégie de compartiment.

3.    Lorsque vous créez une distribution, il est recommandé d'utiliser le protocole SSL (HTTPS) pour votre site web. Pour utiliser un domaine personnalisé avec le protocole HTTPS, sélectionnez Certificat SSL personnalisé.Pour demander un nouveau certificat, Choisissez Demander un certificat. Si vous n'utilisez pas de domaine personnalisé, vous pouvez toujours utiliser le protocole HTTPS avec le nom de domaine cloudfront.net pour votre distribution.
Important : si vous saisissez des noms de domaine alternatifs (CNAME) pour votre distribution, les CNAME doivent correspondre au certificat SSL que vous avez sélectionné. Pour résoudre les problèmes liés à votre certificat SSL, consultez la page Comment résoudre les problèmes liés à l'utilisation d'un certificat SSL personnalisé pour ma distribution CloudFront ?

4.    Mettez à jour les enregistrements DNS de votre domaine afin de faire pointer le domaine de votre site web vers CloudFront. Vous trouverez le nom de domaine de votre distribution dans la console CloudFront. Le nom de domaine ressemble à celui qui est indiqué dans l'exemple suivant : d1234abcd.cloudfront.net.

5.    Attendez que vos modifications DNS se propagent et que les entrées DNS précédentes expirent.
**Remarque :**le délai d'expiration des valeurs DNS précédentes dépend de la valeur TTL définie dans votre zone hébergée. Il dépend également de l'utilisation de ces valeurs TTL par votre résolveur local.

Utiliser le point de terminaison d'un site web comme point d'origine et autoriser l'accès anonyme (public)

Cette configuration autorise l'accès public en lecture au compartiment de votre site web. Pour plus d'informations, consultez la page Configuration des autorisations d'accès au site web.
Remarque : lorsque vous utilisez le point de terminaison du site web statique Amazon S3, les connexions entre CloudFront et Amazon S3 ne sont disponibles que via HTTP. Pour utiliser le protocole HTTPS pour les connexions entre CloudFront et Amazon S3, configurez un point de terminaison d'API REST S3 pour votre origine.

  1. Ouvrez la console Amazon S3 pour créer un compartiment et activer l'hébergement de sites web statiques sur le compartiment.
  2. Dans la boîte de dialogue Hébergement de sites web statiques, copiez le point de terminaison de votre compartiment sans l'en-tête http://. Le format est semblable à DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Vous aurez besoin du point de terminaison sous ce format pour une étape ultérieure.
  3. Ajoutez une stratégie de compartiment qui autorise le public à accéder en lecture au compartiment que vous avez créé.
    Remarque : pour cette configuration, vous devez désactiver les paramètres de blocage de l'accès public du compartiment S3. Si votre cas d'utilisation nécessite l'activation des paramètres de blocage de l'accès public, utilisez le point de terminaison d'API REST comme point d'origine. Limitez ensuite l'accès à l'aide d'un contrôle d'accès d'origine (OAC) ou d'une identité d'accès d'origine (OAI).
  4. Créez une distribution web CloudFront. Après avoir défini les paramètres de distribution de votre cas d'utilisation, procédez comme suit :
    Dans le champ Domaine d'origine, saisissez le point de terminaison que vous avez copié à l'étape précédente.
    **Remarque :**ne sélectionnez pas le compartiment sur la liste déroulante. La liste déroulante inclut uniquement les points de terminaison d'API REST du compartiment S3 que vous n'utilisez pas dans cette configuration.
  5. Lorsque vous créez une distribution, il est recommandé d'utiliser le protocole SSL (HTTPS) pour votre site web. Pour utiliser un domaine personnalisé avec le protocole HTTPS, sélectionnez Certificat SSL personnalisé.Pour demander un nouveau certificat, Choisissez Demander un certificat. Si vous n'utilisez pas de domaine personnalisé, vous pouvez toujours utiliser le protocole HTTPS avec le nom de domaine cloudfront.net pour votre distribution.
    Important : si vous saisissez des noms de domaine alternatifs (CNAME) pour votre distribution, les CNAME doivent correspondre au certificat SSL que vous avez sélectionné. Pour résoudre les problèmes liés à votre certificat SSL, consultez la page Comment résoudre les problèmes liés à l'utilisation d'un certificat SSL personnalisé pour ma distribution CloudFront ?
  6. Mettez à jour les enregistrements DNS de votre domaine afin de faire pointer le domaine de votre site web vers CloudFront. Vous trouverez le nom de domaine de votre distribution dans la console CloudFront. Le format du nom de domaine est semblable à celui indiqué dans l'exemple suivant : d1234abcd.cloudfront.net.
  7. Attendez que vos modifications DNS se propagent et que les entrées DNS précédentes expirent.
    **Remarque :**le délai d'expiration des valeurs DNS précédentes dépend de la valeur TTL définie dans votre zone hébergée. Il dépend également de l'utilisation de ces valeurs TTL par votre résolveur local.

Utiliser le point de terminaison d'un site web comme point d'origine et limiter l'accès à l'aide d'un en-tête Referer

Important : vérifiez si l'accès autorisé par cette configuration répond aux exigences de votre cas d'utilisation.

Cette configuration définit un en-tête Referer personnalisé sur la distribution afin de limiter l'accès. De plus, elle utilise une stratégie de compartiment pour autoriser l'accès uniquement aux requêtes ayant l'en-tête Referer personnalisé.

Remarque : lorsque vous utilisez le point de terminaison du site web statique Amazon S3, les connexions entre CloudFront et Amazon S3 ne sont disponibles que via HTTP. Pour utiliser le protocole HTTPS pour les connexions entre CloudFront et Amazon S3, configurez un point de terminaison d'API REST S3 pour votre origine.

  1. Ouvrez la console Amazon S3 pour créer un compartiment et activer l'hébergement de sites web statiques sur le compartiment.
  2. Dans la boîte de dialogue Hébergement de sites web statiques, copiez le point de terminaison de votre compartiment sans l'en-tête http://. Le format est semblable à DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Vous aurez besoin du point de terminaison sous ce format pour une étape ultérieure.
  3. Créez une distribution web CloudFront. Après avoir défini les paramètres de distribution de votre cas d'utilisation, procédez comme suit :
    Dans le champ Domaine d'origine, saisissez le point de terminaison que vous avez copié à l'étape précédente.
    **Remarque :**ne sélectionnez pas le compartiment sur la liste déroulante. La liste déroulante n'inclut que les points de terminaison d'API REST du compartiment S3 que cette configuration n'utilise pas.
    Sous Ajouter un en-tête personnalisé, sélectionnez Ajouter un en-tête.
    Dans le champ Nom de l'en-tête, entrez Referer.
    Dans le champ Valeur, saisissez une valeur d'en-tête client que vous souhaitez transmettre à l'origine (compartiment S3). Pour limiter l'accès à l'origine, saisissez une valeur aléatoire ou secrète que vous êtes le seul à connaître.
  4. Lorsque vous créez une distribution, il est recommandé d'utiliser le protocole SSL (HTTPS) pour votre site web. Pour utiliser un domaine personnalisé avec le protocole HTTPS, sélectionnez Certificat SSL personnalisé.Pour demander un nouveau certificat, Choisissez Demander un certificat. Si vous n'utilisez pas de domaine personnalisé, vous pouvez toujours utiliser le protocole HTTPS avec le nom de domaine cloudfront.net pour votre distribution.
    Important : si vous saisissez des noms de domaine alternatifs (CNAME) pour votre distribution, les CNAME doivent correspondre au certificat SSL que vous avez sélectionné. Pour résoudre les problèmes liés à votre certificat SSL, consultez la page Comment résoudre les problèmes liés à l'utilisation d'un certificat SSL personnalisé pour ma distribution CloudFront ?
  5. Depuis la console Amazon S3, ouvrez le compartiment de votre site web. Ensuite, ajoutez une stratégie de compartiment qui autorise s3:GetObject à condition que la requête inclue l'en-tête Referer personnalisé spécifié à l'étape 3. Pour cette configuration, vous devez désactiver les paramètres de blocage de l'accès public du compartiment S3. Amazon S3 considère une stratégie de compartiment qui accorde un accès anonyme (public) limité par un en-tête Referer. Si votre cas d'utilisation nécessite l'activation des paramètres de blocage de l'accès public, utilisez le point de terminaison d'API REST comme origine. Limitez ensuite l'accès à l'aide d'un contrôle d'accès d'origine (OAC) ou d'une identité d'accès d'origine (OAI).
    Remarque : pour bloquer l'accès à une requête qui n'inclut pas l'en-tête Referer personnalisé, utilisez une instruction de refus explicite dans la stratégie de compartiment.
  6. Mettez à jour les enregistrements DNS de votre domaine afin de faire pointer le domaine de votre site web vers CloudFront. Vous trouverez le nom de domaine de votre distribution dans la console CloudFront. Le nom de domaine est semblable à celui indiqué dans l'exemple suivant : d1234abcd.cloudfront.net.
  7. Attendez que vos modifications DNS se propagent et que les entrées DNS précédentes expirent.
    **Remarque :**le délai d'expiration des valeurs DNS précédentes dépend de la valeur TTL définie dans votre zone hébergée. Il dépend également de l'utilisation de ces valeurs TTL par votre résolveur local.

Utilisez CloudFormation pour déployer un point de terminaison de site web statique en tant qu'origine et un domaine personnalisé pointant vers CloudFront

Cette solution utilise la configuration suivante pour votre site web :

  • Déploiement de votre site web avec CloudFormation
  • Hébergement de votre site web sur Amazon S3
  • Distribution de votre site web avec CloudFront
  • Utilisation d'un certificat SSL/TLS délivré par AWS Certificate Manager (ACM)
  • Utilisation des stratégies d'en-tête de réponse CloudFront pour ajouter des en-têtes de sécurité à chaque réponse du serveur

Pour obtenir des instructions sur le déploiement de cette solution, consultez la page Amazon CloudFront Secure Static Website sur le site web de GitHub.

Informations connexes

Premiers pas avec un site web statique sécurisé

Validation des e-mails

Validation DNS

Utilisation de noms de domaine alternatifs et du protocole HTTPS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois