Doker Desktop for Windows を利用した AWS lambda ローカルPC開発環境構築


環境

  • Windows 10 Pro 20H2
  • docker desktop Version 3.1.0(51484)

docker desktop インストール

ちなみに、私のPCではインストール実行後、以下の問題が出て解決するまで時間がかかりました。

amazonlinux 起動

  • docker desktop 起動後、PowerShell より以下のコマンドを実行
docker pull amazonlinux
  • docker desktop の images > Images on disk より amazonlinux を RUN ボタンを押して Optional Settings を選択



  • Optional Settings で Container Name, Volumes を設定して Run ボタンを押す
    Windows のローカルフォルダ D:\lambda を Amazonlinuxコンテナの /windows にマウントする例
# Container Name
lambda

# Host Path
/d/lambda

# Container Path
/windows

  • Containers / Apps より amazonlinux の CLI 起動

必要コマンドのインストール

  • CLI に入るとroot状態で、まっさらな状態なので yum コマンドにて 諸々インストール

yum -y install util-linux procps wget jq sudo
yum -y groupinstall 'Development tools'
yum -y install zlib-devel openssl-devel
yum -y install libffi-devel

ユーザー作成

useradd username

sudo を利用できるようにする

  • visudo で /etc/sudoers を編集
visudo
  • コメントアウトを外して保存
# %wheel        ALL=(ALL)       NOPASSWD: ALL
↓
%wheel        ALL=(ALL)       NOPASSWD: ALL
  • ユーザーを wheel グループに追加
usermod -aG wheel username
  • ユーザーにスイッチ
su username

以降、スイッチしたユーザーでPythonなどインストール。

Python3.7のインストール

mkdir -p /tmp/python3.7
cd /tmp/python3.7
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar zxvf Python-3.7.9.tgz
cd Python-3.7.9
./configure
make
sudo make install

python3 --version

aws cli インストール

mkdir -p /tmp/awscli
cd /tmp/awscli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version

lambda 環境構築

python-lambda-local, lambda-uploader を利用する例。

cd ~
python3 -m venv lambda
. ./lambda/bin/activate
pip install -U pip
pip install boto3
pip install python-lambda-local
pip install lambda-uploader

LANG を UTF-8 に設定

~/.bashrc に以下を追加する。

export LANG=ja_JP.utf-8

localtime を UTC から JST に変更

日本との時差が9時間出てしまうのを修正。

date
Mon Mar  1 15:26:48 UTC 2021

ll /etc/localtime
lrwxrwxrwx 1 root root 25 Feb 14 04:21 /etc/localtime -> ../usr/share/zoneinfo/UTC

cd /etc/
sudo ln -sf ../usr/share/zoneinfo/Japan localtime

ll localtime
lrwxrwxrwx 1 root root 27 Mar  1 23:44 localtime -> ../usr/share/zoneinfo/Japan

date
Tue Mar  2 00:26:19 JST 2021

その他

lambda開発に慣れてきたらこの辺りも試したいところです。

参考