Movatterモバイル変換


[0]ホーム

URL:


Takuro Sasaki, profile picture
Uploaded byTakuro Sasaki
26,035 views

AWS Lambdaで作るクローラー/スクレイピング

AWS Lambdaで作るクローラー/スクレイピング

Embed presentation

Downloaded 48 times
AWS Lambda Meetup #0Lambdaで作るクローラー/スクレイピング2014年12月22日NRIネットコム 佐々木拓郎
✦ プロフィール‣ NRIネットコム株式会社‣ Twitter: @dkfj‣ Facebook: takuro.sasaki‣ blog: http://blog.takuros.net/‣ 好きなAWSサービス: S3,SQS自己紹介: 佐々木拓郎
主にJAWSUG大阪で活動していました(東京、初進出)
宣伝!!本業と全く関係ないですが、Rubyのクローラー本を書きました。http://amzn.to/1lsJ5idRubyによるクローラー開発技法巡回・解析機能の実装と21の運用例
NRIネットコム✦NRIグループで主にWebビジネスを専門としている会社‣ Webシステムの企画・設計・開発・運用‣ デザインも重視していて、ディレクター・デザイナーも一杯‣ スマホ/タブレットも得意‣ もちろんAWSをはじめとするクラウドにも力を入れている
AWS Lambdaサーバ不要で、イベントドリブンなプログラム実行基盤イベントキック Lambdaで実行
インフラの在り方を根底から変える!!(かもしれない)今、注目のアーキテクチャ
S3 Event NotificationsS3のオブジェクトに対してのイベントを検知し、後続の処理を行うイベントPut,Post, etc通知SQSキューSNSトピックLambda Function()
Lambdaでクローラー/スクレイピング
クローラー/スクレイピング、ご存知ですか?
クローラー• Webを巡回するプログラムの総称• ボット、スパイダー、ロボットなど様々な呼ばれ方がある• 巡回戦略を練るのが一番の仕事• スクレイピングやストレージの機能を持つことが多い
スクレイピング• 取得したHTMLなどから、データを抜き出すこと• 例えば、HTML中のAタグのリンク先を全て取得する• 正規表現派と構文解析派が存在する
巡回&ダウンロードスクレイピング
Lambdaクローラー全体像1. キック2. http リクエスト   & ダウンロード 3. html保存4. S3 Event Call5. S3 getObject6. ScrapeLambdaCrawler parseHtmlインターネットS3クローリング部分とスクレイピング部分を実装
クローラーの実装1. キック3. html保存LambdaCrawlerNode.jsのhttpクラスを利用AWSのs3 putObjectを利用URL付与2. http リクエスト   & ダウンロード
スクレイピングの実装4. S3 Event Call5. S3 getObject6. ScrapeparseHtmlS3 EventでLambdaファンクションの呼び出し引数から、該当のファイルを取得cheerioというスクレイピング用のライブラリを利用
ソースhttps://github.com/takuros/lambda-crawler解説は、こちらhttp://blog.takuros.net/entry/2014/12/14/053606
実装のポイント• データダウンロード部とスクレイピング部の分離‣Lambdaはタイムアウトがあり、一般のバッチと違う    細かいエラー処理・例外処理をやってられない‣ 単一処理に限定すると、エラー処理がし易い(はず)    成功/失敗のどちらかに倒す• 処理間の連携方法が重要‣ S3 + Event Notificationだと比較的シンプルで良い‣ Lambda   Lambda連携だと、失敗時の追跡が大変(そう)
いろいろ試してみた
実行元のサーバ実行の度に、違うサーバが呼ばれるのか?
実験①Httpリクエストを行う処理を複数作成し、手動で複数回実行HttpTestHttpTest21. キック54.172.104.205 - - [21/Dec/2014:13:24:12 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.172.104.205 - - [21/Dec/2014:13:24:20 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.172.104.205 - - [21/Dec/2014:13:24:23 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.172.104.205 - - [21/Dec/2014:13:24:28 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.172.104.205 - - [21/Dec/2014:13:25:24 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-" 基本的には、同一のサーバで実行される模様2. キック
実験②並行処理で、実験①のLambdaファンクションを呼び出し10並列 10ループ  100リクエストParallelCall1. キックHttpTestHttpTest54.173.132.200 - - [21/Dec/2014:15:57:32 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:15:57:32 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:15:57:32 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:15:57:32 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:15:57:32 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"やはり同一IP( 同一サーバ)
実験③さらに並行処理で、実験②のLambdaファンクションを呼び出し(10並列 10ループ) (10並列 10ループ) 10,000リクエスト1. キックParallelCallHttpTestHttpTestParallelCallHttpTestHttpTestParallelChainCall
結果結果として、高性能なDDosツールが出来ました※悪用激禁!!IPアドレスの分散( 複数のサーバで実行)54.172.104.205 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.73.201 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.73.201 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"54.173.132.200 - - [21/Dec/2014:16:08:31 +0000] "GET /hoge.html HTTP/1.1" 200 5 "-" "-"分散
考察• Lambdaは、自動的にスケールアウトする• スケールアウトの時間は、数秒程度(?)• タスクの分割と追跡性を工夫すれば、Hadoop的な使い方もお手軽に出来るのでは?• Phantomjsと併用で、負荷計測装置も作れそう
感想Lambdaを導入するにも、• スケジュール/ジョブ制御システムが必要な場合が多い• その部分は、現状自前で構築する必要がある• AWSによるサービス化希望• サードパーティのサービスが重要になるかも Ex)  サーバワークス Cloud Automator  NRI mPLAT
おまけ実験③の結果を、Google Analyticsで計測Googleに怒られそう一気に数千に跳ね上がり北米からの攻撃
おまけ実験③のLambda側は?AWSに怒られました。Rate Exceeded
教訓• Lambdaは、簡単に暗黒面に陥る• 強力過ぎる仕組みなので、使い方にはご注意を• バグって無限循環したら、どうやって止めるなど?  Lambdaファンクションを消せば良いとのこと
免責こちらは個人の意見で、所属する企業や団体は関係ありません。
ご清聴ありがとうございました後日の質問は、@dkfjまで

Recommended

PDF
「顧客の声を聞かない」とはどういうことか
PDF
ChatGPT 人間のフィードバックから強化学習した対話AI
PPTX
backbone としての timm 入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
LDA入門
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
MLflowによる機械学習モデルのライフサイクルの管理
PDF
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
PDF
大規模言語モデルとChatGPT
PDF
SAT/SMTソルバの仕組み
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
PDF
推薦アルゴリズムの今までとこれから
PDF
ドメイン駆動設計に15年取り組んでわかったこと
PDF
【メタサーベイ】数式ドリブン教師あり学習
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
マイクロサービス 4つの分割アプローチ
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
【メタサーベイ】Neural Fields
PDF
機械学習モデルの判断根拠の説明(Ver.2)
PDF
20190825 vins mono
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
PDF
Kotlinアンチパターン
PDF
2019年度チュートリアルBPE
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
PDF
暗号技術の実装と数学
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
PPTX
世界一わかりやすいClean Architecture
PDF
Rubyによるお手軽分散処理
PDF
法政大学情報科学部 2012年度コンピュータネットワーク-第9回授業-Web公開用

More Related Content

PDF
「顧客の声を聞かない」とはどういうことか
PDF
ChatGPT 人間のフィードバックから強化学習した対話AI
PPTX
backbone としての timm 入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
LDA入門
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
MLflowによる機械学習モデルのライフサイクルの管理
PDF
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
「顧客の声を聞かない」とはどういうことか
ChatGPT 人間のフィードバックから強化学習した対話AI
backbone としての timm 入門
分散トレーシング技術について(Open tracingやjaeger)
LDA入門
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
MLflowによる機械学習モデルのライフサイクルの管理
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)

What's hot

PDF
大規模言語モデルとChatGPT
PDF
SAT/SMTソルバの仕組み
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
PDF
推薦アルゴリズムの今までとこれから
PDF
ドメイン駆動設計に15年取り組んでわかったこと
PDF
【メタサーベイ】数式ドリブン教師あり学習
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
マイクロサービス 4つの分割アプローチ
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
【メタサーベイ】Neural Fields
PDF
機械学習モデルの判断根拠の説明(Ver.2)
PDF
20190825 vins mono
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
PDF
Kotlinアンチパターン
PDF
2019年度チュートリアルBPE
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
PDF
暗号技術の実装と数学
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
PPTX
世界一わかりやすいClean Architecture
大規模言語モデルとChatGPT
SAT/SMTソルバの仕組み
(修正)機械学習デザインパターン(ML Design Patterns)の解説
推薦アルゴリズムの今までとこれから
ドメイン駆動設計に15年取り組んでわかったこと
【メタサーベイ】数式ドリブン教師あり学習
SPAセキュリティ入門~PHP Conference Japan 2021
マイクロサービス 4つの分割アプローチ
Dockerfile を書くためのベストプラクティス解説編
【メタサーベイ】Neural Fields
機械学習モデルの判断根拠の説明(Ver.2)
20190825 vins mono
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
Kotlinアンチパターン
2019年度チュートリアルBPE
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
暗号技術の実装と数学
自動テストの誤解とアンチパターン in 楽天 Tech Talk
世界一わかりやすいClean Architecture

Similar to AWS Lambdaで作るクローラー/スクレイピング

PDF
Rubyによるお手軽分散処理
PDF
法政大学情報科学部 2012年度コンピュータネットワーク-第9回授業-Web公開用
PDF
Rubyで始めるWebスクレイピング
PDF
長いの
PDF
Rubyで作るクローラー Ruby crawler
KEY
2012-09-09.nagoyapm07
PDF
エコなWebサーバー
PDF
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
PDF
Clojure
PDF
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
PDF
20111215 12 aws-meister-sqs_sns_sdb-public
PDF
Isomorphic web development with scala and scala.js
PDF
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL
PDF
Elasticsearch入門 pyfes 201207
PDF
JAWSUG architecture-crowler
KEY
P2Pって何?
PDF
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
PDF
JAWS-UG-Kyoto-2nd
PDF
MongoDB on AWS
Rubyによるお手軽分散処理
法政大学情報科学部 2012年度コンピュータネットワーク-第9回授業-Web公開用
Rubyで始めるWebスクレイピング
長いの
Rubyで作るクローラー Ruby crawler
2012-09-09.nagoyapm07
エコなWebサーバー
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
Clojure
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
20111215 12 aws-meister-sqs_sns_sdb-public
Isomorphic web development with scala and scala.js
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
ScrapyとPhantomJSを用いたスクレイピングDSL
Elasticsearch入門 pyfes 201207
JAWSUG architecture-crowler
P2Pって何?
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
JAWS-UG-Kyoto-2nd
MongoDB on AWS

More from Takuro Sasaki

PDF
JAWSUG初心者支部 AWSの勉強の仕方
PDF
Crawler for Non engineer
PDF
Innovation eggcloudnative
PDF
Lambda認証認可パターン
PDF
Swaggerで始めるモデルファーストなAPI開発
PDF
Jawsug chiba API Gateway
PDF
DevLove Kansai AWS
PDF
Rubyで操るAWS 第67回Ruby関西 勉強会
PDF
JAWS-UG初心者支部 AWS書籍活用術
PDF
JAWSUG Kansai Simple Workflow Service (SWF)
PDF
JAWSUG Osaka S3 CloudSearch
PDF
サイト/ブログから本文抽出する方法
PDF
JAWS-UG三都物語2014 初心者向け Elasticity ELB/AutoScaling/EIP
PDF
Jawsug osaka10 service&regions
PDF
第9回Jawsug大阪 ServiceProviders 現場で使えるAWS付随サービス!!
PDF
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
PDF
第8回JAWSUG大阪 JAWSUG大阪 連携サービス(SNS,SQS,SES)
PDF
第8回JAWSUG大阪 AWSの事例/課金について
PDF
開発環境としてのAwsを真面目に考える jawsug2013三都物語公開用
JAWSUG初心者支部 AWSの勉強の仕方
Crawler for Non engineer
Innovation eggcloudnative
Lambda認証認可パターン
Swaggerで始めるモデルファーストなAPI開発
Jawsug chiba API Gateway
DevLove Kansai AWS
Rubyで操るAWS 第67回Ruby関西 勉強会
JAWS-UG初心者支部 AWS書籍活用術
JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Osaka S3 CloudSearch
サイト/ブログから本文抽出する方法
JAWS-UG三都物語2014 初心者向け Elasticity ELB/AutoScaling/EIP
Jawsug osaka10 service&regions
第9回Jawsug大阪 ServiceProviders 現場で使えるAWS付随サービス!!
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第8回JAWSUG大阪 JAWSUG大阪 連携サービス(SNS,SQS,SES)
第8回JAWSUG大阪 AWSの事例/課金について
開発環境としてのAwsを真面目に考える jawsug2013三都物語公開用

AWS Lambdaで作るクローラー/スクレイピング


[8]ページ先頭

©2009-2025 Movatter.jp