lambda関数パッケージビルド用EC2を構築する

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

lambda関数からCPU依存のライブラリや各AWSサービスに接続を行う場合、lambdaが実行されるOS、Amazon Linuxからパッケージビルドを行えばトラブルが少ないです。


EC2にIAMロールの割り当て

Lamdaで使用するIAMロール同様のEC2用のIAMロールを作成しておき割り当てます。

AWSLambdaBasicExecutionRole(CloudWatchへのアクセス)を必須として、S3FullAccessなど用途に応じたポリシーをアタッチしておく。


Python3系のインストール

Amazon Linuxには2も含めてPython3系が入ってないようなのでインストールします。尚、使用するLambdaのruntimeに応じて必要な言語の実行環境を用意します。

$ sudo yum -y groupinstall 'Development tools'
$ sudo yum -y install zlib-devel openssl-devel
$ sudo yum install python3 python3-devel 
$ sudo pip3 install virtualenv


virtualenvを利用する
$ virtualenv -p python3.7 workingName
$ cd workingName


開発用仮想環境に移行

$ source bin/activate
(workingName) [ec2-user@ip-172-30-0-117 workingName]


仮想環境からデタッチする

(workingName) [ec2-user@ip-172-30-0-117 workingName]$ deactivate


boto3ライブラリのインストール

virturalenvの仮想環境上で実行する。

$ source bin/activate
(encryptfile) [ec2-user@ip-172-30-0-117 workingName]$ pip install boto3


lambda関数パッケージの作成

lambda_function.pyworkingName/に作成する。


パッケージの作成

$ zip /tmp/lambda_function.zip lambda_function.py
$ cd lib64/python3.7/site-packages/
$ zip -r /tmp/lambda_function.zip *


パッケージのデプロイ

S3へのアクセルロールがあればS3経由でデプロイできる

$ aws s3 cp /tmp/lambda_function.zip s3://buketName/

アップロード後、lambdaのコントロールパネルよりS3よりzipファイルをアップロードできる。