1

私はs3バケットの1つを起点サーバーとするCloudfrontディストリビューションを持っています。ファイルはサードパーティの添付ファイルアップローダによってs3にアップロードされます。別のアカウントでアップロードしたファイルにアクセス中にCloudfront 403エラーが発生しました

クラウドフロント経由でs3のファイルにアクセスしようとすると、アクセス拒否のXML(下記参照)で403禁止されたエラーが発生します。しかし、手動でファイルをs3バケットにアップロードすると、クラウドフロント経由でファイルにアクセスできます。

両方のファイルのアクセス許可は、ファイルの所有者を除いて同じです。私が手動でアップロードしたファイルについては、ファイルの所有者は自分のアカウントであり、アップローダによってアップロードされたファイルについてはアップローダです。サードパーティの添付ファイルアップローダは、オブジェクトのバケット所有者へのフルアクセスを提供します。また、私はバケットアクセスを制限していますが、ビューアアクセスは制限していません。

Error returned by cloudfront

このエラーが発生する可能性があります理由は何ですか?これをどうデバッグするのですか?

+1

オブジェクトをS3バケットにアップロードすると、そのオブジェクトは公開されますか? – error2007s

+0

私は信じていません。私がアップロードしたアカウントの権限です。 –

+1

バケットポリシーまたはaclを使用して権限を設定していますか? – imperalix

答えて

2

「アクセスが拒否されました」という応答は、S3のオブジェクトが利用可能になる前のCloudFrontによってキャッシュされたS3からの応答である可能性があります。

たとえば、CloudFront URLを試しても、そのファイルがS3に存在しない場合は、「アクセス拒否」という応答が表示されます。ファイルをアップロードした後でも、CloudFrontはTTLの終わりまで「アクセス拒否」応答をキャッシュします。この間、「アクセスが拒否されました」という応答が引き続き表示されます。

配信を無効にしてみます。その後、ファイルを要求し、正しい応答が得られるかどうかを確認します。

これで問題が解決する場合は、S3に存在する前にCloudFrontからオブジェクトを要求しないようにする方法を理解する必要があります。

+1

エラーキャッシング最小TTL [0に設定可能](http://stackoverflow.com/a/35541525/1695906)。これが原因である場合は、この動作を無効にしてください。第三者が['x-amz-acl:bucket-owner-full-control'](http://docs.aws.amazon.com/)の指定に失敗している(または設定されていない) AmazonF3/latest/dev/acl-overview.html#canned-acl)、またはCloudFrontのオリジナルアクセスID(オブジェクトが使用されていると仮定)がオブジェクトにアクセスすることを妨げるアップロードの別の適切な値。 –

+0

s3でファイルをアップロードした後、クラウドフロントディストリビューションを追加しました。だから私はそれが問題になるとは思わない。 –

4

OAIを使用してCloudFront経由でコンテンツを配信するS3バケットにコンテンツをアップロードする場合、アップロードされたファイルには、-grant read = id = "OAI-canonical-ID"が追加されたOAI標準IDが必要ですファイルはuploadeです。また、S3バケット所有者をgrant full = id = "BucketOwnerID"として追加します。 aws cliはアップロードを実行するために使用されました。使用する方法に合わせて調整してください。 ファイルをS3バケットに表示すると、アクセス権のCloudFrontが受領者としてリストされます。ファイルはCloudFront経由で読み込み可能である必要があります。

関連する問題