AWSのLambdaでScrapyを動かす その3 - dynamodbからの取得・保存 - 株式会社CoLabMix

AWSのLambdaでScrapyを動かす その3 - dynamodbからの取得・保存 -

前回ではAWS LambdaでScrapyを動かす設定を行い、検索するURLをS3のデータから行いました。

★関連記事
AWSのLambdaでScrapyを動かす その1
AWSのLambdaでScrapyを動かす その2 - S3からの値の取得 -

前回の記事の設定の中では値の保存を行いませんでしたのでdynamodbへの値の保存を行います。

値の取得についても分ける必要もありませんので、dynamodbからの取得に変えます。

トリガーは今まで通りS3へのアップです。

 

DynamoDBの設定

DynamoDBでは2つのテーブルの作成をします。

「request_table」はリクエスト対象のURLを設定したテーブルでキーは「id」で「URL」に値をセットすることになります。

「test-table」は結果を保存するテーブルでキーは「id」になります。

「request_table」にはクローリング対象のURLの項目をセットしておきます。

 

上記で準備は完了です。

 

クローラー側の設定

クローラー側の設定としてDynamoDBを扱うためにロールに「AmazonDynamoDBFullAccess」を追加しています。

 

また、そちらのロールをLambdaの「実行ロール」に設定しています。

ここで「lambda_function.py」を変更してライブラリごとzipにしてアップロードしています。

 

こちらでトリガーを起動すると(今回は前回と同じでS3へのアップロード)、CloudWatchでのログが確認できます。

 

上記でDynamoDBからのレスポンスと登録している内容(yieldの値)が確認できます。

DynamoDBでもデータが増加しています。

 

本来的にはItemPipelineを使った方が良いかもしれませんが、実行としてはこちらの方がシンプルなのでこちらの実装にしました。

これでかなり広がりのあるクローラーをServerlessで構築することができます。

★関連記事
AWSのLambdaでScrapyを動かす その1
AWSのLambdaでScrapyを動かす その2 - S3からの値の取得 - 

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

    関連記事

    1. Elasticsearch 6 を使ったデータ検証 その4(チュートリ…

    2. 【Django】入力フォームの増減機能からDBに保存する方法

    3. terraform構築手順〜EC2編〜

    4. Elasticsearch 6 を使ったデータ検証 その7(Analy…

    5. AWSのLambdaでScrapyを動かす その1

    6. RedHatLinux8でのxfsdumpを使ったRDXへのフルバック…