Visual Studio CodeでPython使って、AWS Lambdaを動かしてみる

記事タイトルとURLをコピーする

こんにちは。技術3課の森です。
昔使ってたThinkPadのUSBキーボードをMacに繋いでます。が、MiddleClick + TrackPointでスクロールしなくて悩んでます。ご存知の方、教えてください。

やってみた動機

ServerworksにジョインしてからPythonを書き始めたのですが、いろんな関数や構文を覚えるためにTerminalでViを使っていました。
そろそろ補完機能を使えるエディタを使ってみようかなと思い立ち、特に探してはないですが、Visual Studio Codeに決めました。

VSCodeをインストール

それでは、インストールしていきます。実施したスペックと使うモジュール類も記載します。

スペック

  • PC: Mac Book Pro Late 2016 13inch
  • OS: macOS Sierra(10.12.4)

モジュール

利用するモジュールは以下の通りです。 インストール等については、以前ブログに書いた「【必見】AWS Lambdaをローカル環境で開発してみた」を見てください。

  • virtualenv
  • python-lambda-local
  • lambda-uploader

インストール

ダウンロード

ダウンロードは、ココから行ないます。 ダウンロードするとZIPファイルがダウンロードされます。

インストール

ZIPファイルをダブルクリックします。すると、「Visual Studio Code.app」が出てきますので、別のFinderを開いて、「アプリケーション」を選択して、「Visual Studio Code.app」をコピーしてください。

VSCodeを起動

LaunchpadからVisual Studio Codeを起動してください。

準備

プロジェクト作成

最初に開発するフォルダを決めます。その前に、わざわざTerminalを起動しなくても、VSCode内にTerminalを表示することができます。まずは、「表示」メニューの「統合ターミナル」をクリックします。 するとVSCode内にTerminalが表示されました。この機能いいですよね。 それでは、今回はホームディレクトリ配下に「Development/sample_project」フォルダを作成して、AWS Lambdaで実行するPythonのコードを作成していきます。 「ファイル」メニューの「開く」から先ほど作成したフォルダを選択してください。これで、プロジェクトが完成です。

pythonの拡張機能の追加

まずはpythonのファイルを用意します。 下の図のようにするとファイルが追加できます。今回は「lambda.py」という名前にします。 すると「'Python'拡張機能のインストールをお勧めします」とでますので、「推奨事項を表示」をクリックします。 補完やわかりやすくハイライトしてくれるやVSCodeにていい感じで使えるようにしてくれる3つの拡張機能をインストールします。インストールが終わったら、再度読み込み直すボタンが出るので、クリックします。

AWS Lambdaへアップロードと実行

コードを書く

まずはコードを書きます。今回はあまり大したことはせず、文字を出力するくらいにします。

def main(event, context):
    print 'vscode python'

ローカルでの実行準備

python-lambda-localをインストールしているので、ローカルで実行確認ができます。
今回はINとなる情報はないので、event.jsonには以下のような情報のみ記載します。

{}

ローカルで実行

では、先ほども利用した統合ターミナルで実行します。下の図のようなコマンド・パラメータを入力して実行すると結果、「vscode python」と出力されておりますので、成功ですね。

AWS Lambdaへアップロード

lambda-uploaderコマンドを実行する前に準備するものがありますので、用意していきます。

lambda.jsonの用意

詳細については、以前ブログに書いた「【必見】AWS Lambdaをローカル環境で開発してみた」を見てください。

{
    "name": "VSCodePython",
    "description": "using VSCode(Python)",
    "region": "ap-northeast-1",
    "handler": "lambda.main",
    "role": "arn:aws:iam::111111111111:role/MyLambdaExecRole",
    "timeout": 300,
    "memory": 128
}

lambda-uploaderを実行してアップロード

次にコマンドを実行します。結果は、アップロード完了になっています。

AWS Lambdaを確認

実際にAWS Lambdaにアップロードされているかを確認します。lambda.jsonに書いた内容と一致してますね。(roleはちょっと変えてるのでマスクしてます)

AWS Lambdaで実行

念のため、最後にAWS Lambdaで実行します。いい感じで実行されて、「vscode python」と出力されていますね。

まとめ

「Visual Studio」という名前を聞くと、C++やVisual Basic、C#というイメージが強いですが、pythonだけでなく、PHPやRuby、JavaやJavaScriptの拡張機能などもあるので、すごくいい感じですね。過去は、EclipseやNetBeansなんて使ってましたが、これだけで十分かもしれませんね。これから使い倒していこうと思います。