AWS

【Python】AWS Lambdaでスクレイピング【Docker概要編】

LambdaでスクレイピングするならDockerイメージを使おう【Python】

AWS Lambdaでスクレイピングしたい方へ

トラハック
トラハック
スクレイピング用のPythonスクリプトをAWS Lambdaで実行したいけど、どうすればいいの?AWS Lambdaで外部ライブラリを使いたいんだよなあ。
この記事を読めば分かること
  • AWS Lambdaでスクレイピング用のPythonスクリプトを実行する方法
  • AWS Lambdaの環境準備を簡単にする「Docker」の概要とインストール方法

AWS LambdaでスクレイピングPythonスクリプトをイベントドリブンに実行するべく四苦八苦した過程で、私が詰まった点や分かりにくいと感じた点を、なるべく簡潔に解説します。

AWS LambdaでPythonのスクレイピングをするならDockerで環境を用意しよう

AWS LambdaでPythonのスクレイピングをするならDockerで環境を用意しよう

PythonでスクレイピングするためにはSeleniumやBeautifulSoup4のような外部ライブラリを利用します。また、Headless Chromeを使うならそのインストールも必要ですね。

しかし、外部ライブラリやHeadless ChromeがインストールされていないAWS LambdaのLinux OS上ではスクリプトが動きません

そこで登場するのがDocker。AWS Lambdaにリソースをパッケージングした仮想環境(コンテナ)をアップロードして、その仮想環境を使ってスクレイピング用Pythonスクリプトを実行します。

この記事ではDockerの概要とインストール方法についてサクッと解説します。

そもそもDcokerとは?

Dockerはコンテナ型の仮想実行環境を構築するためのソフトウェアです。

ハイパーバイザ型(Hyper-V)やホスト型(ViratualBox)の仮想化と比べて、コンテナ型は「非常に軽量」であることが最大の強みであります。

Dockerが軽量である理由は、仮想化する範囲がOS単位ではなく「コンテナ」と呼ばれるプロセス単位だからです。

「コンテナ」とは、実行環境を他のプロセスから隔離するLinuxカーネルの機能です。

以下に、コンテナ型とホスト型の違いをザックリ図解しました。コンテナ型は仮想化する範囲が小さいことが分かりますね。

そもそもDcokerとは?

Dockerを使うメリットは以下です。

Dockerのメリット
  1. 他の仮想化ソリューションに比べて軽量
  2. 簡単に仮想環境のスクラップ&ビルドができる
  3. ローカル仮想環境の統一

1つ目のメリットについては先ほど述べた通りです。2つ目のメリットは、仮想化範囲が小さいおかげで、環境を作り直す際のハレーション(他への影響)が少なく済むからです。

Dockerは1人で検証するときだけでなく、チームで開発する際にも役立ちます。それが3つ目のメリットである「ローカル環境の統一」です。

チーム内で同じDockerイメージを利用することで、各メンバーのローカル環境に左右されることなく開発可能です。自分のローカル環境が汚れないのも嬉しいですね。

ホスト型とコンテナ型の仮想環境を工場に例えてみましょう。

ホスト型は1つの製品を作るために工場を1つ建てるイメージです。一方、コンテナ型は1つの工場の中に複数の部屋があり、その部屋の中では別々の製品が作られています。部屋ごとに製造に必要な機材や材料は異なりますが、「工場」という建物は1つで十分です。

また、製造するモノが変わったとしても、工場を建て直す必要はなく、部屋の中の機材や作業員を変更するだけでOKです。

結論、「Dockerは軽量で環境統一が容易な仮想化ソリューション」と覚えておけば良いです。

Dockerをインストールしよう

ザックリDockerを理解できたところでDockerをインストールしましょう。以下はMac OSの場合のインストール手順です。

ダウンロード

Dockerの公式サイトにアクセスします。

[Download from Docker Store]をクリックします。

Dockerをインストールしよう

[Please Login to Download]をクリックします。

docker-login-to-download

[Create account]からアカウントを作成します。

docker-create-account docker-create-account2

アカウントの作成が完了したらログインします。Get Dockerをクリックしてdmgファイルをダウンロードします。

get-docker

dmgファイルを展開したらApplicationsフォルダへ移動します。

初回起動

Docker.appを起動します。権限設定が必要なので、先ほど作成したDockerアカウント情報を入力します。

起動準備中の間にログインしておきます。

docker-preparing

起動が完了しました。

docker-logined

Terminalで以下のコマンドを実行しましょう。

docker version

以下のように表示されたらインストールが成功しています。バージョンはいつインストールしたかによって異なります。筆者がインストールした2018/11/19時点でバージョンは18.06.1-ceでした。

 

Client:
Version:           18.06.1-ce
API version:       1.38
Go version:        go1.10.3
Git commit:        e68fc7a
Built:             Tue Aug 21 17:21:31 2018
OS/Arch:           darwin/amd64
Experimental:      false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:29:02 2018
OS/Arch: linux/amd64
Experimental: true

今回の記事ではDockerのインストールまで完了しました。

次の記事ではAWS Lambda用のDockerイメージにスクレイピング用リソースをパッケージングしてテストスクリプトを実行します。

LambdaでスクレイピングするならDockerイメージを使おう【Python】AWS Lambdaからスクレイピングしてみたい方は、こんな悩みを抱えていませんか? この記事では、以下について解説します。 ...
記事のまとめ
  • AWS Lambdaでスクレイピング用Pythonスクリプトを実行するならDockerで環境を用意しよう
  • Dockerは軽量な仮想環境を簡単に構築できる
  • Dockerはローカル環境の統一が容易なのでチーム開発で役立つ