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

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nozioni di base su una distribuzione standard (AWS CLI)

Le procedure in questa sezione mostrano come utilizzare AWS CLI with CloudFront per impostare una configurazione di base che prevede quanto segue:

  • 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 CloudFront per impedire agli utenti di accedere direttamente al bucket S3. Per ulteriori informazioni su OAC, consulta Limitazione dell’accesso a un’origine Amazon S3.

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

  • Mantenete gli oggetti in posizioni CloudFront periferiche per la durata predefinita di 24 ore (la durata minima è 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 Configura il tuo Account AWS.

Installalo AWS CLI e configuralo con le tue credenziali. Per ulteriori informazioni, consulta Nozioni di base su AWS CLI nella Guida per l’utente di AWS CLI .

Crea un bucket Amazon S3

Un bucket Amazon S3 è un contenitore per file (oggetti) o cartelle. CloudFront può distribuire quasi tutti i tipi di file per te quando la fonte è 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

amzn-s3-demo-bucketSostituiscilo con un nome di bucket univoco a livello globale. Per questo Regione AWS, ti consigliamo di scegliere una regione 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

Aggiorna la policy del bucket S3 per consentire l'accesso CloudFront 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

Accedi ai tuoi contenuti tramite CloudFront

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

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 più contenuti in questo bucket S3, puoi accedervi CloudFront combinando il nome del dominio di CloudFront distribuzione con il percorso dell'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