AWS Lambdaで遊ぼう #1 Lambda関数作成
はじめに
こんにちは 中村です!
AWS Lambdaの作成方法を紹介したいと思います。
Lambdaとは
サーバレスにプログラムを実行するためのもの つまりサーバー(EC2など)を構築しなくてもプログラムを実行できるサービスとなります
サーバレスとは言ったものの、「サーバーが無い」訳ではなく「サーバーを意識しなくて良い」という意味です。Lambdaを実行すると、動かしている間だけAWSさんが裏でサーバーを立ち上げて、その中でプログラムを実行してくれます。
EC2はサーバーが起動している間はずっとお金がかかりますが、Lambdaはプログラムを実行している間のみの課金なので、かなりコスパが良くなるかと思います!
↓↓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の「箱だけ作った」感じですが、この箱を使って出来ることを随時記事にしていこうと考えております お楽しみに!!
Discussion