質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

1377閲覧

AWS CloudfrontからS3へのアクセスができない。

I_am_

総合スコア23

Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/05/28 05:20

編集2021/06/01 00:32

前提・実現したいこと

CloudfrontでのBehaviorsでのパスの振り分けを行いたいです。

CloudFrontに向かってくるパスに応じてALBとS3で振り分けを行いたいです。

流れは自分で作成をしてみてその後に
https://qiita.com/keitakn/items/35ae8cc56f5c0a4766b4
を参考にしてOAIの設定を行いました。

アクセス周りでの設定がおかしいと思うのですが、原因の特定ができないです。
何かわかることをご教授できたら幸いです。

パスパターンは
Default () >ALB
mv-s3/
>S3にはSPA(Angular)で作成した静的webサイトがホストされてます。

S3のバケットに直接アクセス(bucket-name.s3.region.amazonaws.com)するとSPAが表示されます。

僕の認識ではRestrict Bucket AccessをONにするとS3はクラウドフロントからのみアクセスができるという認識なのですが、思っている挙動ではないです。
となるとS3のポリシーが間違っているということですか?

何かここを確認した方がいいとかありましたらお願いします。

発生している問題・エラーメッセージ

$ curl -sLI cloudfront.net HTTP/1.1 200 OK $ curl -sLI cloudfront.net/mv-s3/ HTTP/1.1 403 Forbidden Content-Type: application/xml Connection: keep-alive Server: AmazonS3 X-Cache: Error from cloudfront

ブラウザから確認をすると以下のようになります。

<Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> </Error>

S3バケットポリシー

以下のバケットのポリシーからS3に直接アクセスできます。
ここでは定義がおかしいのか、反映がされていないのか分かってないです。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity OAI" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket/*" } ] }

行ったこと、疑問

公式を参考にすると、

When you specify the Amazon S3 bucket that you want CloudFront to get objects from, we recommend that you use the following format to access the bucket:

bucket-name.s3.region.amazonaws.com

Another option might be to use the following more general format, but be aware that this format doesn't work for Regions launched in 2019 or later:

bucket-name.s3.amazonaws.com

とありました。
CloudFrontでオリジンを設定するときにbucket-name.s3.amazonaws.comのフォーマットの指定しかできなかったのですが、
これが実際に原因なのか分かってないです。

その後に

When you specify the bucket name in this format, you can use the following CloudFront features:

Configure CloudFront to communicate with your Amazon S3 bucket using SSL. For more information, see Using HTTPS with CloudFront.

ということで、CloudFrontにSSLの証明書をアタッチすれば解決するということなのでしょうか?

そもそもでなぜ、
S3の公開はbucket-name.s3.region.amazonaws.com
なのに、CloudFrontから指定するオリジンのところで、bucket-name.s3.amazonaws.com
しか指定できないのですか?

何かわかることや、認識が間違っていることがあれば教えていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/06/01 01:23 編集

バケットポリシー以前にオブジェクトそのものを公開していたりはしませんか? そのバケットポリシーは単にCloudFrontからのアクセスを許可しているだけかと思うのですが。 また、curl -sLI cloudfront.netとしていますが、あなたの設定したcloudfrontのドメインはcloudfront.netではなく何らかのサブドメイン(xxxxxxxx.cloudfront.net)になっているはずです。
I_am_

2021/06/01 11:23 編集

ありがとうございます。 おっしゃる通りで公開は適切な設定ができてなかったです。 また、cloudfrontのドメインは適切な表現ができていなかったみたいで、 表記されているのはcurl xxxxxxxx.cloudfront.netでのアクセスの結果です。
I_am_

2021/06/01 11:22

公開している時にS3のドメインでアクセスが確認でき。 cloudfront経由でのアクセスが失敗する理由が分からなくて困ってます。 ポリシーの設定はあっている用に思うので、他に考えられる原因があったら教えていただきたいです。
yu_1985

2021/06/01 12:09

参考記事を見ましたが、4年も前の記事なのでもう少し新しいものか公式ドキュメント(ないしそれに近いもの)を参考にしたほうがいいですね。 オリジンの指定についてはサジェストが出ますが普通に手入力が可能なので手入力で入れてみてください。
I_am_

2021/06/01 13:50

アドバイスありがとうございます。 公式を参考にして設定してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問