AWS CloudFront Zugriff verweigert S3-bucket
Ich bin versucht, setup - CloudFront
zu dienen statische Dateien gehostet in meiner S3
Eimer. Ich habe die setup-distribution, aber ich bekomme AccessDenied
wenn Sie versuchen, auf durchsuchen, um das CSS (/CSS/stlyle.css
) Datei im S3-bucket:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>E193C9CDF4319589</RequestId>
<HostId>
xbU85maj87/jukYihXnADjXoa4j2AMLFx7t08vtWZ9SRVmU1Ijq6ry2RDAh4G1IGPIeZG9IbFZg=
</HostId>
</Error>
Ich habe mein CloudFront-Verteilung auf meinem S3 bucket erstellt und neue Origin Access Identity policy
die Hinzugefügt wurde, automatisch in den S3-bucket:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E21XQ8NAGWMBQQ"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myhost.com.cdn/*"
}
]
}
Habe ich da etwas verpasst?
Ich möchte alle meine Dateien in diesem S3-bucket serviert werden via CloudFront...
* UPDATE *
Diese Wolke vor guide sagt:
Standardmäßig, Ihren Amazon S3-bucket und alle Objekte in Ihr sind privat—nur der AWS-Konto, erstellt Sie den Eimer über die Berechtigung zum Lesen oder schreiben der Objekte in ihm. Wenn Sie wollen, um niemandem gestatten, Zugriff auf Objekte in Ihrem Amazon S3-bucket mit CloudFront-URLs, müssen Sie gewähren, öffentliche lese-Berechtigungen für die Objekte. (Dies ist einer der häufigsten Fehler bei der Arbeit mit CloudFront und Amazon S3. Sie müssen explizit zu erteilen, die Berechtigungen für jedes Objekt in einem Amazon S3-bucket.)
Also auf dieser Basis habe ich neue Berechtigungen für alle Objekte im S3-bucket Everyone Read/Download
. Jetzt kann ich die Dateien zugreifen.
Aber wenn ich jetzt auf die Datei zugreifen, wie https://d3u61axijg36on.cloudfront.net/css/style.css
diese wird umgeleitet auf S3 URI und HTTP
. Wie deaktiviere ich diese?
Ich bin gekommen, über das Thema selbst. Noch warten um zu sehen, ob dies der Fall ist...
InformationsquelleAutor Primoz Rome | 2017-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Helfen mit deiner Frage, ich habe neu die situation, über:
Überprüfte ich den Eimer, und CloudFront Hinzugefügt hatte einen Eimer Politik ähnlich wie bei Ihnen.
War die Verteilung markiert als
In Progress
für eine Weile. Einmal hieß esEnabled
ich Zugriff auf die Dateien über diexxx.cloudfront.net
URL:xxx.cloudfront.net/public.jpg
umgeleitet mich an den S3-URLhttp://bucketname.s3.amazonaws.com/public.jpg
. Ja, ich konnte sehen, wie die Datei, aber es sollte nicht mit einem redirect.xxx.cloudfront.net/private.jpg
umgeleitet mir auch, aber ich erhielt dannAccess Denied
weil es ist eine private Datei in S3.Ich habe dann einige Forschung und fand, dass dies durchaus ein gemeinsames auftreten. Einige Leute benutzen ein workaround ist, indem Sie Ihre CloudFront-Verteilung der statische gehosteten website URL, aber dies hat den Nachteil, dass es nicht funktionieren wird mit der Ursprungs-Access-Identität und ich vermute auch, es gewann ' T erhalten die 'free-S3 Verkehr an den Rand' Rabatt.
So, ich wartete über Nacht getestet, es heute morgen und alles ist in Ordnung,.
Bottom line: Auch wenn es sagt
ENABLED
, Dinge, die vielleicht mehrere Stunden (z.B. über Nacht), um sich selbst gleich. Es wird dann dokumentiert, wie.Was nicht klar ist mir, dass die cloudfront-url NICHT enthalten ist die bucket-Namen ein. d.h. 'xxxx.cloudfront.net/:path' und NICHT 'xxxx.cloudfront.net/bucketname/:path'
Wenn ich von Ihnen positiv bewertet werden diese zweimal, ich würde. Dieses Zeug kostet mich Stunden meines Lebens.
Ich bin nicht nach Ihrer Antwort. Wenn ich Objekte in meinem Eimer öffentlichkeit, ich kann auf Sie zugreifen, über mein CloudFront-Verteilung URL. Das ist toll! Aber ich kann auch dann auf Sie zugreifen, direkt über die S3-URL. Ich habe implementiert eine OAI-so, dass nur meine CloudFront dist Lesen kann meine Objekte und kein anderer kann. Ich verstehe nicht das, wenn meine Objekte sind öffentlich. Habe ich das falsch verstanden, deine Antwort? Kann ich mehr Informationen zu klären, meine Frage?
Dies ist eine alte Frage. Wenn Sie etwas zu Fragen haben, erstellen Sie bitte eine neue Frage anstatt zu Fragen, in einem Kommentar.
InformationsquelleAutor John Rotenstein
In meinem Fall war ich über mehrere Ursprünge mit "Pfad-Muster" Verhalten zusammen mit einem Origin-Weg in meine S3-bucket:
Schlecht setup:
CloudFront Verhalten:
/images/*
->My-S3-origin
Mein-S3-Herkunft:
Origin Pfad:
/images
S3-Dateien:
/images/my-image.jpg
GET-Request:
/images/my-image.jpg -> 403
Was passierte war, das gesamte CloudFront-GET-Anforderung gesendet wird, auf die Herkunft:
/image/my-image.jpg
vorangestellt, Ursprung-Pfad:/images
, so dass die Anfrage in S3 sieht aus wie/images/images/my-image.jpg
die nicht vorhanden ist.Lösung
entfernen Herkunft Pfad.
InformationsquelleAutor Scott Jungwirth
Statt über die Standard-s3-bucket für Origin Domain-Namen, geben Sie bitte die
<bucket-name>.s3-website.<region>.amazonaws.com
als Ursprungs-Domain-Namen(Sie können diese URL auf Statische website-hosting-Eigenschaft unter S3-bucket-Eigenschaften).InformationsquelleAutor uday reddy
Ich Hinzugefügt 'index.html" in
Default Root Object
unter Registerkarte "allgemein" cloudFront "Distribution Settings" und es funktionierte für mich.Als index.html wurde der root-Datei für mein Projekt!
InformationsquelleAutor Zohab Ali