2
Help us understand the problem. What are the problem?

posted at

誰よりも易しくAWS LambdaにHello World!!

はじめに

WEBアプリ的なのをさっくり作ってみたくなりいろいろ方法調べてたのですが、
サーバ周りのこと全くわからんな...となったので
サーバレスなやつならさっくりいけるんちゃうか!(安直)
と思い、AWSの機能組み合わせればなんかできそう!という感触を得たので
まずはLambda触ってみますという記事です。

本格的なアプリ作りこむ前にいくつか実験したいことがあるの
できたところからちまちま記事にしていけたらと思います。

AWS Lambdaとは

公式の概要はこちら

私のざっくりとしたイメージは、
AWS他サービスでのイベントなどをトリガとしてなんらかの処理を行うものを
特に実行環境用意することなく用意できちゃう!というものです。
またサポートしている言語としてJava、Go、PowerShell、Node.js、C#、Python、Ruby があり
お好きな言語で書けちゃうというのもありがたポイントな気がします。
公式によると「関数の作成にその他のプログラミング言語を使用できるようにするための Runtime API を提供しています」
とのことで上記以外の言語も使える仕組みがあるようです。(参考:LambdaのFAQ

HelloWorldやってみる

HelloWorldのやり方は公式が親切に解説してくださっているので則ってやってみます。
「Hello, World!」をサーバーレスで実行する

ただ公式で表示されてる画面と実際やってみたのが
ちょっとずつ違ってたりしたので(たぶん日本語表示にしてるから)
実際の画面と照らし合わせながらやっていってみます。

①Lambda コンソールを起動する

チュートリアルの「ここをクリック」のところ開くと下のような画面が出てくるので
左上「サービス」をクリック
HW_lambda1.png

そうすると以下のような画面が出てくるので、
「コンピューティング」をクリック→右側に出てきた「Lambda」をクリック
HW_lambda2.png

コンソール画面が表示されます
HW_lambda3.png

②Lambda の設計図を選択する

「関数の作成」をクリック
HW_lambda4.png

「設計図の使用」をクリックし
出てきた下の「ブループリント」の検索ボックスに「hello-world-python」と入力
HW_lambda5.png

出てきた「hello-world-python」が選択されていることを確認して
右下「設定」をクリック
HW_lambda6.png

③Lambda 関数を設定して作成する

基本的な情報の画面で
「関数名」に「hello-world-python」を入力
「実行ロール」で「AWSポリシーテンプレートから新しいロールを作成」を選択
「ロール名」に「lambda_basic_execution」を入力
HW_lambda7.png

一番下までスクロールして「関数の作成」をクリック
HW_lambda8.png

できた!
HW_lambda9.png

公式チュートリアルの「c. [Runtime]」、「d. [Handler]」については
一番下までスクロールして以下に書いてある
HW_lambda10.png
チュートリアルには「このチュートリアルでは、これをランタイムと同様、Python 2.7 に残します。」
と書いてあるけど表示された通りで特にいじる必要はないと思われるので
編集せずにpython3.7のままにしておく

「e. 下方にスクロールしてメモリ、タイムアウト、VPC 設定を設定します。」については
一番上までスクロールして戻って「設定」をクリックして、
HW_lambda11.png

下のような画面が開いたら
「メモリ」「タイムアウト」に関しては右上の「編集」をクリックして
HW_lambda12.png

このの画面からいじれる。
チュートリアルではデフォのままでいいそうなのでそのままにしておく。
HW_lambda13.png

「VPC」については左側のリストからVPCを選択すると以下のような画面に。
チュートリアルの画面を見てみると「No VPC」となっているので
「設定がありません」のままで良さそう
HW_lambda14.png

④Lambda 関数を呼び出して結果を検証する

「テスト」をクリックする
HW_lambda15.png

下のような画面が開くので、
「イベント名」に「HelloWorldEvent」と入力
「テンプレート-オプション」に「Hello World」と打ち込んで出てきた項目を選択すると
画像のような「hello-world」の表示になる
「イベントJSON」の"value1"を"hello,world!"に書き換える
以上できたら、右上の「テスト」を押してみる(保存→テストでもよいと思う)
HW_lambda16.png

多分成功する。成功すると以下のような表示が出てきて
HW_lambda18.png
詳細を開くと実行結果やログが見られる。
HW_lambda17.png

⑤メトリクスをモニタリングする

「テスト」のボタンを何回かポチポチしてみた後に、
「モニタリング」のタブを開くと実行にかかった時間やらエラーの有無などをモニタリングできるページが開く
HW_lambda19.png

Hello Worldではなにもエラーは起こらないと思うけど、
ちゃんとした関数作っていくときにはモニタリング機能も必要そう。

⑥Lambda 関数を削除する

一番上までスクロールして、
右上「アクション」のプルダウンから「関数の削除」を選択
HW_lambda20.png

以下のようなポップアップが出てくるので
「削除」をクリック
HW_lambda21.png

削除完了!関数のところにも何も表示されなくなる
HW_lambda22.png

おまけ:ロールの削除

③で作成したロールは関数を削除しただけでは消えないです。
1回関数消したあとにもう1回おんなじ手順をなぞろうとすると③で「関数の作成」を押した後に以下のようなエラーが出ます
HW_lambda23.png

この名前のロールはすでにあるで!ってことですね。
ロール削除するには「IAM」からロールの削除を行うことになるみたいです。

上のサービス検索できるボックスに「IAM」と入力して
検索結果「IAM」の主な機能の中から「ロール」を選択
HW_lambda24.png

開いたロールの画面で消したいロール名を検索(今回はlambda_basic_execution)
出てきた目的のロールにチェックを入れて
右上の「削除」をクリック
HW_lambda25.png

以下のようなポップアップが出てくるので、
下のテキストボックスに削除したいロール名を入力したうえで「削除」をクリック
HW_lambda26.png

削除できた!
HW_lambda27.png

おわりに

公式チュートリアルとちょこちょこ画面が異なってるところがあったので
丁寧めにHelloWorldしてみました。
次は先人のやってみた!を参考に他サービスと連携させて動かすというのをやってみたいです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?