見出し画像

AWSソリューションアーキテクト取得に向けて~Lambda~

AWS ソリューションアーキテクト アソシエイト取得に向けて学習した内容を備忘的に記載します。

今回はLambda

Lambdaとは

インフラを気にすることなく、アプリケーションコードを実行できるデータ処理サービス。
クライアントからのアクセスに対してデータを登録する単純な処理をEC2インスタンスで実行している場合、Lambdaに置き換えてサーバレスに実行処理することが可能。
AWSでマイクロサービスアーキテクチャを構築するにあたり、SQSと並んで利用を推奨されるサービス

Lambdaの特徴

EC2インスタンスの代わりにコードを実行することで効率的なアーキテクチャを実現
■実行基盤はAWSが管理
■AWSサービスと連携させ、イベントドリブンなアプリケーションを実装可能
■Node.js/Javaで書かれたコードを実行
■100ミリ秒単位でコード実行時間に対して課金。コスト効率が非常に高い。
■オートスケール

Lambdaの仕組み

Lambdaファンクションを用意⇒アプリからLambdaを呼び出す
⇒イベント発生後(数ミリ秒以内)Lambdaコードが実行
■画像のアップロードをトリガーとして
■アプリケーション内の実行処理をトリガーとして
■ウェブサイトのクリックをトリガーとして
■接続デバイスからの出力をトリガーとして

Lambdaの起動

LambdaはPushモデルとPullモデルがある

Pushモデル
S3/Cognito/SNSなどのAWSサービスとカスタムイベントが直接実行することにより起動
■サービス or アプリが直接実行
■順不同
■3回までリトライ
Pullモデル
DynamoDBとKinesisなどのデータ処理はLambdaに対して直接的にいベンド発行を行わないためポーリングを行い自らイベントを取得
■ストリームに入ってきた順に処理
■イベントソースとして登録したストリームに対してLambdaが自動的にデータ取得などのファンクションを実行
■イベントごとに複数レコードを取得可能
■データが期限切れになるまでリトライ

Lambdaのパーミッション

Execution
■LambdaファンクションがAWSリソースにどういったアクションを実施させるかを決定
■指定されたIAMロールにそってAWSのリソースへのアクセスが許可される
Invocation
■Lambdaファンクションをどのリソースが実行できるかを決定

Lambdaの設定

1.コードをアップロード
 -直接エディタ記述/S3インポート/Zip形式でアップロード
2.関数を設定
 -スケジュール関数は実行頻度を指定
 -イベント駆動型関数はイベントソースを指定
3.必要なメモリ容量を指定
4.タイムアウト時間を指定
5.VPCアクセス用にVPCを指定
6.関数を起動

ブループリント

サンプリコード集からコードを修正しファンクションを作成可能

バージョニング

バージョンの発行方法
■Lambdaファンクションの作成や更新時にpublishパラメータによりバージョンが発行
■Publish Versionにより明示的にバージョンを発行
バージョンの特徴
■一度発行すると変更不可
■単純にバージョン番号が増加
■エイリアスを設定して特定時点にマークすることが可能
■エイリアスを指定することでバージョン番号を把握していなくても指定バージョンを呼び出せる

VPCアクセス

VPC内のリソースへのアクセス
■AWSの全てのVPC内リソースなどへインターネット経由せずにアクセス可能
■Elastic Network Interface(ENI)を利用して実現。
   ENIはIPアドレスがDHCPで割り当てられる
アクセス制御
■VPC内リソースにアクセスさせたいLambdaファンクションに対してVPCサブネットおよびセキュリティグループを指定
■ファンクションに割り当てるIAM RoleにAWSLambdaVPCAccessExecutionRoleというポリシーをアタッチしておくこと

Lambda Layer

Lambdaファンクション間で共通するコンポーネントをLambda Layerとして定義し5つまで参照可能

ロードバランサー機能

ALBのバックエンドにLambdaを呼び出せるようになり、WebアプリにLambdaファンクションを組み込みやすくなった。


この記事が気に入ったらサポートをしてみませんか?