株式会社SUPINF

アイコンシルバー
東京都

AWS LambdaでWebクローラーを作ってみた


こんにちは!SUPINF女子部です。

先日の女子部メンバーは水族館が好きすぎるということでしたが
私はミュージカルが好きすぎて、寝ても覚めても
夢の中でもミュージカルのことを考えています。

ですが、たまにはそれ以外のことも考えてみようと思って
AWS Lambdaについて考えて考えてみることにしました。

AWS Lambda てなに??

2014年11月に開催されたre:Invent で発表されたAWSのサービスです。
あるイベントをトリガーに用意したコードを実行してくれる、
イベントドリブンなアプリケーションを開発できるプラットフォームです。
従来であれば、イベントドリブンなアプリケーションを開発するのには
複雑な仕組みを必要としていました。
Lambdaはコード書いてアップロードしトリガーとなるイベントを
設定するだけと非常に簡単です。

もちろんS3やDynamoDBなど、AWSのほかのサービスを
トリガーに設定することも可能です。

re:Invent 2015ではpythonに対応、バージョニング、スケジューリング、
実行時間が5分にまで伸びるといったアップデートがありました。

と、いうことで。

LambdaでサーバレスWebクローラーを作ってみた!

Webクローラーって何に使える?

Webサイトの不正改ざん
Webサイトの定期的な接続テスト、脆弱性検証
定期的なコンテンツの変更検証 
などなどなど

なんで Lambda でWebクローラー?

EC2は幅広いインスタンスタイプ、ネットワークやセキュリティなど柔軟に設定できます。
その代わりサーバーなどのインフラの管理は自身で行わなければなりません。

Lambdaはサーバーの管理などのインフラを気にしなくていい点、コード実行時間に対して課金される点で
コスト効率が高く、これまでのアーキテクチャと比べて大幅なコスト削減が期待できます。

また、新しく追加された「AWS Lambda Scheduled Functions」によって
定期実行処理も簡単に設定できるようになりました。

さて今回は、定期的に更新されるWebサイトの変更内容を
AWS Lambda Scheduled Functionsを使って更新の日時をトリガーに
Lambdaが起動しslackに通知してくれる、というものを作りました。

アップロードするコードは Node.js で書き、外部モジュールを使いました。
予め書いたコードと外部モジュールをzipファイルで圧縮して
Lambdaへアップロードします。その際の注意点!

プロジェクトディレクトリごと圧縮してしまうとエラーになってしまいます!
書いたコードと外部モジュールのディレクトリを圧縮しましょう。

さて、実行するコードと外部モジュールの準備ができたらLambda にアップロードしましょう!
(Lambda はまだ日本語には対応してないので頑張って英語読みましょう…)

AWS Lambda 触ってみた!

1. AWSマネジメントコンソールの[Lambda]の[Create a Lambda function]から
zipファイルをアップロードをします。
ちなみに、直接コードを書くこともS3においてあるzipファイルを
アップロードすることもできます。

ここで設定するのは以下の7つです。
・Name →関数の名前
・Description →関数の説明
・Runtime →書かれた言語 (Node.js/Java8/Pythonが対応しています)
・Handler →ハンドラ名 (コードに "exports.=function(.." としてハンドラを記述します)
・Roule →Lambdaを実行するIAMロール名
・Memory(MB) →使用可能なメモリの上限値
・Timeout →処理のタイムアウト時間 (5分まで可能になりました)

2. 作成されたLambda Functionを選択し、[Event source]から
起動のトリガーとなるイベントを設定します。
今回は決まった時間による起動なので[Scheduled Event]を設定します。

これだけです!
コードさえ書いてしまえばLambdaの設定は簡単ですね!

サーバレスなのでインフラの管理も必要ないし
コード実行時間に対する従量課金でコスト削減が見込めるし
今回のアップデートでさらに用途は広がりそうですね!

ぜひAWS Lambda使ってみてはいかがでしょうか!
(Pythonに対応したことだし、Pythonでなにか作ってみようかと考えているところであります…☆)

ご相談はこちらから

企画や要件が固まっていないご相談でも
お気軽にお問い合わせください。

  1. 01

    相談する

  2. 02

    要件ヒアリング

  3. 03

    専門企業のご紹介

  4. 04

    企業との
    ご面談&見積取得

  5. 05

    企業選定〜契約締結
    サポート

  6. 06

    専門企業と直接
    プロジェクト進行

※ステップ5以降はご希望に応じて
サポートいたします。

お急ぎの方はお電話で

03-6427-5422

サポートデスク直通(平日10:00〜18:00)

必須お名前
必須メールアドレス
必須電話番号
必須会社名
任意依頼内容・希望
利用規約及び、個人情報保護方針にご同意のうえ、送信ください。

申し込み完了後、サポートデスクから
お電話またはメールにてご連絡させていただきます。

本サイトは、reCAPTCHAとGoogleにより保護されています。(プライバシーポリシー利用規約)

EDITOR PROFILE

株式会社SUPINF

堀江 浩史

株式会社 SUPINF の広報部です!

AWS/コンテナ/AI/MSP/システム開発など、お気軽にご相談ください。



BTL アンバサダーとしても活動中です!

株式会社SUPINF

東京都
WEBサービス開発 インフラ構築 ソフトウェア・業務システム開発

株式会社SUPINFでできること

  • WEBサービス開発

  • インフラ構築

  • ソフトウェア・業務システム開発

会社選び・業者探しに迷った方はこちら
ご要望にあった会社を無料でご紹介いたします!
専門のサポートデスクがヒアリングを行い、
要件にあった最適な企業・業者をご紹介いたします。
ご要望にあった会社を無料でご紹介いたします