Lambdaで実行したいけど、どうすればいいの?この記事では、以下について解説します。任意ワードのGoogle検索結果上位10のURLを取得するスクレイピングコード(Python)現在私は、SEOライティングのリサーチ自動化プログラムを開発中です。Chromeを使ってスクレイピングします。Lambdaを使ってサーバーレス環境から実行させます。このプログラムを作った経験と知見を記事にまとめました。「開発プロセスの中で私がハマった点」「web検索結果上位の記事にはまとまりきっていないと感じた情報」を、初心者でも分かりやすいよう解説します。Lambdaの実行環境をDockerで用意するので、そもそもDockerを使ったことがない方は、まずこちらの記事を読んでください。LambdaでスクレイピングPythonスクリプトをイベントド...この記事内の手順はこちらのQiitaのエントリーを参考にさせていただきました...!シンプルにまとまっていて大変感謝です。その中でスキップされている手順や説明を捕捉しています。AWSやPythonに触れ始めたばかりの方のためになればと思います。LambdaでPythonのスクレイピングコードを動かす環境構築手順(Dockerを使います)まずはDockerイメージの作成手順について解説します。Lambdaのデフォルトの実行環境に存在していません。次のランタイムバージョンをサポートします。実行環境と利用できるライブラリ上記の通り、基本的には標準ライブラリのみ利用可能です。トラハックPythonでスクレイピングするには外部ライブラリのインポートが必須なのに、どうすればいいの?そこでDockerを使います。Lambdaの実行環境として利用します。Lambda上でのスクレイピング実行環境を作成します。Lambdaで実行するのでServerless-Chromium)を使います。今回私が作成したコードは以下の通りです。Pythonで書いたスクレイピング用コードで、任意ワードのGoogle検索結果上位10のURLを取得します。links事前準備まずはワーク用ディレクトリを作成します。Dockerはビルドする際に、カレントディレクトリ内のファイルを全てパッケージングするからです。以下のコードをターミナルから実行してください。google_search_links以降の手順でインストールする各種モジュールは互換性の関係上、最新版ではなく以下の組み合わせとなります。Lambda上で動くserverless-chromiumのモジュールをダウンロードします。chromedriver.zipSeleniumのダウンロード(Dockerfileの作成)Seleniumなどの外部ライブラリは、Dockerfileとrequirements.txtを利用してDockerイメージにパッケージングします。2用のファイルをダウンロードする必要があります。そのため、Dockerを使っています。Lamndaで実行可能な環境にPythonが組み込まれているlambda/lambciを利用してDockerイメージを作成します。ENVコマンドで、デフォルトリージョンはap-northeast-1(アジアパシフィック(東京))を指定しておけば良いです。\”の行で指定するpythonファイルはあなたが作成したファイル名に適宜変更してください。requirements.txtはベタ書きで外部ライブラリの名前を書いておけば良いです。Seleniumここまで終えると、ディレクトリ構成は以下のようになっているはずです。requirements.txtこの構成となっていない場合、手順を見直して修正してください。Dockerイメージの作成いよいよDockerイメージを作成します。.”lambda_fetch_links”という名前のDockerイメージを、カレントディレクトリ内のファイルを全て含めてビルドします。lambda_fetch_linksビルドしたDockerイメージをDockerfileの内容に従って実行します。Dockerfileの”CMD”以降に記載したzipコマンドによって、AWS上にアップロードする”deploy_pacakge.zip”が作成されます。Lambda上にDockerイメージをアップロードそれではDockerイメージをS3バケットにアップロードしましょう。AWSのコマンドラインインターフェイスをローカルにインストールしておきます。aws-cliLambda関数実行に関連する権限の事前準備を済ませておきます。詳細な手順は以下の記事にて解説しています。CLIを使ってLambda用実行環...また、事前にS3バケットを作成する必要があります。この手順は次の記事内で紹介しています。この記事では、その疑問について回答します。S3の特徴については以下の書籍の情報をシンプル...準備ができたら、S3にDockerイメージをアップロードしてLambda関数を作成します。300YOUR_BUCKET_NAME:あなたが作成したS3バケット名を指定YOUR_ROLE_NAME:Lambdaの実行権限とS3の読み取り権限を持つIAMロールをarn形式で指定します。Lambdaでのテスト実行方法アップロードが完了したので、AWSコンソールからLambdaにアクセスしてテストを実行して見ましょう。テストイベントの作成AWSコンソールの[サービス]一覧からLambdaを選択します。関数の一覧から、先ほどアップロードした[fetch_links.py]を選択します。テストイベントを作成するため[テスト]をクリックします。テストイベントの内容を作成します。送信内容:検索したいワードを記載JSON形式(Pythonでの辞書型)で記載します。以下画像の通り入力すると、アップロードしたスクレイピングコードは”Python”と”スクレイピング”というワードの検索結果上位10のURLを取得します。テストイベントの実行テストイベントを作成し終えたら、もう一度[テスト]をクリックします。するとテストの実行結果が返ってきました!エラーが無ければ[実行結果:成功]となり、[▼詳細]から検索結果上位10のURLが取得できていることが確認できます。今回の記事は以上です。補足事項は別記事にて追記していきます。リモートOKなスタートアップでフロントエンド|搾取されないエンジニアを増やすために、キャリア論や転職を成功させる方法、勉強方法について発信しています。