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
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
大規模サーバーレスAPIの堅牢性・信頼性設計 〜AWSのベストプラクティスから始まる現実的制約との向き合い方〜
maimyyym
10
5k
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
310
組織とセキュリティ文化と、自分の一歩
maimyyym
3
1.5k
大規模サーバーレスプロジェクトのリアルな零れ話
maimyyym
3
380
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
490
re:Invent2024で広がった AWS Verified Accessの可能性を探る
maimyyym
1
230
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
460
IAM JSON ポリシーと仲良くなろう
maimyyym
3
170
2年目エンジニアが過ごしたre:Invent、私にできる明日からのEverything starts with security
maimyyym
0
160
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.8k
Bash Introduction
62gerente
615
210k
Raft: Consensus for Rubyists
vanstee
140
7.1k
RailsConf 2023
tenderlove
30
1.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Into the Great Unknown - MozCon
thekraken
40
2.1k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
600
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
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/