プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • 【AWS】「Lambda」、関数の定義
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】「Lambda」、関数の定義

11.10

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Lambdaとは?

サーバのプロビジョニングや管理なしでコードを実行できる技術(サーバレス)です。課金は実際に使用したコンピューティングの時間に対してのみに発生し、コードが実行されていない時間は料金が発生しない。また、プラットフォームの仕様も公開されていないので脆弱性をついた攻撃をしづらくなっている。

まずは、Lambdaで実現できるか検討して難しい場合は、ECS、EKS、それでもダメな場合はEC2を検討する形になるでしょう。

サーバレスとは?

プログラムを実行するためのサーバが必要ないということです。Lambdaはプログラムを実行する環境を提供してくれます。簡単にいえば、EC2も、その上にのるWebサーバもアプリケーションを実行するアプリケーションサーバも不要になるのです。

仕組み

Firecrackerというコンテナ上で実行され、軽量のマイクロ仮想マシン(microVM)を起動します。つまり、Lambdaもコンテナと似た技術を利用しているのです。

Lambdaのデメリット

「セッション状態」や「クラスのインスタンス変数」などを保持しない。

実行が終わったら環境が破棄されステートレスな実行環境になります。そのため前回の状態は保持できません。(例えば、Railsであればリクエストを跨いで「セッション」や「クラスのインスタンス変数」の値などは保持されます。)

ただ、Railsなどの開発でも「クラスのインスタンス変数」はスレッドセーフな観点で使うケースはあまりないですし、セッション情報の保持ができない程度なので、少なくとも普通のWebアプリケーションではデメリットと言える内容ではないでしょう。

最大稼働時間がある。

設定できる最大稼働時間は5分です。なので、例えばバッチ処理などの大量に時間がかかる処理などはLambdaで実行することはできません。

Fargateとの違い

Lambdaはコンテナ技術を意識せずに開発者がコードに意識を集中できる。

Labmdaで意識すること

Lambdaを利用した場合、以下のことのみ意識すれば良いだけになります。

  • コード
  • 割り当てるメモリ
  • 実行可能なIAM権限

対応言語

  • Java
  • Node.js
  • C#
  • Pyathon

トリガー

何らかのイベントが発生したら、設定した処理を実行できる環境

対応しているイベントのAWSサービス

  • S3のファイルアップロード
  • DynamoDB
  • Kinesisストリームデータのリアルタイム処理
  • API Gatewayと組み合わせることでHTMLフォームやAjaxからのAPIリクエストも待ち受けることができます。

具体的な用途

  • S3に画像がアップロードされたらリサイズしたサムネイル画像を生成する。
  • ログ等のストリーミングデータを分析する。
  • IoTセンサーからデータを受け取りDBに登録する。
  • APIリクエストによるバックエンド処理
  • バックアップ処理
  • アクセス数の増減が激しいWebアプリケーション
  • ツイッターボットのような四六時中動いている必要がないアプリには最適

上記のような用途があるので、Lambdaを使えばいちいち監視サーバや分析サーバを別途作成する必要がなくなります。

料金

毎月100万リクエストまで無料(無料利用枠)

ログ

コードのエラーやデバッグ情報、Lambdaで受け取ったイベント内容などは全てCloudWatchで閲覧できる。

Lambdaの非同期呼び出し

いくつかのサービス(S3、SNS)では非同期に呼び出すことが可能です。

設定

成功、失敗時の送信先

  • Amazon SQS
  • Amazon SNS
  • 別のLambda
  • Amazon EventBriage

Lambda側の関数の定義

関数名

関数名を定義する。

ランタイム設定

ランタイム

関数を記述する言語を指定します。

ハンドラ

lamdaがどの関数を呼ぶかという設定になります。下記のような形で指定します。

1
ファイル名_関数名

アクセス権限

lambdaが必要な権限を指定する。

実行ロールの選択または作成

実行ロール

「基本的なLambdaアクセス権限で新しいロールを作成」を選ぶとCloudWatchにログが出力されるようになります。

スポンサーリンク
  • 2020 11.10
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.05

    【AWS】EC2インスタンスタイプの選び方

  2. 2019 11.24

    【AWS】AWSの全体像、無料枠

  3. 2021 11.20

    【AWS】「ElasticCache」、「DynamoDB」、「RDS」、その他サービスの違い

  4. 2021 12.02

    【AWS】「Code Commit」、「Code Build」、「Code Deploy」、「Code Pipeline」の違い

  5. 2021 01.10

    【AWS】VPCの「Route53 Resolver」について

  6. 2020 12.31

    【AWS】「EKS」、「eksctl」

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【AWS】「SQS(Simple Queue Serv…

【AWS】「API Gateway」でREST API…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー