1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初心者がAWS lambdaを使ってみたお話

Last updated at Posted at 2022-11-19

初心者がAWS lambdaを使ってみた感想。

AWS lambdaとは

Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを関数として実行できるサービスです。
関数とは・・・中学校の数学の関数、y=f(x)を想像してください。(懐かしい)
Screenshot_20221119_161402.png
左からxが来てます。真ん中の四角が関数のf(x)。で、右側にyが出力されています。
つまり、xが何らかのブラックボックスf(x)を通るとyに変換されて出てくるわけですね。この四角のf(x)の部分がlambdaです。
左のxはトリガー、右のyは送信先になります。

サーバレスって言ったって・・・

lambdaはサーバーレスであるのが特徴で、EC2とかにデプロイする必要がありません。ですが、実際にはそれを意識させないだけで、どこかの仮想環境に関数が乗っかって動作しています。
わざわざEC2にデプロイするほどでもない、小さな処理(関数)を組み合わせて使うのがこのlambdaの使い方です。大きく複雑な処理だとEC2にデプロイしたほうがいいと思います。AWSのサービスの橋渡し、Aサービス → Bサービスの中間に使うような使い方です。

lambdaの餡子の部分

lambdaというまんじゅうの餡子の部分(処理するコード)をどうやって書くかですが、これだけ選択肢があります。
Screenshot_20221119_162851.png
ここで注意しないといけないのは「ランタイム」のしたの注意書き書かれていることです。
この中でコンパイルが必要な言語(Java、.Net等)はlambdaのコードエディタではサポートされません。つまり、自分で別に、Eclise、VisualStudio等でコードを書いて、コンパイル/ビルドして、それをアップロードする必要があるので、AWS Consoleの中で完結しません。
それでは、折角のlambdaの小回りの効く機動力が活かせませんので、おそらくAWSとしては、Node.js、Python、Rubyあたりを推奨しているのではと思います。
ちなみに、Javaでまんじゅうの餡子を作ろうとするとこれだけの手順が必要になります。
AWS Lambda + Java で Hello World

とりあえず、Pythonで関数を作ってみる

とりあえず、Pythonで関数を作ってみるとこのような感じになります。
Screenshot_20221119_164352.png
図の上側の「MyFunction」がまんじゅうの餡子の部分です。そのコードがその下に出ています。
上の図の左側「トリガー」が最初に書いたy=f(x)の関数の図の左側、xに相当します。
右側の「送信先」が関数の結果、y=f(x)のyに相当します。

トリガーには何がある?

トリガーはAWSのサービスが選択できます。
Screenshot_20221119_164838.png
AWS EventBridgeも選択できます。
AWS EventBridgeとは、SaaSから発生するイベントを使用して、さらに様々なAWSサービスとつなげるまさしくBridge(架け橋)のようなサービスです。なのでlambdaでやろうとしていることのある程度の定型的パターンが用意されているようなものだと思います。

送信先には何がある?

送信先には大きく分けて2種類あります。
Screenshot_20221119_165609.png

  • 非同期呼び出し
    非同期呼び出しはqueueか次のlambdaを指定できます。
    1. SNSトピック(メールを送信する場合)
    2. SQSキュー(Queueに入れて処理する場合)
    3. lambda(次のlambdaに数珠つなぎ)
    4. EventBridgeイベントバス(上記を参照)
  • ストリーム呼び出し
    ストリームは非連続できたものを蓄積する系なのでDBになります
    1. Kinesis
    2. DynamoDB

最後にlambdaに思うこと、lambdaの使いみちは?

以上のことを考慮するとlambdaのコードの部分はあまり複雑な処理は向いていません。AWS ConsoleのlambdaのコードエディタもEclipseのようなコード補完機能はありますが、あまり期待はできません。本当にサービスからサービスへの橋渡しに使うものだと思います。
あるいは、アンケートの投票、いいねしたクリックをDBに蓄積するとか、そういう使い方なのかなと思います。

lambdaのコンセプト、メリットはわかりましたが、関数が数個〜10個くらいであればどの関数がどのようにつながっているか把握はできますが、これが数百となるとどうやって管理するんだろう?
関数にフォルダやネームスペース的なものはないし、関数名だけで区別しろってことなんだろうか?VPCに紐付けることはできるけど、それだけじゃ不足じゃないだろうか?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?