AWS Lambda をローカルで使用できるようにしてみる。
最近流行り?のサーバーレスアーキテクチャーを試してみたいのでいろいろ検討してみると今のところAWS Lambdaが標準っぽい。
しかしそのためだけにAWSにアカウント作ってもな~と考えていた。
よくよく調べてみるとAWS Lambdaで開発するにはいちいちAWSのコンソールからコードを作成したり、ローカルで作成したコードをZIPにしてアップロードするなどしなければならない。
どう考えても開発効率悪いとおもったので、いっそローカルで開発できればもっといいのにな~っと。
ありました!!
Installing the AWS SAM CLI on Linux - AWS Serverless Application Model
実際にローカルで動かすまでやってみました。
必要であったのは以下
Linuxbrewをインストール
apt update apt upgrade sudo apt install linuxbrew-wrapper
次に以下を参考に
Installing the AWS SAM CLI on Linux - AWS Serverless Application Model
AWS SAM CLIをインストール
brew upgrade brew update brew tap aws/tap brew install aws-sam-cli
/home/linuxbrew/binを パスに追加 ~/.bashrc の最後の行に以下を追加
export PATH='/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin':"$PATH"
いったんターミナルを閉じて、新しいターミナルを起動
sam --version
SAM CLI, version 0.12.0
上記のように表示されればOK
次にDockerをいれる。 以下を参照
Get Docker CE for Ubuntu | Docker Documentation
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
上記でインストール
sudo docker ps
上記のコマンド入力でエラーが出てなければOK
以下の表示が出てくればOK
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
次に、AWSのリージョンを設定する。この作業をしないとこの後で、リージョン設定されていないです!!と、いうこと聞かないので、ここで設定しておく
brew install awscli aws configure
以下のように設定
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json
リージョンセットOK!!
次に、以下を参照にQuick Startを試してみる。
Quick Start - AWS Serverless Application Model
cd ~ mkdir work cd work sam init --runtime nodejs
上記で work フォルダーの中に sam-appフォルダが作成される
nodeで実行できるようにする。
cd ~/work/sam-app/hello-world npm install cd .. sam local start-api
ここで ターミナルに
Running on http://127.0.0.1:3000/ (Press CTRL+C to quit) と表示されればOK
Error: Running AWS SAM projects locally requires Docker. Have you got it installed? と表示された場合は
dockerがログインしたユーザで操作できない状態なので以下で確認
docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied
上記のエラーが表示されている場合は現在のログインユーザをdockerグループへ入れてあげる。
gpasswd -a <USER> docker
いったんログアウト&ログインして再度コマンドで確認
docker ps
sudo なしの上記のコマンド入力でエラーが出てなければOK
以下の表示が出てくればOK
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd ~/work/sam-app/ sam local start-api
Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
上記を確認!!
あとは以下をブラウザから呼び出して http://127.0.0.1:3000/hello
{"message":"hello world"}
表示されればOK