2017-08-18 10 views
0

を使用しているとき、私はS3の私のバケットのカスタムリダイレクションルールを持って返します。カスタムリダイレクションルール403 CloudFrontの

<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> 

をそして、私のバケットは、適切なポリシーを持っています

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

これは正常に動作します内部のURLであるhttp://example.com.s3-website-us-east-1.amazonaws.comを使ってアクセスすると、別のサーバーに適切にリダイレクトされます。

ただし、CloudFrontの設定では機能しません。直接アクセスしようとすると(http://example.com/images/dummy.jpg)、403 AccessDeniedが届きます。

答えて

0

明らかに、デフォルトのS3バケットを起点として使用するとき、それはリダイレクトルールを尊重しません。

example.com.s3.amazonaws.comができますが、カスタムの原点にそれを強制する必要があります:デフォルトで

、それを使用しようとする代わりに

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

私がそれを強制したら、それは働き始めた。

+1

正しい。 [*] [配布の作成]ページの[Origin Settings]セクションで、[Origin Domain Name]にバケツのAmazon S3静的Webサイトホスティングエンドポイントを入力します(例:* example.com.s3-website-us-east-1)。 amazonaws.com。 **注** *バケットの名前ではなく、静的なWebサイトのホスティングエンドポイントを指定してください。 "*](http://docs.aws.amazon.com/AmazonS3/latest/ dev/website-hosting-cloudfront-walkthrough.html)リストからバケットを選択すると、CloudFrontはWebサイトのエンドポイントではなくバケットのRESTエンドポイントに接続します。 –

関連する問題