Commencez avec une distribution standard (AWS CLI) - Amazon CloudFront

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencez avec une distribution standard (AWS CLI)

Les procédures décrites dans cette section vous montrent comment utiliser le AWS CLI with CloudFront pour configurer une configuration de base impliquant les éléments suivants :

  • Création d'un compartiment Amazon S3 à utiliser comme origine de distribution.

  • Stockage des versions originales de vos objets dans le compartiment S3.

  • Utiliser le contrôle d'accès à l'origine (OAC) pour envoyer des demandes authentifiées à votre point d'origine Amazon S3. L'OAC envoie des demandes CloudFront pour empêcher les utilisateurs d'accéder directement à votre compartiment S3. Pour plus d'informations sur l'OAC, consultezRestreindre l'accès à une origine Amazon S3.

  • Utiliser le nom de CloudFront domaine URLs pour vos objets (par exemple,https://d111111abcdef8.cloudfront.net/index.html).

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

La plupart de ces options sont personnalisables. Pour 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-le AWS CLI et configurez-le 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 pour des fichiers (objets) ou des dossiers. CloudFront peut distribuer presque n'importe quel type de fichier pour vous lorsqu'un compartiment S3 est la source. 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 le cadre de ce didacticiel, vous allez créer un compartiment S3 et télécharger un fichier HTML que vous utiliserez pour créer une page Web de base.

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

amzn-s3-demo-bucketRemplacez-le par un nom de compartiment unique au monde. Pour cela Région AWS, nous vous recommandons de choisir une région géographiquement proche de vous. Cela réduit la latence et les coûts, mais le choix d'une autre région fonctionne également. Par exemple, vous pouvez le faire pour répondre aux exigences réglementaires.

Téléchargez le contenu dans le bucket

Pour ce didacticiel, téléchargez et extrayez les exemples de fichiers de contenu pour une page Web de base « Hello World ».

# 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

Cela crée un répertoire contenant un index.html fichier et un css dossier. Téléchargez ces fichiers 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 à l'origine (OAC)

Dans le cadre de ce didacticiel, vous allez créer un contrôle d'accès à l'origine (OAC). OAC vous permet d'envoyer en toute sécurité des demandes authentifiées à votre Amazon S3 d'origine. Pour plus d'informations sur l'OAC, consultezRestreindre 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 OAC de la sortie en tant que variable d'environnement. Remplacez la valeur d'exemple par votre propre identifiant 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 l'exemple de nom de compartiment par le nom de votre compartiment pour les TargetOriginId valeurs IdDomainName, et.

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, assurez-vous de les configurer pour répondre à vos besoins spécifiques. Pour plus d'informations sur la configuration de l'accès dans un environnement de production, consultezConfiguration de l'accès sécurisé et restriction de l'accès au contenu.

Mettez à jour votre politique relative aux compartiments S3

Mettez à jour votre politique de compartiment S3 CloudFront pour autoriser l'accès aux objets. Remplacez l'exemple de nom de compartiment 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

Confirmer le déploiement de la distribution

Après avoir créé votre distribution, le déploiement prendra un certain temps. Lorsque le statut 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 wait commande pour attendre le déploiement de la distribution.

aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID

Accédez à votre contenu via CloudFront

Pour accéder à votre contenu via CloudFront, associez le nom de domaine de votre CloudFront distribution à la page principale de votre contenu. Remplacez l'exemple CloudFront de nom de domaine 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 intitulée Bonjour tout le monde ! .

Lorsque vous chargez du contenu supplémentaire dans ce compartiment S3, vous pouvez y accéder en CloudFront combinant le nom de domaine de CloudFront distribution avec le chemin d'accès à 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 payer de frais. Désactivez et supprimez d'abord 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 du bucket donné en 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