ãAWS Lambdaã¯ãµã¼ãä¸è¦ã®ããã°ã©ã ã®å®è¡ã¨ã³ã¸ã³ã§ããã¤ã³ãã©å´ã¯AWSã管çããã®ã§ãããå®è¡åçã解ã£ã¦ããã¨æãã®å¤ã«èªç±åº¦ãé«ãã§ããShellãã³ãã³ããå梱ãããã°åãããä¾åããã©ã¤ãã©ãªããªããã°Amazon Linuxä¸ã§ãã«ããã¦å梱ãããã°è¯ãã®ã§ãããã®å®ä¾ã®1ã¤ã«ãLambda+PhantomJSãããã¾ããPhantomJSã¯ããã©ã¦ã¶ä¸è¦ã§ç»é¢æç»ãã§ãããã¼ã«ã§ãããªã³ã¯ã®ã¯ãªãã¯ããã¿ã³ã®æ¼ä¸ã»ãã©ã¼ã ã«å ¥åãåºæ¥ãã®ã§ããã°ã¤ã³ãå¿ è¦ãªãã¼ã¸ã®æ å ±ãåã£ã¦ããã¨ãããã¨ãã¹ã¯ãªã¼ã³ã·ã§ãããåãã¨ãã£ããã¨ãå¯è½ã§ããLambdaã¨PhantomJSãçµã¿åããã¦ãæ軽ã¹ã¯ã¬ã¤ãã³ã°ããã¦ã¿ã¾ãããã
ããã¸ã§ã¯ãã®ç¨æ
ãGithubä¸ã«ãã«ãæ¸ã¿ã®ã©ã¤ãã©ãªè¾¼ã®ããã¸ã§ã¯ãï¼phantom-lambda-templateï¼ãããã®ã§ãããã使ãã¾ããçã®ã©ã¤ãã©ãªçãé ç½®ããã¦ããã®ã§ãããããæãã§ããã®ã ã¨åèã«ããªãã¨æãã¾ãã
ã½ã¼ã¹ãè½ã¨ãã¦ããããã¾ããã®ãã£ã¬ã¯ããªã«ç§»åãã¦ä¾åé¢ä¿ã®ã¢ã¸ã¥ã¼ã«ãã¤ã³ã¹ãã¼ã«ãã¾ãã
$ npm install
次ã«ç°å¢è¨å®ãã¡ã¤ã«ãä½ãã¾ãã
$ npm run setup $ vi .env AWS_ENVIRONMENT=development AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXX AWS_ROLE_ARN=arn:aws:iam::123456789012:role/lambda-phantomjs AWS_REGION=us-east-1 AWS_FUNCTION_NAME=phantom-lambda-template AWS_HANDLER=index.handler AWS_MODE=event AWS_MEMORY_SIZE=128 AWS_TIMEOUT=300 AWS_DESCRIPTION= AWS_RUNTIME=nodejs
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_ROLE_ARNã®é¨åãç·¨éãã¦ããã¦ãã ãããAWS_TIMEOUTãããã©ã«ã3ç§ãªã®ã§é·ãã«è¨å®ãã¦ããã¾ããï¼ãã®ä¾ã¯ãæ大å¤ã§ãã300ç§ã«ãã¦ãã¾ããï¼æ³¨æç¹ã¨ãã¦ã¯ããã®ACCESS_KEYãè¨å®ããã¦ããã¦ã¼ã¶ã¯ãLambdaã®ã¢ãããã¼ããã権éã¨ãã¼ã«ã«ã§å®è¡ããçºã®æ¨©éã§ããROLE_ARNã®æ¹ããå®éã«Lambdaã§å®è¡ãããå ´åã®æ¨©éã«ãªãã¾ããããããé©åãªãã®ãè¨å®ãã¦ããå¿ è¦ãããã¾ãã
ããã¾ã§è¨å®ããããã¼ã«ã«å®è¡ãã¦ãã ãããã¨ã©ã¼ãã§ãªããã°ãO.K.ã§ãã
$ npm run start
次ã«Lambdaã«ã¢ãããã¼ããã¾ããä¸è¨ã®ã³ãã³ãã§ã¢ããã§ããããã«ãªã£ã¦ãã¾ããç´ æ´ããã
$ npm run deploy
AWSã³ã³ã½ã¼ã«ã«ãã°ã¤ã³ãã¦ã¿ãã¨Lambdaãã¡ã³ã¯ã·ã§ã³ãåºæ¥ã¦ããã¯ãã§ãã
å®è¡ãã¦ã¿ã¦ãã ãããããã©ã«ãã®ãµã³ãã«ã ã¨ãã³ã³ã½ã¼ã«ãã°ã«'Hello from phantom'ã¨åºãã ãã§ãã
ãã®ãã³ãã¬ã¼ãããã£ã¦ãããã¨
ãã¡ãªã¿ã«ãã®ã¢ã¸ã¥ã¼ã«ãã©ããã£ã¦ä½ã£ã¦ããã®ãã¯ãå梱ã®ã·ã§ã«ãè¦ãã¨è§£ãã¾ããAmazon Linuxã®ã¤ã³ã¹ã¿ã³ã¹ã§ãã«ãããã¢ã¸ã¥ã¼ã«ãå©ç¨ãã¦ãã¾ããPhantomJSã«éãããåããããªããæ¹ã§è²ã ãªã¢ã¸ã¥ã¼ã«ãLambdaã§ä½¿ãã¾ãã
# Launch an EC2 instance using the region-appropriate AMI from this document: # http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions. # Use a fairly beefy Spot Instance (c4.large is good) unless you want to wait # for a long time. Don't bother with a t2.micro. # Once it starts, SSH into the machine: ssh [email protected] # And then run (following the instructions from # http://phantomjs.org/build.html): sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \ openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \ libpng-devel libjpeg-devel wget https://github.com/ariya/phantomjs/archive/1.9.7.zip unzip 1.9.7.zip cd phantomjs-1.9.7/ ./build.sh --confirm # Once it's finished, retrieve the build product (run from your local machine): scp [email protected]:phantomjs-1.9.7/bin/phantomjs . # Since this AMI includes a newer version of libicudata than Amazon Lambda, # we need to include those libraries too. # This won't be necessary once # https://github.com/ariya/phantomjs/issues/12948 is fixed. scp [email protected]:"/usr/lib64/libicu*50" . # That's it! Don't forget to terminate the EC2 instance.
ã«ã¹ã¿ãã¤ãº
ãã¹ã¯ãªã¼ã³ã·ã§ãããåãä¾ã«å¤ãã¦ã¿ã¾ãã
var page = require('webpage').create(); page.viewportSize = { width: 1920, height: 1080 }; page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'; page.open('http://github.com/', function() { page.render('github.png'); phantom.exit(); });
ãã¼ã«ã«ã§å®è¡ããã¨ãgithub.pngã¨ãããã¡ã¤ã«ãåºæ¥ãã¨æãã¾ããå¾ã¯ããããS3çã«ã¢ãããã¼ããããããªãã®ã使ãã¨ãLambdaã¯ãã¼ã©ã¼ã¨ãã¦æ©è½ãå§ãã¾ãããã®è¾ºãã¯ããããã¤ã³ãå¤ãã®ã§ãã¾ãæéä½ã£ã¦æ¸ã足ãã¾ãã
ã¾ã¨ã
ãLambdaã¯ãä»å¹´ã®ã¢ãããã¼ãã§å®è¡æéãMax5åãæ´ã«ã¹ã±ã¸ã¥ã¼ã«å®è¡ã®æ©è½ãä»ãã¾ãããããã§ã¯ãã¼ã©ã¼ä½ãçºã«ãµã¼ããç¨æããå¿ è¦ãã»ã¼ãªããªã£ã¦ãã¾ãããã¨ã¯ãPythonã§ä½ãããNode.JSã§ä½ããã§ããä»å¹´ã¯Node.JSã®è¯ãã¯ãã¼ã©ã¼æ¬ãåºãã®ã§ããããåèã«ã©ãã©ãã¢ã¤ãã¢ãå®ç¾ã§ããã°ãªã¨æãã¾ããRubyæ¬ãããããã

JS+Node.jsã«ããWebã¯ãã¼ã©ã¼/ãããã¨ã¼ã¸ã§ã³ãéçºãã¯ããã¯
- ä½è :ã¯ã¸ã©é£è¡æº
- çºå£²æ¥: 2015/08/31
- ã¡ãã£ã¢: åè¡æ¬

Rubyã«ããã¯ãã¼ã©ã¼éçºææ³ãå·¡åã»è§£ææ©è½ã®å®è£ ã¨21ã®éç¨ä¾
- ä½è :ä½ã æ¨ æé,ãã³ãã¡
- çºå£²æ¥: 2015/03/02
- ã¡ãã£ã¢: Kindleç
See Also:
クローラー/スクレイピング本がざくざく
『Rubyによるクローラー開発技法』を書きました
Rubyによるクローラー開発技法の目次
Lambdaで作るクローラー/スクレイピング
åç
§ï¼
クローラー/Webスクレイピング Advent Calendar 2015
プログラマになりたい Advent Calendar 2015