Mise en route avec une distribution standard (AWS CLI) - Amazon CloudFront

Mise en route avec une distribution standard (AWS CLI)

Les procédures de cette section vous montrent comment configurer utiliser l’AWS CLI avec CloudFront pour définir une configuration de base qui effectue les opérations suivantes :

  • Création d’un compartiment Amazon S3 comme origine de votre distribution.

  • Stockage des versions d’origine de vos objets dans le compartiment S3.

  • Utilisation du contrôle d’accès d’origine (OAC) pour envoyer des demandes authentifiées à votre origine Amazon S3. L’OAC envoie des demandes via CloudFront pour empêcher les utilisateurs d’accéder directement à votre compartiment S3. Pour plus d’informations sur l’OAC, consultez Restriction de l’accès à une origine Amazon S3.

  • Utilisation du domaine CloudFront dans des URL pour vos objets (par exemple, https://d111111abcdef8.cloudfront.net/index.html).

  • Conservation de vos objets à des emplacements périphériques CloudFront pendant la durée de 24 heures par défaut (la durée minimale est de 0 seconde).

La plupart de ces options sont personnalisables. Pour de plus d’informations sur la personnalisation de vos options de distribution CloudFront, consultez Créer une distribution.

Prérequis

Avant de commencer, vérifiez que vous avez bien terminé les étapes de Configurez votre Compte AWS.

Installez l’AWS CLI et configurez-la avec vos informations d’identification. Pour plus d’informations, consultez Mise en route avec le AWS CLI dans le AWS CLI Guide de l’utilisateur.

Créer un compartiment Amazon S3

Un compartiment Amazon S3 est un conteneur de fichiers (objets) ou de dossiers. CloudFront peut distribuer pour vous pratiquement n’importe quel type de fichier du moment que la source est un compartiment S3. Par exemple, CloudFront peut distribuer du texte, des images et des vidéos. La quantité de données que vous pouvez stocker sur Amazon S3 n’est pas limitée.

Dans ce didacticiel, vous allez créer un compartiment S3 et télécharger un fichier HTML qui servira à générer une page web simple.

aws s3 mb s3://amzn-s3-demo-bucket/ --region us-east-1

Remplacez amzn-s3-demo-bucket par un nom de compartiment unique au monde. Pour la Région AWS, nous vous recommandons de choisir une région géographiquement proche de vous. Cette approche diminue la latence et les coûts, bien qu’il soit tout à fait possible d’utiliser une autre région. Par exemple, vous pouvez procéder ainsi afin de satisfaire à des exigences réglementaires.

Chargement du contenu dans le compartiment

Pour ce didacticiel, téléchargez et extrayez les fichiers de contenu d’exemple pour une page web « Hello World » basique.

# Create a temporary directory mkdir -p ~/cloudfront-demo # Download the sample Hello World files curl -o ~/cloudfront-demo/hello-world-html.zip https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/samples/hello-world-html.zip # Extract the zip file unzip ~/cloudfront-demo/hello-world-html.zip -d ~/cloudfront-demo/hello-world

Cette opération crée un répertoire contenant un fichier index.html et un dossier css. Chargez ces fichier dans votre compartiment S3.

aws s3 cp ~/cloudfront-demo/hello-world/ s3://amzn-s3-demo-bucket/ --recursive

Création d’un contrôle d’accès d’origine (OAC)

Dans ce didacticiel, vous allez créer un contrôle d’accès d’origine (OAC). L’OAC vous permet d’envoyer en toute sécurité des demandes authentifiées à votre origine Amazon S3. Pour plus d’informations sur l’OAC, consultez Restriction de l’accès à une origine Amazon S3.

aws cloudfront create-origin-access-control \ --origin-access-control-config Name="oac-for-s3",SigningProtocol=sigv4,SigningBehavior=always,OriginAccessControlOriginType=s3

Enregistrez l’ID de l’OAC fourni dans la sortie en tant que variable d’environnement. Remplacez les exemples de valeurs par votre propre ID d’OAC. Vous l’utiliserez à l’étape suivante.

OAC_ID="E1ABCD2EFGHIJ"

Création d’une distribution standard

Créez un fichier de configuration de distribution nommé distribution-config.json. Remplacez le nom de compartiment de l’exemple par le vôtre pour les valeurs Id, DomainName et TargetOriginId.

cat > distribution-config.json << EOF { "CallerReference": "cli-example-$(date +%s)", "Origins": { "Quantity": 1, "Items": [ { "Id": "S3-amzn-s3-demo-bucket", "DomainName": "amzn-s3-demo-bucket.s3.amazonaws.com", "S3OriginConfig": { "OriginAccessIdentity": "" }, "OriginAccessControlId": "$OAC_ID" } ] }, "DefaultCacheBehavior": { "TargetOriginId": "S3-amzn-s3-demo-bucket", "ViewerProtocolPolicy": "redirect-to-https", "AllowedMethods": { "Quantity": 2, "Items": ["GET", "HEAD"], "CachedMethods": { "Quantity": 2, "Items": ["GET", "HEAD"] } }, "DefaultTTL": 86400, "MinTTL": 0, "MaxTTL": 31536000, "Compress": true, "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" } } }, "Comment": "CloudFront distribution for S3 bucket", "Enabled": true } EOF

Créez la distribution standard.

aws cloudfront create-distribution --distribution-config file://distribution-config.json

Enregistrez l’ID de distribution et le nom de domaine de la sortie en tant que variables d’environnement. Remplacez les exemples de valeurs par les vôtres. Vous les utiliserez ultérieurement dans ce didacticiel.

DISTRIBUTION_ID="EABCD1234XMPL" DOMAIN_NAME="d111111abcdef8.cloudfront.net"

Avant d’utiliser la distribution et le compartiment S3 décrits dans ce didacticiel dans un environnement de production, vérifiez qu’ils sont configurés pour répondre à vos besoins spécifiques. Pour en savoir plus sur la configuration de l’accès dans un environnement de production, consultez Configuration d’un accès sécurisé et restriction de l’accès au contenu.

Mise à jour de votre stratégie de compartiment S3

Mettez à jour votre stratégie de compartiment S3 afin d’autoriser CloudFront à accéder aux objets. Remplacez le nom de compartiment utilisé dans l’exemple par le nom de votre compartiment.

# Get your AWS account ID ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text) # Create the bucket policy cat > bucket-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipal", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::$ACCOUNT_ID:distribution/$DISTRIBUTION_ID" } } } ] } EOF # Apply the bucket policy aws s3api put-bucket-policy \ --bucket amzn-s3-demo-bucket \ --policy file://bucket-policy.json

Confirmation du déploiement de la distribution

Une fois votre distribution créée, le déploiement prendra un certain temps. Lorsque l’état de distribution passe de InProgress à Deployed, passez à l’étape suivante.

aws cloudfront get-distribution --id $DISTRIBUTION_ID --query 'Distribution.Status'

Vous pouvez également utiliser la commande wait pour attendre le déploiement de la distribution.

aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID

Accès à votre contenu via CloudFront

Pour accéder à votre contenu via CloudFront, combinez le nom de domaine de votre distribution CloudFront avec la page principale de votre contenu. Remplacez le nom de domaine CloudFront utilisé dans l’exemple par le vôtre.

https://d111111abcdef8.cloudfront.net/index.html

Si vous avez suivi les étapes précédentes et créé le fichier HTML, vous devriez voir une page web affichant Hello world!.

Lorsque vous chargez plus de contenu dans ce compartiment S3, vous pouvez y accéder via CloudFront en combinant le nom de domaine de la distribution CloudFront avec le chemin de l’objet dans le compartiment S3. Par exemple, si vous chargez un nouveau fichier nommé new-page.html à la racine de votre compartiment S3, l’URL se présente comme suit :

https://d111111abcdef8.cloudfront.net/new-page.html.

Nettoyage

Si vous avez créé votre distribution et votre compartiment S3 uniquement à des fins d’apprentissage, supprimez-les afin de ne plus encourir de coûts. Commencez par désactiver et supprimer la distribution.

Pour désactiver et supprimer une distribution standard (AWS CLI)
  1. Tout d’abord, désactivez la distribution.

    # Get the current configuration and ETag ETAG=$(aws cloudfront get-distribution-config --id $DISTRIBUTION_ID --query 'ETag' --output text) # Create a modified configuration with Enabled=false aws cloudfront get-distribution-config --id $DISTRIBUTION_ID | \ jq '.DistributionConfig.Enabled = false' > temp_disabled_config.json # Update the distribution to disable it aws cloudfront update-distribution \ --id $DISTRIBUTION_ID \ --distribution-config file://<(jq '.DistributionConfig' temp_disabled_config.json) \ --if-match $ETAG
  2. Attendez que la distribution soit désactivée.

    aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID
  3. Supprimez la distribution.

    # Get the current ETag ETAG=$(aws cloudfront get-distribution-config --id $DISTRIBUTION_ID --query 'ETag' --output text) # Delete the distribution aws cloudfront delete-distribution --id $DISTRIBUTION_ID --if-match $ETAG
Pour supprimer un compartiment S3 (AWS CLI)
  • Supprimez le compartiment S3 et son contenu. Remplacez le nom de compartiment utilisé dans l’exemple par le vôtre.

    # Delete the bucket contents aws s3 rm s3://amzn-s3-demo-bucket --recursive # Delete the bucket aws s3 rb s3://amzn-s3-demo-bucket

Pour nettoyer les fichiers locaux créés pour ce didacticiel, exécutez les commandes suivantes :

# Clean up local files rm -f distribution-config.json bucket-policy.json temp_disabled_config.json rm -rf ~/cloudfront-demo

Vous pouvez éventuellement supprimer l’OAC que vous avez créé pour ce didacticiel.

# Get the OAC ETag OAC_ETAG=$(aws cloudfront get-origin-access-control --id $OAC_ID --query 'ETag' --output text) # Delete the OAC aws cloudfront delete-origin-access-control --id $OAC_ID --if-match $OAC_ETAG