Nozioni di base su una distribuzione standard (AWS CLI) - Amazon CloudFront

Nozioni di base su una distribuzione standard (AWS CLI)

Nelle procedure descritte in questa sezione viene illustrato come utilizzare AWS CLI con CloudFront per impostare una configurazione di base che coinvolge le operazioni seguenti:

  • Creazione di un bucket Amazon S3 da utilizzare come origine della distribuzione.

  • Archiviazione delle versioni originali degli oggetti nel bucket S3.

  • Utilizzo del controllo di accesso origine (OAC) per inviare richieste autenticate all’origine Amazon S3. OAC invia richieste tramite CloudFront per impedire ai visualizzatori di accedere direttamente al bucket S3. Per ulteriori informazioni su OAC, consulta Limitazione dell’accesso a un’origine Amazon S3.

  • Utilizzo del nome di dominio CloudFront negli URL per gli oggetti (ad esempio, https://d111111abcdef8.cloudfront.net/index.html).

  • Conservazione degli oggetti nelle posizioni edge CloudFront per la durata predefinita di 24 ore (la durata minima è di 0 secondi).

La maggior parte delle opzioni è personalizzabile. Per informazioni su come personalizzare le opzioni di distribuzione CloudFront, consulta Creazione di una distribuzione.

Prerequisiti

Prima di iniziare, assicurati di aver completato le fasi in Configurare l'account Account AWS.

Installa la AWS CLI e configurala con le credenziali. Per ulteriori informazioni, consulta Nozioni di base su AWS CLI nella Guida per l'utente di AWS CLI.

Creazione di un bucket Amazon S3

Un bucket Amazon S3 è un container che può contenere oggetti o cartelle. CloudFront può distribuire quasi tutti i tipi di file per l’utente quando l’origine è un bucket S3. Ad esempio, CloudFront può distribuire testo, immagini e video. Non c'è un massimo per la quantità di dati che è possibile memorizzare in Amazon S3.

Per questo tutorial, verrà creato un bucket S3 e caricato un file HTML da utilizzare per creare una pagina web di base.

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

Sostituisci amzn-s3-demo-bucket con un nome bucket univoco a livello globale. Per la Regione AWS, ti consigliamo di scegliere una Regione che sia geograficamente vicina a te. In questo modo si riducono la latenza e i costi, ma anche la scelta di una Regione diversa funziona. Ad esempio, puoi eseguire questa operazione per soddisfare i requisiti normativi.

Caricamento dei contenuti nel bucket

Per questo tutorial, scarica ed estrai i file di contenuto di esempio per una pagina web di 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

Viene creata una directory con un file index.html e una cartella css. Carica questi file nel bucket S3.

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

Creazione di un controllo di accesso origine (OAC)

Per questo tutorial, verrà creato un controllo di accesso origine (OAC). OAC consente di inviare in modo sicuro richieste autenticate all’origine Amazon S3. Per ulteriori informazioni su OAC, consulta Limitazione dell’accesso a un’origine Amazon S3.

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

Salva l’ID OAC dall’output come una variabile di ambiente. Sostituisci i valori di esempio con l’ID OAC. Verrà utilizzato nella fase successiva.

OAC_ID="E1ABCD2EFGHIJ"

Creazione di una distribuzione standard

Crea un file di configurazione della distribuzione denominato distribution-config.json. Sostituisci il nome del bucket di esempio con il nome del bucket per i valori Id, DomainName, e 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

Crea una distribuzione standard.

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

Salva l’ID distribuzione e il nome di dominio dell’output come variabili di ambiente. Sostituire i valori di esempio con i propri valori. Verranno utilizzati più avanti in questo tutorial.

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

Prima di utilizzare la distribuzione e il bucket S3 di questo tutorial in un ambiente di produzione, assicurati di configurarli per soddisfare le esigenze specifiche. Per informazioni sulla configurazione dell’accesso in un ambiente di produzione, consulta Configurazione dell’accesso sicuro e restrizione dell’accesso ai contenuti.

Aggiornamento della policy di bucket S3

Aggiornare la policy di bucket S3 per consentire a CloudFront di accedere agli oggetti. Sostituisci il nome bucket di esempio con il nome bucket.

# 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

Conferma dell’implementazione della distribuzione

Dopo aver creato la distribuzione, occorrerà un po’ di tempo per completarne l’implementazione. Quando lo stato della distribuzione cambia da InProgress a Deployed, esegui la fase successiva.

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

In alternativa, puoi utilizzare il comando wait per attendere l’implementazione della distribuzione.

aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID

Acceso ai contenuti tramite CloudFront

Per accedere ai contenuti tramite CloudFront, combina il nome di dominio della distribuzione CloudFront con la pagina principale dei contenuti. Sostituisci il nome di dominio CloudFront di esempio con il tuo nome.

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

Se hai seguito i passaggi precedenti e creato il file HTML, dovresti vedere una pagina web con la scritta Hello world!.

Quando carichi nuovi contenuti in questo bucket S3, puoi accedere ai contenuti tramite CloudFront combinando il nome di dominio di distribuzione CloudFront con il percorso all'oggetto nel bucket S3. Ad esempio, se carichi un nuovo file denominato new-page.html nella root del bucket S3, l'URL è simile al seguente:

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

Eliminazione

Se hai creato la distribuzione e il bucket S3 solo a scopo didattico, eliminali in modo da non incorrere in ulteriori costi. Disabilita ed elimina prima la distribuzione.

Come disabilitare ed eliminare una distribuzione standard (AWS CLI)
  1. Innanzitutto, disabilita la distribuzione.

    # 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. Attendi che la distribuzione venga disabilitata.

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

    # 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
Come eliminare un bucket S3 (AWS CLI)
  • Elimina il bucket S3 e il relativo contenuto. Sostituisci il nome bucket di esempio con quello personalizzato.

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

Per pulire i file locali creati per questo tutorial, esegui i seguenti comandi:

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

Facoltativamente, puoi eliminare l’OAC creato per questo tutorial.

# 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