Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アクセスログを見て学ぶAWSサービスとネットワーク
Search
mai miya
February 16, 2024
2
520
アクセスログを見て学ぶ AWSサービスとネットワーク
2024/02/16
【AWS】AWS10分LT会 - vol.3
https://aws-likers.connpass.com/event/307986/
mai miya
February 16, 2024
Tweet
Share
More Decks by mai miya
See All by mai miya
2年目エンジニアが過ごしたre:Invent、私にできる明日からのEverything starts with security
maimyyym
0
49
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
250
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
59
課金体系を紐解いて学ぶAWS WAF
maimyyym
2
130
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
130
LandingZoneAccelerator と学ぶ 「スケーラブルで安全なマルチアカウントAWS環境」と 私たちにもできるベストプラクティス
maimyyym
1
240
初めての札幌と初めてのBedrock ~Bedrock Converse API×SAMで遊んでみる~
maimyyym
1
340
S3操作の落とし穴から学ぶ Laravel File Storageと例外処理
maimyyym
2
850
タイパ重視×アウトプット駆動ではじめるAWS 〜認定資格とコミュニティの先で考えるAWSの学び方〜
maimyyym
2
320
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
170
14k
The Cost Of JavaScript in 2023
addyosmani
46
7.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
190
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
How GitHub (no longer) Works
holman
312
140k
Adopting Sorbet at Scale
ufuk
74
9.1k
Building Adaptive Systems
keathley
38
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Done Done
chrislema
182
16k
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/