villagebaseハンズオン

ハンズオン · AWS Lambda

Lambda で「ハロー」を返す関数を作る

AWS Lambda は、コードを置いておくと、呼ばれたときだけ動かしてくれるサービスです。サーバーを用意する必要はありません。関数を1つ作って、「ハロー」と返すところまでやってみます。

時間15分くらい リージョン東京 使うものブラウザだけ 料金無料枠の範囲

01作るもの

Lambda では、動かすコードとその設定のまとまりを「関数」と呼びます。関数は、何かに呼ばれたときだけ動きます。呼ぶときには「イベント」というデータ({"name": "villagebase"} のような JSON)を渡せて、動くたびに「ログ」が残ります。

実際には、S3 にファイルが置かれたときや、Web からアクセスがあったときに呼ばれます。今回は、Lambda の画面にある「Test」ボタンで呼びます。

あなた「Test」ボタンを押す① 名前を渡す{"name": "villagebase"}② ハローが返る{"message":"ハロー、villagebase!"}AWS東京リージョンmy-helloLambda 関数(index.mjs の handler)③ ログを書く/aws/lambda/my-helloCloudWatch Logs のロググループmy-hello-role-…IAM の実行ロール(③ の許可)
図1「Test」ボタンで ① 名前を渡すと、② 「ハロー、〇〇!」が返ってきます。呼ばれるたびに ③ ログが残ります。
料金

Lambda は毎月 100万回まで無料で呼べます。この記事で呼ぶのは数回なので、料金はかかりません。

02手順

my-hello のように枠で囲んだ文字は、押すとコピーできます。画像は、押すと元の大きさで見られます。

手順1関数を作る

画像の黄色の番号は、下の操作の番号と対応しています。

マネジメントコンソールの右上。リージョンに「アジアパシフィック (東京)」と表示されている
  1. 右上のリージョンが「アジアパシフィック (東京)」になっているか見る
  2. 上の検索欄に と入れて、出てきた「Lambda」を開く
Lambda の Event Functions の一覧。左のメニューに Event Functions とウェブ関数、右上にオレンジ色の Create Event Function のボタンがある
  1. 左のメニューの「Event Functions」を開く2026年10月から、これまでの Lambda の関数はこの名前になりました。下の「ウェブ関数」は別のものです。
  2. 右上のオレンジの「Create Event Function」を押す日本語の画面でも、このボタンは英語のままです。
Create Event Function の画面。一から作成が選ばれ、関数名に my-hello、ランタイムに Node.js 24.x が入っている。その下のアクセス許可に、ログを書く実行ロールを作ると書かれている
入力し終わったところです。
  1. 確かめる「一から作成」が選ばれている
  2. 入力「関数名」に
  3. 確かめる「ランタイム」が「Node.js 24.x」になっている
  4. 確かめる「アクセス許可」に、実行ロールを作ると書いてあるログを書くための権限です。関数と一緒に自動でできるので、最後の片付けで消します。
  5. クリックほかはそのままで、右下の「Create Event Function」
こうなれば成功

my-hello の画面に切り替わり、上に「関数 "my-hello" が正常に作成されました。」と出ます。下のエディタには index.mjs が開いています。

「Getting started」という英語の案内が出てきたら、右下の「Dismiss」で閉じてかまいません。

手順2コードを書き換える

index.mjs
export const handler = async (event) => {
  // 渡された名前を取り出す(なければ "Lambda")
  const name = event.name ?? "Lambda";
  // ログに1行書く
  console.log(`name: ${name}`);
  // 「ハロー、〇〇!」を返す
  return { message: `ハロー、${name}!` };
};

最初と最後の行は Lambda の決まった書き方で、この関数がしているのは間の3行です。

エディタ。左に DEPLOY(横に Current)と青い Deploy と Test のボタン、その下に TEST EVENTS と Create new test event。右に貼り付けたコード
Deploy したあとの画面です。
  1. エディタの index.mjs の中身を全部消して、上のコードを貼り付ける7行目の「!」に黄色い枠が付きますが、全角文字に付く目印なので気にしなくて大丈夫です。
  2. クリック左の「DEPLOY」の下にある青い「Deploy」
  3. 確かめる「DEPLOY」の横が「Current」に変わった
Deploy を忘れない

貼り付けただけでは、まだ反映されていません。「DEPLOY」の横が「Undeployed」のあいだは、前のコードのまま動きます。

手順3テストする

  1. 左の「TEST EVENTS」の下の「Create new test event」を押す右側に「Test event」の画面が開きます。ここも英語のままです。
Test event の画面。右上に Save と Test のボタン。Event name に hello-test、Event sharing settings は Private、下の Event JSON に name が villagebase の JSON が入っている
入力し終わったところです。
  1. 入力「Event name」に
  2. 確かめる「Event sharing settings」が「Private」になっているほかの欄はそのままで大丈夫です。
  3. 入力下のほうの「Event JSON」の中身を全部消して、次の JSON を貼り付ける
Event JSON
{
  "name": "villagebase"
}
  1. クリック上の「Save」「Test event is saved successfully.」と出れば保存できています。
  2. クリックその隣のオレンジの「Test」
こうなれば成功

下の「OUTPUT」に「Status: Succeeded」と出て、Response に「ハロー、villagebase!」が返ってきます。

OUTPUT。Status: Succeeded、Test Event Name: hello-test、Response に message がハロー、villagebase!

Event JSON の villagebase を自分の名前に変えて、もう一度「Test」を押すと、返ってくる名前も変わります。渡した JSON が、そのままコードの event に入っているからです。

手順4ログを見る

「OUTPUT」の中を下へスクロールすると、「Function Logs」が出ています。

Function Logs
2026-10-22T11:10:32.981Z	be8f5164-…	INFO	name: villagebase
START RequestId: be8f5164-… Version: $LATEST
END RequestId: be8f5164-…
REPORT RequestId: be8f5164-…	Duration: 21.48 ms	Billed Duration: 22 ms	Memory Size: 128 MB	Max Memory Used: 80 MB

同じログは、CloudWatch の「ログ管理」にある /aws/lambda/my-hello にも残っています。

03片付け

関数を作ったとき、次の3つも自動でできています。関数を消してもこの3つは残るので、それぞれ消します。

自動でできたもの役割
ロググループ /aws/lambda/my-helloログの置き場所
実行ロール my-hello-role-…関数にログを書く権限を渡すもの
ポリシー AWSLambdaBasicExecutionRole-…その権限の中身(ロールに付いている)
ロールが PowerUserRole なら消さない

アカウントによっては、関数ごとのロールではなく、共通の PowerUserRole が付いています(IAM のロールマネージャーが有効な場合)。ほかの関数でも使われるので、このときはロールもポリシーも残しておいてください。

参考

↑