AWSでS3に静的コンテンツを置き、それをCloudFrontを経由して配信する構成、よくあると思います。ぼくも仕事で月に1回は同様の構成をCloudFormationで構築しています。
そして毎回、同じ表示に苦しめられます。
This XML file does not appear to have any style information associated with it. The document tree is shown below. <Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>7F91C2D657A3B816</RequestId> <HostId> TsFf5WHTPoU6ddu6mSJ3EOWPjcxfLzzC/OQPYl2aDi8i1mHItmKdMqVR0y3Qa/WFcXatifPiGHE= </HostId> </Error>
AccessDenied・・・・。 アクセスが拒否されている。
S3のバケットポリシー? いやいや、でもS3にはCloudFrontからしかアクセスできないように設定してる、ってことはCloudFrontの設定?
あれ、よくみたらRoute53でドメインをaliasでCloudFront指定してるのにURLがS3のものにリダイレクトされている!
なんだこれ、わけわからんー!
となりがちなのですが、というか毎回なっていたのですが、これしばらく悩んでるといつの間にか解決してるんですよね。
これ、結局なんなのかというと、キャッシュで、作った当初のS3への307リダイレクトがキャッシュされてしまい、CloudFrontでinvalidationしても数分では解消せずに1〜2時間経ったらキャッシュが消えて解消するというパターンでした。何をやってもうまくいかずに、うーんと思っていたらいつの間には解消されているという。
解決方法は「1、2時間待つ」というなんじゃそれはという感じですが、よくあるハマりパターンの紹介でした。