Skip to content
Twitter
edu-IT Practical Labo
【名古屋】
edu-IT Practical Laboedu-IT Practical Labo
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact
 
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact

はじめてのLambda~関数のサンプルを作ってみよう

You are here:
  1. Home
  2. AWS
  3. はじめての…
9月182024
AWSPython

近年、AWSでシステム構築する際、サーバー環境を自分で用意する必要がない「サーバーレス」で構成する設計が増えてきています。AWSでのサーバーレスアーキテクチャのLambdaは、実行環境としての仮想サーバーを必要とせず、サーバーシステムの保守・運用をする必要がありません。

普段、AWSのインフラ作業をしている方であれば、ネットワークや、サーバー、ストレージなどのサービスの知識をお持ちだと思いますが、実際に興味はあるけれど、AWSのシステムに触れる機会があまりないという方は、初期コストの少ないLambdaでシステムを組むというアプローチから始めてみるのも良いと思います。

Lambdaとは、「あらかじめ関数を登録しておくと、それを実行できる仕組み」のことで、実行したいプログラムを関数として実装してLambdaにアップロードしておくだけで、実行の段となるとそれらの実行環境(ランタイム環境)が自動的に作られ、実行してくれます。

「JavaScript(Node.js)」「Java」「C#」「Python」「Go」「Ruby」「PowerShell」等のプログラムで記述できます。

 

Contents

  • 1 Lambdaとは?
  • 2 ログをしっかりと残すようにする~CloudWatch Logsの利用
  • 3 シンプルなLambda関数の作成
    • 3.1 Lambda関数の書式
  • 4 Lambda関数の作成・登録
  • 5 Lambda関数のテスト

Lambdaとは?

 

「あらかじめ関数を登録することで実行してくれる仕組み」という流れを実際に、AWSマネジメントコンソールからLambda関数のサンプルを組んでみることで理解していきましょう。

・書式に従ったLambda関数の書き方
・Lambdaの利用に必要なアクセス権
・Lambda関数の実行

というポイントを押さえて、ハンズオンを進めていければと思います。

 
Lambda関数を作ったり実行したりする操作には、適切なアクセス権があります。
開発者のIAMユーザーと、Lambda関数を実行するときに使うIAMロールを、あらかじめ作成しておきましょう。(ポリシーとして、AdministratorAccess, AWSLambda_FullAccess が必要となります)

また、Lambda関数は、イベント駆動型であり、AWSサービスと連携して実行することができるという特徴があります。

 

実行のトリガーを「イベントソース」と呼び、
DBのデータに対して操作した時や、メールを受信した時、ファイルがアップロードされた時など、イベントに応じた処理を実現することができます。

 
 AWSサービスと連携して実行することができるLambdaですが、API Gatewayと組み合わせると、Lambda関数をREST形式のWeb APIとして呼び出すことができるようになります。

 たとえば、HTMLの入力フォームでPOSTしたり、JavaScriptのAjaxで通信したりした結果をLambda関数で処理して、データベースに保存するという処理も記述できます。



 

ログをしっかりと残すようにする~CloudWatch Logsの利用

Lambda関数は、実行した時の状態がステートレスな実行環境であるがゆえに残りません。
その為、不具合が生じたときの原因を突き止めるために、Lambda関数の処理で何かエラーが発生したら、CloudWatch Logsなどに処理内容や状態を書き出すなどして、決まった文字列を書き出すよう実装しておくことを心がけましょう。

cf ) Cloud Watch Logs


 

シンプルなLambda関数の作成

それでは、以下のような「割り算をするLambda関数」をPythonで作っていくことにしましょう。 

 

Lambda関数の書式

 Lambda関数は「ハンドラ」とも呼ばれます。
関数名として「機能名_handler」と名称を付けることもあります。

実際に割り算の結果を返すLambda関数の中身をみていきましょう。


 

int関数を使って、関数に渡されるJSON形式の入力データ項目のxとyをそれぞれ文字列から整数に変換していきます。その値をprint関数を使って、標準出力へと書き出します。
(後で実際に動作確認をしますが、この出力は、CloudWatch Logsに、そのまま出力されます)

print(“x=” +str(x))
print(“y=” +str(y))

 最後は、戻り値を設定します。
ここでは、json.dumpsメソッドを使って、除算の結果をJSON文字列に変換したものを返します。

retval = {“result”: x/y}
return json.dumps(retval)

 

Lambda関数の作成・登録

 まず、AWSマネジメントコンソールで「Lambda」を検索し、Lambdaコンソールを開いて、
[ 関数の作成 ] を選択してください。

コードソースを以下のように書き換えて「Deploy」します。

 

Lambda関数のテスト

Lambdaコンソールにおいて、「テストイベント」というテスト用のイベントを定義することで、Lambda関数を手動で実行できます。

「テスト」タブを押下すると、テストイベントを定義する画面が開きます。

操作手順:テストイベントを登録

[1] 新しいイベントを選択する
[2] 名前を入力する
[3] Lambda関数に渡す引数を設定する
[4] 変更を保存する

 
ここでは、名前を「MyTestEvent」とし、イベントJSONの入力値を書き換えます。

「テスト」ボタンを押下して、テストを実行します。

ログと書かれているリンクをクリックすると、該当のCloudWatch Logsが開かれます。


 
ログの行をクリックすると、[詳細] を表示できます。[詳細] には、CloudWatchのログが表示されます。


 
ログが出力されていることを確認できると思います。

今回は正常終了となっていますが、エラーが発生した場合には、errorMessage, errorType, requestId, stackTraceの4つを含むJSONが返されます。

これで、Lamda関数のサンプルを実行してログの中身を確認することができました。


今回の内容はいかがだったでしょうか。AWSサービスについて、実際に手を動かして動作確認できると面白いなと感じて頂けた方もいらっしゃるかもしれません。自分にできる範囲のものから少しずつAWSサービスの機能にも目を向けてみようかなと思っていただければ幸いです。

以上となります。

 

参考:
・大澤文孝「AWS Lambda実践ガイド 第2版」株式会社インプレス(2022年)

Category: AWS, PythonBy semi3del2024年9月18日Leave a comment
Share this post
Share with Google+Share with FacebookShare with Twitter

Author: semi3del

Post navigation

PreviousPrevious post:CodeSandboxでReactのフォーム部品を操作してみようNextNext post:Canva入門~テンプレートでプレゼン資料を作成してみよう

Related Posts

Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
2025年1月27日
[AWS基礎]ファイルをS3バケットに保存しよう
2024年6月24日
AWSでネットワークを設定してみる~VPC/サブネット/ルートテーブル/SG/IGW
2024年4月7日
Web APIをPythonで使ってみる~Fast APIの基礎
2023年9月25日
Beautiful Soupでスクレイピング~Yahooニュースの見出しとURLの内容を取得してみよう
2022年9月7日
PySimpleGUIでGUIツール作成~Plotlyで月間支出グラフを出力してみよう
2022年8月3日

コメントを残す コメントをキャンセル

Your email address will not be published. Required fields are marked *

Post comment

最近の投稿
  • はじめてのPower Automate for Desktop~フローデザイナーでの基本操作を確認してみよう
  • CodeSandboxでReactのTodoリストを作成してみよう
  • Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
  • CodeSandboxでReactのフォーム部品を操作してみよう
  • はじめてのLambda~関数のサンプルを作ってみよう
アーカイブ
  • 2025年6月
  • 2025年3月
  • 2025年1月
  • 2024年11月
  • 2024年9月
  • 2024年8月
  • 2024年6月
  • 2024年4月
  • 2024年1月
  • 2023年11月
  • 2023年9月
  • 2023年7月
  • 2023年5月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年6月
  • 2022年5月
  • 2022年3月
  • 2022年1月
  • 2021年11月
  • 2021年9月
  • 2021年7月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年1月
  • 2020年11月
  • 2020年9月
  • 2020年6月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2017年7月