2017-08-18 2 views
0

ich eine benutzerdefinierte Umleitungsregel für meinen Eimer auf S3 haben:Benutzerdefinierte Umleitungsregeln auf S3 liefert 403, wenn Cloudfront mit

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
     <KeyPrefixEquals/> 
     <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> 
    </Condition> 
    <Redirect> 
     <Protocol>https</Protocol> 
     <HostName>example2.com</HostName> 
     <ReplaceKeyPrefixWith>services/create?key=</ReplaceKeyPrefixWith> 
     <HttpRedirectCode>307</HttpRedirectCode> 
    </Redirect> 
    </RoutingRule> 
</RoutingRules> 

Und mein Eimer hat eine richtige Politik:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Sid": "PublicReadForGetBucketObjects", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::example.com/*" 
     } 
    ] 
} 

Dies funktioniert gut wenn ich über die interne URL http://example.com.s3-website-us-east-1.amazonaws.com darauf zugreife und es mich auf meinen anderen Server richtig umleitet.

Es funktioniert jedoch nicht mit meinem CloudFront-Setup. Wenn ich versuche, direkt darauf zuzugreifen (http://example.com/images/dummy.jpg), erhalte ich eine 403 AccessDenied.

Antwort

0

Offenbar, wenn die Standard-S3-Bucket als Ursprung verwendet wird - es wird nicht die Umleitungsregeln einhalten.

versucht standardmäßig, es zu benutzen:

example.com.s3.amazonaws.com, aber man sollte es zu einem benutzerdefinierten Ursprung erzwingen:

example.com.s3-website-us-east-1.amazonaws.com statt.

Sobald ich es erzwang, begann es zu arbeiten.

+1

Korrekt. [* "Geben Sie auf der Seite Distribution erstellen im Bereich Ursprungseinstellungen für Origin Domain Name den Hosting-Endpunkt für die statische Website von Amazon S3 für Ihren Bucket ein. Beispiel: * example.com.s3-website-us-east-1. amazonaws.com ** Hinweis ** * Achten Sie darauf, den statischen Website-Hosting-Endpunkt anzugeben, nicht den Namen des Buckets. "*] (http://docs.aws.amazon.com/AmazonS3/latest/ dev/website-hosting-cloudfront-walkthrough.html) Wenn Sie den Bucket aus der Liste auswählen, stellt CloudFront eine Verbindung zum REST-Endpunkt des Buckets anstelle des Website-Endpunkts her. –

Verwandte Themen