LoginSignup
4
2

More than 3 years have passed since last update.

EFSにセットアップしたPythonライブラリをLambdaにimportする方法

Last updated at Posted at 2020-07-08

はじめに

LambdaEFSをマウントできるようになりました。これによりEFSにセットアップしたPythonのライブラリをLambdaにimportできるようになりました。

これまでは、LambdaにPython標準以外のライブラリをimportしたい場合は、Lambda layer に固めてアップロードする方法しかありませんでした。しかし、この方法には 圧縮して50MB以下、解凍後250MB以下というサイズの制限があります。このため、サイズの大きいライブラリを複数使うといったことができませんでした。そのため、少し規模が大きいシステムだと、一部処理をdockerに外出しするなどの対応が必要となり、Lambdaだけでは完結しませんでした。

しかし、LambdaにEFSをマウントできるようになったため、この問題が解消します。EFSにインストールしたライブラリをLambdaにimportできるようになりました。

how to

概要

  1. EFS作成
  2. EFSアクセスポイントを作成
  3. EFSを作業用にEC2にマウント
  4. EFSにPythonとライブラリをインストール
  5. Lambdaにimport

手順

  1. EFS作成
    • 作成手順
      省略
    • 注意
      Lambdaと同じVPCを指定
      セキュリティグループ port:2049 許可にLambdaのセキュリティグループを指定
  2. EFSアクセスポイント(クライアントアクセス)を作成
    所有者ユーザーID: 1001
    所有者グループID: 1001
    アクセス許可: 777
    パス(ディレクトリ)はここでは /lambda を設定
  3. EFSを作業用EC2にマウント

    sudo yum install -y amazon-efs-utils
    cd /mnt
    sudo mkdir efs
    sudo mount -t efs fs-xxxxx:/ efs
    
  4. EFSにPythonとライブラリをインストール
    ここでは Python3.8.1 と pandas をインストール

    sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel
    wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    tar xzf Python-3.8.1.tgz
    
    cd Python-3.8.1
    sudo ./configure --enable-optimizations
    sudo make altinstall
    
    # check
    python3.8 --version
    pip3.8 --version
    
    cd /mnt/efs
    pip3.8 install --upgrade --target lambda/ pandas
    
  5. Lambda関数を設定
    VPCに所属させる必要がある
    Lambdaの実行roleにポリシー AmazonElasticFileSystemClientReadWriteAcces を追加
    EFSを追加

  6. Lambdaでimport
    こんなかんじでimportできる。

    import sys
    sys.path.append("/mnt/efs")
    import pandas as pd
    
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2