AWS使ってます。まぁ1年無料枠だけどなw
今回はLambdaでnode.js使いたいと思ったんですが
以前私が使った時は
Lambdaが出始めということで
デプロイの手段がZipアップロードしかありませんでしたが
今はVisual Studioで作成して
デプロイできるというじゃないか!
ということでそん時の方法を備忘録。
環境
・Visual Studio Community 2017(以下VS2017)
・AWS
とりあえずVS2017はインストールされている前提で。
AWSのアカウントもある前提で書いていきます。
AWS Toolkit for Visual Studio
まずAWSから「AWS Toolkit for Visual Studio」をダウンロード。
https://aws.amazon.com/jp/visualstudio/
ダウンロードが完了したらexeを起動。
VS2017を選択してインストール。
IAM
次にAWSにデプロイするためには
「Access Key ID」と「Secret Access Key」が必要なので
AWSのIAM(Identity and Access Management)を有効にして、Key情報を発行しましょう。
参考
IAM とはAWS Identity and Access Management
とりあえずAWSにログインします。
https://console.aws.amazon.com/console/home
まずは右上の「アカウント」をクリックして
「IAM」を有効化します。
次に「セキュリティ認証情報」をクリックしてIAMの編集を行います。
今回はユーザーとして「okita2」を作ります。
(ご察しの通りokitaはもう作成済みなのでokita2です・・・)
ログイン情報を作成してAWSにログインすることもできますが
今回はプログラムからのアクセスだけを考慮します。
次にどの権限を付与するかですが今回はグループも作成しましょう。
「AdministratorAccess」にチェックを付けてグループを作成します。
本来は必要な権限のみを付与しますが、今回はお試しということで適当にw
で、最終確認を行い、問題無ければ「ユーザーの作成」をクリックします。
ユーザーの作成が完了したら、ユーザー情報のCSVをダウンロードします。
Lambda Function
AWS に Lambda Functionを作成します。
AWSのLambdaを選択し「関数の作成」をクリック。
※AWSのコンソール画面は見るたびにバージョンアップしているので
2017年9月はこんな画面だったのか、くらいで参考にしてください。
トリガーの設定ですが、今回はデプロイがメインなのでトリガーは無しで。「次へ」をクリック。
※本来はここでS3やゲートウェイを指定することもできます。
基本設定は適当で問題ないです。
名前は「TestLambda20170916」にしました。
画面下部にはロールの選択がありますが
Lambda用のロールをとりあえず作成しました。
本来は複数ユーザーでいろんなFunctionが動作している場合
厳格にロールと権限を管理する必要がありますが
個人管理のおひとり開発なので適当でw
Functionが完成したので、とりあえず
ブラウザ上で動作確認しましょう。
「テスト」ボタンを押して実行結果が無事出ればOKです。
Visual Studio Community 2017
ようやくVS2017を起動します。
ファイル > 新規作成 > プロジェクト で新しいプロジェクトを作成します。
AWSという項目が増えているので、それを選択し
「AWS Lambda Function Project (Node.js)」を選択。
プロジェクト名は今回「TestLambda20170916」としました。
プロジェクトを作成すると新しいウインドウがでるので
作成したIAM情報を入力します。
設定画面ではAWSで作成したLambda Functionを選択。
今回はテストなのでcallbackの文字列部分を少し変更しました。
変更したら保存しますが、保存しただけではデプロイされません。
プロジェクトを右クリックして「Publish to AWS Lambda…」を
クリックしてデプロイ画面を開きます。
プロジェクト作成した時と同じ設定にして「Next」をクリック。
次の画面ではロール等の変更が可能ですが、
まぁAWSコンソールでも変更可能なので、そのままで「Upload」をクリック。
アップロードに成功するとAWSのFunctionを実行できる画面が出てきます。
これは 表示 > AWS Explorer からも表示可能です。
とりあえず「Example Requests」を「Hello World」にして
「Invoke」をクリック。
これでAWSのテストと同じことができます。
アップロードしたあとなので、
ブラウザでテストした結果とメッセージが変わっていれば成功です。
ブラウザからもコードを確認すると
VS2017からデプロイしたコードになっていると思います。
※キャッシュなのかなんなのかたまに前のままのコードが表示されますが
その時はF5連打で大丈夫なはずですw
ということで、一通り流れを書きましたが
Zipに固めるよりお手軽な気がします。
ちなみにLambdaにはC#やPython等も動かせるのでぜひやりたいと思います!
以上!