1.はじめに
AWS認定試験の中で頻出のS3
やCloudFront
の署名付き~とかOAI
とかワードについての理解がなんとなくだったのと、公式サイトなどを見ても初学者には何やら小難しいことが書いてあってよくわからないので、本質理解のために簡単に図でまとめてみました。
2.対象者
-
S3
、CloudFront
についてふわっと理解している方 - AWS認定試験に向けて勉強している方
3.今回のゴール
-
S3
とCloudFront
がどういうものか理解する。 - 署名付き~を理解する。
-
OAI
を用いたアクセス制御の仕組みを理解する。 - キャッシュを理解する。
4.S3、CloudFrontとは?
CloudFront
・静的、動的なウェブコンテンツ(サイトや動画など)の配信を高速化できる。
・アクセス制御や暗号化など通信をセキュアにできる。(今回はここを紹介)
・AmazonやHuluにも採用されており、AWSでWebアプリケーションを利用する際も使われる。
S3
・クラウドストレージサービス。容量無制限でファイルなどのデータを格納できる。
・バージョン管理やバックアップ、暗号化など何かあったときに対する安全性が強い。
組み合わせることで出来ること
Webアプリケーションを作り、htmlをS3に上げたものの、コンテンツが表示されるのが重いなどの場合にCloudFrontをはさんであげることで早くユーザにコンテンツを届けることができる。
5.署名付き~とは?
インターネットはだれでもアクセスできてしまうので、S3に上げた内容そのままだと他の人に見られてしまう。
なので、知っている人(例えばログインユーザなど)しか見られないようにするための仕組み。
署名付きURL
AWS認定試験で、まず登場するであろうワード。
文字通り、URLの後ろにこんな感じで署名がくっついてます。
https://s3-ap-northeast-1.amazonaws.com/index.html?X-Amz-Algorithm=cnhidnkjnjweqlmf~~~
署名用のタグはX-Amz-Algorithm
以外にもいくつかあるのですが長いので割愛します。。
このURL
+署名
の形でリクエスト送ってくれないとアクセス通さないよ?というのがこれです。
この署名もいつまで有効にするかの時間設定が可能になってます。
署名付きCookie
二つ目が署名付きCookie
で、何が違うかというと署名情報をURLにくっつけるのではなくてHTTPリクエストする際にCookieに署名情報を乗っけて認証する点です。
署名付きURLだと、URLが変わってしまうので変えたくない場合などはこちらを使用する形になると思います。
要件的にCookieを使えないという場合は署名付きURL
になったりするので、この辺りはケースバイケースですね。
5.OAIとは?
オリジンアクセスアイデンティティの略称です。
(と言われても私は分からなかったので、ワードをかみ砕きました…笑)
オリジン...目的のものが置いてある場所。実際はS3のバケットを指定します。
アクセス...これはそのままアクセスですね。
アイデンティティ...その人(ユーザ)だと証明できること。
なので、OAI
は 目的のもの(html)を取りに行く(アクセス)ための正しいユーザですよ。 という証明書のようなものの理解でよいと思います。
実際はCloudFront
で作成できる特別なユーザのことを指しており、作成したOAI
をS3
のバケットポリシーに設定してあげると、OAI
のみアクセスを許可するように機能してくれるようになります。
S3
をセキュアにするために、CloudFront
経由でアクセスしないと受け付けないようにしてくれるので、ありがたい機能ですね。
最近はもはやレガシーな仕組みで、現在はOACという仕組みがAWSから推奨されているようです。
6.キャッシュとは?
CloudFront
の良い点としてキャッシュを保存しておける点があります。
ユーザがリクエスト投げたときにS3まで毎回取りに行ってもらうのではなく、同じリクエスト結果をすでにCloudFront
側で保持しているのであれば、そのまま返してくれるというものです。
CloudFront
では、あらかじめキャッシュの保持時間(TTL)などを設定したり、リクエストのパスパターンを設定しておくことで、パスパターンに応じてリクエストをさばくことができます。
このリクエストパターンの設定がビヘイビア
とも呼ばれていてリクエストのURLによってどのオリジン
を見に行くかの振り分け設定をすることができます。
※先ほどの署名付きURL
やCookie
もここで設定に絡んできます。
以下のようなイメージになります。
(ここにOAI
や署名付きの設定、キャッシュがある場合はS3に取りにいかないなどありますが、簡易的な流れになります。)
7.最後に
S3
やCloudFront
は細かく説明するとそれだけでびっしりなのであくまで要点を絞って内容を短めにしましたが、
AWSのサービスって本当に色々考えられててびっくりしました…。
AWS認定試験に限った話ではないですが、ちゃんと仕組みを理解したうえで覚える方がイメージとして頭に残るので遠回りのようで近道なのかもしれません。
同じような境遇の方に参考になれば幸いです。