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
34
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
230
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
53
課金体系を紐解いて学ぶAWS WAF
maimyyym
2
120
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
120
LandingZoneAccelerator と学ぶ 「スケーラブルで安全なマルチアカウントAWS環境」と 私たちにもできるベストプラクティス
maimyyym
1
220
初めての札幌と初めてのBedrock ~Bedrock Converse API×SAMで遊んでみる~
maimyyym
1
320
S3操作の落とし穴から学ぶ Laravel File Storageと例外処理
maimyyym
2
790
タイパ重視×アウトプット駆動ではじめるAWS 〜認定資格とコミュニティの先で考えるAWSの学び方〜
maimyyym
2
300
Featured
See All Featured
Making Projects Easy
brettharned
116
5.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
94
Mobile First: as difficult as doing things right
swwweet
222
9k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Designing Experiences People Love
moore
138
23k
Code Reviewing Like a Champion
maltzj
520
39k
A Tale of Four Properties
chriscoyier
157
23k
The Cult of Friendly URLs
andyhume
78
6.1k
The Invisible Side of Design
smashingmag
298
50k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
For a Future-Friendly Web
brad_frost
175
9.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/