AWS Lambdaで遊ぼう #1 Lambda関数作成
もくじ
はじめに
こんにちは ベンジャミンの中村です!
AWS Lambdaの作成方法を紹介したいと思います。
Lambdaとは
サーバレスにプログラムを実行するためのもの つまりサーバー(EC2など)を構築しなくてもプログラムを実行できるサービスとなります
サーバレスとは言ったものの、「サーバーが無い」訳ではなく「サーバーを意識しなくて良い」という意味です。Lambdaを実行すると、動かしている間だけAWSさんが裏でサーバーを立ち上げて、その中でプログラムを実行してくれます。
EC2はサーバーが起動している間はずっとお金がかかりますが、Lambdaはプログラムを実行している間のみの課金なので、かなりコスパが良くなるかと思います!
↓↓AWS公式によるLambdaの解説↓↓
メリット
- サーバー構築が不要なため、スピーディに開発できる
- 処理されている間のみ課金されるため、コストパフォーマンスが見込める
デメリット
- 1つの処理時間の上限が15分 (15分以上必要な処理はLambdaでなくサーバーを立てる必要がある)
- 処理の同時実行数は1,000まで
ベンジャミンのサーバレス開発サービス
ベンジャミンではAWS Lambdaを使ったサーバーレス開発サービスを提供しております。詳細は以下をご確認ください
前提条件
- AWSアカウント作成ずみである事
Lambda作成
AWSコンソール画面の検索窓に「lambda」と入力し、Lambdaを選択する
左メニューの「関数」をクリック、「関数の作成」を実施する
「一から作成」を選択
lambda関数名を決めて入力します。ここはお好みで♡
ランタイム(どの言語で書くか)を選択します。ここもお好きな言語でOKです。
ザックリですが以下の言語が選べるようですね
ランタイム |
---|
JAVA |
Python |
Node.js |
Ruby |
Go |
.Net |
筆者はPythonにしました
アーキテクチャは、こだわりがなければ特に変更不要です。最近Lambdaでも使えるようになった「arm64」ですが、これはMacPCで言うところの「M1」と同じCPUプロセッサなのだそうです。気になる方は試してみるのもアリかも!
ここではLambda以外のAWSリソースを操作する為に必要な権限与える為にIAMロールを付与します。
自分で事前に作ったロールを使いたい場合は「既存のロールを使用する」を選択しても良いです
今回はめんどいので「基本的なLambdaアクセス権限で新しいロールを作成」にしましょうw
これでLambda作成時についでにロールも勝手に作成してくれます。
一番下の「関数の作成」をクリックする
Lambda関数が作成されました(^^)v このLambdaを使って色々遊んでみましょう
Lambda操作
さて、作ったLambdaで色々いじって遊んでみましょう
Lambdaプログラム変更
作成したLambda関数の画面から「コード」タブを開きます。
ここのエディタでどんどんプログラムを書いていきます
基本的にはメインの処理を def lambda_handler(event, context): の中に書いくことになります。
試しに print で適当な文字をコンソールに出力してみましょう
import json
def lambda_handler(event, context):
print('Hey man! I created Lambda function for the first time!!')
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
書けたら「デプロイ」をクリックします。
「Changes Deployed」と表示されれば、デプロイ成功です
動作確認
修正したLambdaを実際に動かしてみます。
「テスト」タブを開いて、「テスト」をクリックします。
はい、成功しました!( ´∀`)
失敗する時は、こんな感じ(´Д` )
さっき print に書いたものが出力されているか見てみましょう
「モニタリング」タブを開き、「CloudWatchのログを表示」をクリックします。
CloudWatch画面のLambda実行ログが保存されている場所に遷移します。
「ログストリーム」タグの中に、Lambdaが実行されたタイミング毎に区切られたフォルダが表示されます。直近のフォルダを開いてみます
先ほど print した文字列が出ていますね!
Lambdaを使って開発する時は、書いて、実行して、CloudWatch画面でログを確認する
の、繰り返しになるかと思います
Lambdaで何ができるのか
今回作成したLambda関数を使って出来ることを随時記事にして、ここにリンクを貼っていこうと考えております。
例えば↓↓
- EventBridgeでLambdaを定期実行する
- LambdaとS3のデータのやり取り
- LambdaからSNSでメール送信
さいごに
Lambdaは、他のAWSサービスと組み合わせて色んな事ができます。
この記事ではLambdaの「箱だけ作った」感じですが、この箱を使って出来ることを随時記事にしていこうと考えております お楽しみに!!