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
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PDF
AWS Database Migration Service ご紹介
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方
PDF
webエンジニアのためのはじめてのredis
PDF
Day 1 with Amazon Web Services - AWSご利用開始時に最低限おさえておきたい10のこと
PDF
KafkaとAWS Kinesisの比較
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PDF
AWS Black Belt Online Seminar 2017 AWS WAF
PDF
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
PDF
ログ管理のベストプラクティス
PDF
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
PDF
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
PDF
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
PDF
20200721 AWS Black Belt Online Seminar AWS App Mesh
PDF
20200128 AWS Black Belt Online Seminar Amazon Forecast
PDF
MQTTとAMQPと.NET
PPTX
Awsをオンプレドメコンに連携させる
PDF
ビックデータ最適解とAWSにおける新しい武器
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
PPTX
AWSでEC2上にMTAを構築した話
PDF
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
PDF
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
PDF
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
PDF
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL

More Related Content

PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PDF
AWS Database Migration Service ご紹介
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方
PDF
webエンジニアのためのはじめてのredis
PDF
Day 1 with Amazon Web Services - AWSご利用開始時に最低限おさえておきたい10のこと
PDF
KafkaとAWS Kinesisの比較
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
AWS Database Migration Service ご紹介
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
分散トレーシングAWS:X-Rayとの上手い付き合い方
webエンジニアのためのはじめてのredis
Day 1 with Amazon Web Services - AWSご利用開始時に最低限おさえておきたい10のこと
KafkaとAWS Kinesisの比較

What's hot

PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PDF
AWS Black Belt Online Seminar 2017 AWS WAF
PDF
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
PDF
ログ管理のベストプラクティス
PDF
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
PDF
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
PDF
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
PDF
20200721 AWS Black Belt Online Seminar AWS App Mesh
PDF
20200128 AWS Black Belt Online Seminar Amazon Forecast
PDF
MQTTとAMQPと.NET
PPTX
Awsをオンプレドメコンに連携させる
PDF
ビックデータ最適解とAWSにおける新しい武器
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
PPTX
AWSでEC2上にMTAを構築した話
PDF
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
PDF
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
PDF
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
[社内勉強会]ELBとALBと数万スパイク負荷テスト
AWS Black Belt Online Seminar 2017 AWS WAF
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
ログ管理のベストプラクティス
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20200721 AWS Black Belt Online Seminar AWS App Mesh
20200128 AWS Black Belt Online Seminar Amazon Forecast
MQTTとAMQPと.NET
Awsをオンプレドメコンに連携させる
ビックデータ最適解とAWSにおける新しい武器
20190821 AWS Black Belt Online Seminar AWS AppSync
AWSでEC2上にMTAを構築した話
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...

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

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

More from Takuro Sasaki

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

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


[8]ページ先頭

©2009-2025 Movatter.jp