Lambda開発のためのVScode

2021.05.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

新卒研修中の森田です。

VScodeを使用してよくコードを書いていたので、LambdaもVScodeを使用して効率良く開発できないかなと思って軽い気持ちで始めたら、少し詰まったので共有します。

行いたいこと

前述した通り、VScodeを使用してLambdaの開発を行うことです。 本記事では、環境構築、ローカルでの実行、デプロイまでを行います!

環境構築

mac OS Catalina にて行います。

Pythonのインストール

今回Lambdaのランタイムは Python とするのでまずは、Pythonをインストールします。

私の場合、Jupyterもいずれ使用したいのでMinicondaを用いてPythonをインストールします。

以下よりインストーラーをダウンロードしてインストールします。

https://docs.conda.io/en/latest/miniconda.html

 

bash ./Miniconda3-latest-MacOSX-x86_64.sh

インストール時に色々と聞かれますが、そのまま進めます。

インストールが完了しましたら、ターミナルを再起動し、baseが有効になっていれば問題ありません。

Dockerのインストール

以下よりインストーラーをダウンロードし、インストールを行います。

https://hub.docker.com/editions/community/docker-ce-desktop-mac/

VScodeのインストール

以下よりインストーラーをダウンロードし、インストールを行います。

https://azure.microsoft.com/ja-jp/products/visual-studio-code/

インストール後、VScodeの拡張機能AWS Toolkitもインストールします。

AWS CLI のインストール

brewを用いてインストールします。

brew install awscli

インストール後、認証まで行います。

aws configure

AWS SAM CLIのインストール

AWS CLI に加えてローカルにて検証、デプロイ行うにあたって必要ですので、brewでインストールします。

brew tap aws/tap
brew install aws-sam-cli

ローカルでLambda作成、実行

Lambdaを作成

AWSの拡張機能を開き、コマンドパレット(command + shift + p )を開きます。

AWS: Connect to AWSを選択します。

続いて先程作成した認証情報defalutを選択します。

その後、左側のExplorerからリージョンを選択します。

すると、Lambdaが見えますので、右クリックをして作成します。

ランタイムを選択します。 筆者の場合、baseのPythonが3.8でしたのでpython 3.8を選択しました。

Application Templateは、Hello Worldとし、適当な箇所のフォルダ選択、名前を設定し作成します。(筆者の場合、lambda-python3.8-testとしました)

作成されたフォルダ( lambda-python3.8-test )を開きます。

すると、このように必要なファイルが作成されていることが確認できます。

 

ローカルでのLambda実行

下記コマンドを実行することでDocker imageをpullし、検証用のコンテナが起動し、Lambdaがローカルで実行されます。

sam local invoke

ここで私は詰まってしまいました ...


  • 詰まったポイント1 : 実行時のエラー

PythonPipBuilder:Validation - Binary validation failed for python, 
searched for python in following locations : ['/usr/bin/python'] which did not satisfy constraints for runtime: python3.8. 
Do you have python for runtime: python3.8 on your PATH?

まず、エラーの通りパスが違うようです。しかし、ターミナルでは 3.8になっています。

調べたところ、 VSCodeのPythonのパスが誤った所が指定されているようですので設定よりパスをcondaの箇所に設定しました。

which コマンドでbaseのパスを確認

condaのパスを設定


  • 詰まったポイント2 : 以前までの画面と違っている!

私は1つ目の問題を解消する際に、こちらの記事を参考にしました。

この記事を確認してたところ...

Run Locally というボタンが私の環境では表示されず、 Add Debug Configuration が表示されていました。

ボタンをポチって動作させたかったので、どうにか出てこないかと調べましたが、どうやら仕様が変更になっているらしく、F5の実行で行うこととしました。

https://docs.aws.amazon.com/toolkit-for-vscode/index.html


ローカル実行結果

F5で実行しましたところ、 hello world が得られていることが確認できます。

デプロイ

コマンドパレット(command + shift + p )でAWS: Deploy SAM Applicationを開きます。

template.yaml の選択

リージョン選択(Tokyo)

S3バケットの選択/作成

スタック名の選択

VSCodeの出力でデプロイが始まり、デプロイが完了すると下図のようになります。

表示されているURLへアクセスすると、正常に動作していることが確認できます。

これで、デプロイまで一通りの作業は完了になります。

最後に

VSCodeにこだわったため、思いのほか時間を要してしまいました...

同じ思いをしないよう、ぜひ参考にしていただければと思います!