Erste Schritte mit einer Standarddistribution (AWS CLI)
Die Vorgehensweisen in diesem Abschnitt zeigen Ihnen, wie Sie die AWS CLI mit CloudFront verwenden, um eine grundlegende Konfiguration einzurichten, die Folgendes umfasst:
-
Erstellen eines Amazon-S3-Buckets zur Verwendung als Distributionsursprung
-
Speichern der Originalversionen Ihrer Objekte in einem S3-Bucket
Verwenden der Ursprungszugriffssteuerung (OAC), um authentifizierte Anforderungen an Ihren Amazon-S3-Ursprung zu senden. OAC sendet Anforderungen über CloudFront, um zu verhindern, dass Viewer direkt auf Ihren S3-Bucket zugreifen. Weitere Informationen zu OAC finden Sie unter Beschränken des Zugriffs auf einen Amazon-S3-Ursprung.
Verwenden des CloudFront-Domainnamens in URLs für Ihre Objekte (z. B.
https://d111111abcdef8.cloudfront.net/index.html)-
Speichern Ihrer Objekte für die Standarddauer von 24 Stunden an CloudFront-Edge-Standorten (die Mindestdauer beträgt 0 Sekunden)
Die meisten dieser Optionen sind anpassbar. Weitere Informationen dazu, wie Sie Ihre CloudFront-Verteilungsoptionen anpassen, finden Sie unter Eine Verteilung erstellen.
Voraussetzungen
Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie die in beschriebenen Schritte ausgeführt habe Einrichten Ihres AWS-Kontos.
Installieren Sie die AWS CLI und konfigurieren Sie sie mit Ihren Anmeldeinformationen. Weitere Informationen finden Sie unter Erste Schritte mit dem AWS CLI im AWS CLI-Benutzerhandbuch.
Erstellen eines Amazon-S3-Buckets
Ein Amazon-S3-Bucket ist ein Container für Dateien (Objekte) oder Ordner. CloudFront kann fast jede Art von Datei für Sie verteilen, wenn ein S3-Bucket die Quelle ist. CloudFront kann beispielsweise Text, Images und Videos verteilen. Die Menge der Daten, die Sie in Amazon S3 speichern können, ist nicht begrenzt.
In diesem Tutorial erstellen Sie einen S3-Bucket und laden eine HTML-Datei hoch, die Sie zur Erstellung einer einfachen Webseite verwenden.
aws s3 mb s3://amzn-s3-demo-bucket/ --regionus-east-1
Ersetzen Sie amzn-s3-demo-bucket durch einen weltweit eindeutigen Bucket-Namen. Wir empfehlen, als AWS-Region eine Region zu wählen, die geografisch in Ihrer Nähe liegt. Dies reduziert die Latenz und die Kosten, aber die Auswahl einer anderen Region funktioniert auch. Eine solche Auswahl ist eventuell erforderlich, um gesetzliche Anforderungen zu berücksichtigen.
Hochladen des Inhalts in den Bucket
Laden Sie für dieses Tutorial die Beispielinhaltsdateien für eine einfache „Hello World“-Webseite herunter und extrahieren Sie sie.
# 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
Dadurch wird ein Verzeichnis mit einer index.html-Datei und einem css-Ordner erstellt. Laden Sie diese Dateien in Ihren S3-Bucket hoch.
aws s3 cp ~/cloudfront-demo/hello-world/ s3://amzn-s3-demo-bucket/ --recursive
Erstellen einer Ursprungszugriffssteuerung (OAC)
In diesem Tutorial erstellen Sie eine Ursprungszugriffssteuerung (OAC, Origin Access Control). OAC hilft Ihnen dabei, authentifizierte Anforderungen sicher an Ihren Amazon-S3-Ursprung zu senden. Weitere Informationen zu OAC finden Sie unter Beschränken des Zugriffs auf einen Amazon-S3-Ursprung.
aws cloudfront create-origin-access-control \ --origin-access-control-config Name="oac-for-s3",SigningProtocol=sigv4,SigningBehavior=always,OriginAccessControlOriginType=s3
Speichern Sie die OAC-ID aus der Ausgabe als Umgebungsvariable. Ersetzen Sie den Beispielwert durch Ihre eigene OAC-ID. Sie verwenden diese im nächsten Schritt.
OAC_ID="E1ABCD2EFGHIJ"
Erstellen einer Standarddistribution
Erstellen Sie eine Konfigurationsdatei namens distribution-config.json für die Distribution. Ersetzen Sie den Beispielnamen des Buckets durch Ihren Bucket-Namen für die Werte Id, DomainName und 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
Erstellen Sie die Standarddistribution.
aws cloudfront create-distribution --distribution-config file://distribution-config.json
Speichern Sie die Distributions-ID und den Domainnamen aus der Ausgabe als Umgebungsvariablen. Ersetzen Sie die Beispielwerte durch Ihre eigenen Werte. Sie werden sie später in diesem Tutorial verwenden.
DISTRIBUTION_ID="EABCD1234XMPL" DOMAIN_NAME="d111111abcdef8.cloudfront.net"
Bevor Sie die Distribution und den S3-Bucket aus diesem Tutorial in einer Produktionsumgebung verwenden, stellen Sie sicher, dass sie Ihren spezifischen Anforderungen entsprechen. Informationen zum Konfigurieren des Zugriffs in einer Produktionsumgebung finden Sie unter Konfigurieren des sicheren Zugriffs und Beschränken des Zugriffs auf Inhalte.
Aktualisieren Ihrer S3-Bucket-Richtlinie
Aktualisieren Sie Ihre S3-Bucket-Richtlinie, damit CloudFront auf die Objekte zugreifen kann. Ersetzen Sie Beispielnamen des Buckets durch den Namen Ihres Buckets.
# 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 \ --bucketamzn-s3-demo-bucket\ --policy file://bucket-policy.json
Bestätigen der Bereitstellung der Distribution
Nachdem Sie Ihre Distribution erstellt haben, dauert es einige Zeit, bis sie bereitgestellt wird. Fahren Sie mit dem nächsten Schritt fort, wenn sich der Distributionsstatus von InProgress in Deployed ändert.
aws cloudfront get-distribution --id $DISTRIBUTION_ID --query 'Distribution.Status'
Alternativ können Sie auch den wait-Befehl verwenden, um auf die Bereitstellung der Distribution zu warten.
aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID
Zugriff auf Ihre Inhalte über CloudFront
Um über CloudFront auf Ihre Inhalte zuzugreifen, kombinieren Sie den Domänennamen für Ihre CloudFront-Verteilung mit der Hauptseite für Ihren Inhalt. Ersetzen Sie den Beispielnamen der CloudFront-Domain durch Ihren eigenen.
https://d111111abcdef8.cloudfront.net/index.html
Wenn Sie die vorherigen Schritte befolgt und die HTML-Datei erstellt haben, sollte eine Website mit der Aufschrift Hello world! angezeigt werden.
Wenn Sie weitere Inhalte in diesen S3-Bucket hochladen, können Sie über CloudFront auf den Inhalt zugreifen, indem Sie beispielsweise den CloudFront-Verteilungsdomänennamen mit dem Pfad zum Objekt im S3-Bucket kombinieren. Wenn Sie eine neue Datei mit dem Namen new-page.html zum Stammverzeichnis Ihres S3-Buckets hochladen, sieht die URL beispielsweise wie folgt aus:
https://d111111abcdef8.cloudfront.net/new-page.html.
Bereinigen
Wenn Sie die Distribution und den S3-Bucket nur zur Übung erstellt haben, löschen Sie sie, damit keine weiteren Gebühren für sie anfallen. Deaktivieren und löschen Sie zuerst die Distribution.
So deaktivieren und löschen Sie eine Standarddistribution (AWS CLI)
Deaktivieren Sie zunächst die 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 $ETAGWarten Sie, bis die Distribution deaktiviert ist.
aws cloudfront wait distribution-deployed --id $DISTRIBUTION_IDLöschen Sie die 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
So löschen Sie einen S3-Bucket (AWS CLI)
Löschen Sie den S3-Bucket und seinen Inhalt. Ersetzen Sie Beispielnamen des Buckets durch Ihren eigenen.
# Delete the bucket contents aws s3 rm s3://amzn-s3-demo-bucket--recursive # Delete the bucket aws s3 rb s3://amzn-s3-demo-bucket
Führen Sie die folgenden Befehle aus, um die für dieses Tutorial erstellten lokalen Dateien zu bereinigen:
# Clean up local files rm -f distribution-config.json bucket-policy.json temp_disabled_config.json rm -rf ~/cloudfront-demo
Optional können Sie auch die OAC löschen, die Sie für dieses Tutorial erstellt haben.
# 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