$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アクセスログを見て学ぶAWSサービスとネットワーク
Search
maimyyym
February 16, 2024
2
610
アクセスログを見て学ぶ AWSサービスとネットワーク
2024/02/16
【AWS】AWS10分LT会 - vol.3
https://aws-likers.connpass.com/event/307986/
maimyyym
February 16, 2024
Tweet
Share
More Decks by maimyyym
See All by maimyyym
AWSを使う上で最低限知っておきたいセキュリティ研修を社内で実施した話 ~みんなでやるセキュリティ~
maimyyym
2
1.7k
大規模サーバーレスAPIの堅牢性・信頼性設計 〜AWSのベストプラクティスから始まる現実的制約との向き合い方〜
maimyyym
11
5.9k
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
550
組織とセキュリティ文化と、自分の一歩
maimyyym
3
1.6k
大規模サーバーレスプロジェクトのリアルな零れ話
maimyyym
3
400
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
530
re:Invent2024で広がった AWS Verified Accessの可能性を探る
maimyyym
1
280
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
480
IAM JSON ポリシーと仲良くなろう
maimyyym
3
200
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Making Projects Easy
brettharned
120
6.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
100
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Facilitating Awesome Meetings
lara
57
6.7k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Transcript
アクセスログを⾒て学ぶ AWSサービスとネットワーク 【AWS】AWS10分LT会 - vol.3 2024.02.16 宮崎 真⾐ (@maimyyym) 1
サブタイトル Hello Worldしているだけの 静的なindex.htmlへのアクセスログを⾒る話 (CloudFront+S3+Athena) 2
アジェンダ 1. 私の現在地 2. 前提知識と構成について 3. CloudFrontのログを覗いてみる 4. 考えてみる 3
01 私の現在地
私の現在地 # 私の現在地(物理) 5 at 福岡
まず⾃⼰紹介 宮崎 真⾐ Miyazaki Mai - Account - :@maimyyym -
Work at - 株式会社 Fusic (at 福岡!) 技術本部/技術開発部⾨所属 - Webエンジニア - Skill - PHP(Laravel) - AWS - TypeScript 6 image
私の現在地 # 私の現在地(経験値) 7 • 未経験⼊社 → 案件に⼊り始めた • AWS利⽤の経験値は個⼈レベル
私の現在地 # Webエンジニアによる AWS個⼈利⽤ 8 【個⼈利⽤】 とりあえずサービスを使って動かしてみる 【実際】 インターネット上でサービスを使う IP制限や不特定多数のアクセスを意識する
私の現在地 # 私のモチベーション 9 ネットワークを学びたい!!!
私の現在地 # 私のモチベーション 10 ネットワークを学びたい!!! どんなアクセスがあるんだろう?
私の現在地 # 私のモチベーション 11 ネットワークを学びたい!!! どんなアクセスがあるんだろう? ログを⾒てみよう!
02 前提知識と構成
前提 # 話すこと 13 当たり前かもしれないことに 改めて考えさせられた、という話をします。 (ログを⾒てみるだけでも学びがある、という話)
前提 # 話さないこと 14 ログ分析の詳細な⽅法 ネットワークに関する詳細な内容
構成 # まずは簡単にページを公開 15 S3に置いたindex.htmlをCloudFront経由で公開する + OAC(Origin Access Control)を利⽤してindex.htmlへの アクセスはCloudFrontのみに限定
構成 # まずは簡単にページを公開 16 S3に置いたindex.htmlをCloudFront経由で公開する + OAC(Origin Access Control)を利⽤してindex.htmlへの アクセスはCloudFrontのみに限定
せっかくなのでドメインとSSL証明書も取ってみる(Route53, ACM)
構成 # アクセスログを⾒る 17 CloudFrontのビューワーリクエストログをS3に保存 これをAthenaでクエリ!
構成 # アクセスログを⾒る 18 CloudFrontのビューワーリクエストログをS3に保存 これをAthenaでクエリ! ※ Amazon Athena とは
AWSのデータ分析サービス SQLが使える S3に保存されたデータは直接分析できる
構成 # 構成 19
前提知識 # 前提知識のおさらい 20 【CloudFront】 ユーザーへのコンテンツ配信を⾼速化するCDNサービス [CDNとは?] エッジロケーションと呼ばれる世界各地に分散されたネットワーク拠点を介して、 コンテンツ配信を⾏う。ユーザーのリクエストは最も近い拠点にルーティングされる。 ★
CloudFrontはアプリケーション層(レイヤー7)で動作する ★ [レイヤー7] ユーザーが操作するアプリケーション・ソフトウェアとネットワーク通信機能の間で、 HTTP/HTTPSやファイル転送など、ユーザー(アプリケーション)のリクエストを処理する。
前提知識 # 前提知識のおさらい 21 【CloudFront】 ユーザーへのコンテンツ配信を⾼速化するCDNサービス [CDNとは?] エッジロケーションと呼ばれる世界各地に分散されたネットワーク拠点を介して、 コンテンツ配信を⾏う。ユーザーのリクエストは最も近い拠点にルーティングされる。 ★
CloudFrontはアプリケーション層(レイヤー7)で動作する ★ [レイヤー7] ユーザーが操作するアプリケーション・ソフトウェアとネットワーク通信機能の間で、 HTTP/HTTPSやファイル転送など、ユーザー(アプリケーション)のリクエストを処理する。 CloudFrontのアクセスログはレイヤー7に関わる情報が含まれているはず! ここで 予測!
03 CloudFrontのログを 覗いてみる
CloudFrontのログを覗いてみる # ⼿順 23 - CloudFrontの標準ログ記録をオンにしてS3にログを保存 - Athenaクエリ結果を保存するS3バケットを作成‧設定する
CloudFrontのログを覗いてみる # ⼿順 24 - Athenaでクエリを実⾏、CloudFrontのログからテーブル作成 - テーブルを分析していく! クエリエディタでデータソースから SQLを⽤いてテーブルを作成する
※今回は、公式ドキュメントのSQLを参照
CloudFrontのログを覗いてみる # ⼿順 25 ※公式ドキュメントのSQLを参照 【参考】 https://docs.aws.amazon.com/ja_jp/ athena/latest/ug/cloudfront- logs.html#create-cloudfront-table
CloudFrontのログを覗いてみる # おや‧‧‧?🤔 26 ※公式ドキュメントのSQLを参照 ↓ ここで使用しているフィールド=CloudFrontのログの中身 【参考】https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudfront-logs.html#create-cloudfront-table
CloudFrontのログを覗いてみる # 覗いてみる 27 CloudFrontのアクセスログはレイヤー7に関わる 情報が含まれているはず! 予測 (少し前のスライド) cs_method クライアントのリクエストメソッド(例:
GET, POST) cs_host リクエストされたホスト名 cs_uri_stem リクエストされたURIのパス cs_uri_query クエリ⽂字列 cs_cookie HTTPクッキー cs_referrer 参照元のURL cs_user_agent クライアントのユーザーエージェント cs_protocol 使⽤されるプロトコル(例: HTTP, HTTPS) 【参考】 「Amazon CloudFront デベロッパーガイド」 - 標準ログファイルフィールド
CloudFrontのログを覗いてみる # 覗いてみる 28 SELECT * FROM "default"."logs" limit 10;
というクエリが発⾏される
CloudFrontのログを覗いてみる # 覗いてみる 29 【昨⽇(2⽉15⽇)のログを⾒てみる】 SELECT * FROM ”{データベース名}"."{テーブル名}" WHERE
"date" = DATE '2024-02-15' limit 100; あとはSQLを使って⾃在にデータを⾒るだけ
CloudFrontのログを覗いてみる # 覗いてみる 30 【昨⽇(2⽉15⽇)のログを⾒てみる】 SELECT * FROM ”{データベース名}"."{テーブル名}” WHERE
"date" = DATE '2024-02-15’ limit 100; 〈 結果 〉 ⾃分⾃⾝は⼀度も当該Webサイトに アクセスしていないが、69件のログが! エッジロケーションを⾒ると様々な場所から アクセスされていることが分かる(計10箇所)
04 考えてみる
考えてみる # ログを⾒るのは楽しい 32 ログを⾒ると、そのサービスがネットワーク上で 何を取り扱って処理しているか分かる。 AthenaはSQLを使⽤するので、 ⾃在 && ⾝近に分析できる
考えてみる # インターネットとは何たるか思い知る 33 HelloWorldだけのindex.htmlも 世界中からアクセスされている たったこれだけの静的サイトでした。
Point 個⼈利⽤では意識することが少ないネットワーク → まず⾒てみる⼿段としての”ログ” Point 3 S3にログ保存できる場合、Athenaで⼿軽にログを⾒ることができる(例:CloudFront) 34 Point 1
各サービスのログはネットワーク上の該当レイヤーに関する情報が含まれる Point 2 HelloWorldだけのindex.htmlも世界中からアクセスされている…! Point 4
ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/