【AWS】LambdaにrequestsライブラリをLayerで追加する

2021年5月22日

LambdaにrequestsライブラリをLayerで追加

zipファイルの作成

Layerに入れるrequestsライブラリをローカルディレクトリにpipでインストールします。Layer化対象のライブラリをインストールするディレクトリ名を「python」にすることでLambdaでimportする際にパス指定が不要となります。

ライブラリインストール後にディレクトリをzipファイルに圧縮します。

Lambda レイヤーの作成と共有

$ mkdir python
$ pip install -t python requests
$ zip -r9 layer.zip python

Layerの作成

作成したzipファイルをAWSコンソールからアップロードします。

AWS Lambdaへのレイヤーの追加

「レイヤーの作成」をクリックします。

AWS Lambdaでレイヤーを作成する

レイヤー名を入力し、先ほど作成したzipファイルをアップロードします。

AWS Lambdaレイヤー情報の入力

レイヤーを追加したいLambda関数に移動しレイヤーの「レイヤーの追加」をクリックします。

AWS Lambda関数へレイヤーを追加

レイヤーを選択する画面が表示されるので「ARNを指定」を選択し、先ほど作成したレイヤーのARNを入力します。

レイヤーのARNはレイヤー一覧画面で確認できます。

動作確認

requestsを使ってQiita APIにGETリクエストを投げてみます。

import json
import requests

def lambda_handler(event, context):
    
    r = requests.get('https://qiita.com/api/v2/items')

    return {
        'statusCode': r.status_code,
        'body': r.json()
    }

テストから実行するとGETリクエストに成功していることが確認できます。

AWS Lambdaからrequestsを使ってGETリクエストを投げる

AWS,Python

Posted by fanfanta