AWSラムダとは何ですか? Lambda 関数と例

AWS Lambda 関数の前に、次のことを理解しましょう。

サーバーレスとは​​何ですか?

サーバーレスとは​​、一般にサーバーレス アプリケーションを指す用語です。 サーバーレス アプリケーションは、サーバーの準備やサーバーの管理を必要としないアプリケーションです。

AWS Lambdaとは何ですか?

AWSラムダ によって提供されるイベント駆動型のサーバーレス コンピューティング プラットフォームです。 Amazon の一環として、 Amazon ウェブサービス。したがって、どの AWS リソースを起動するか、どのように管理するかについて心配する必要はありません。代わりに、コードを Lambda に配置するだけで実行されます。

AWS Lambda では、S3 バケット内のファイルの追加/削除、SXNUMX バケットからの HTTP リクエストなどの AWS サービスのイベントの応答に基づいてコードが実行されます。 Amazon APIゲートウェイ等 ただし、 Amazon Lambda はバックグラウンド タスクの実行にのみ使用できます。

AWS Lambda 関数を使用すると、オペレーティングシステム (OS) のアクセス制御、OS のパッチ適用、適切なサイズ設定、プロビジョニング、スケーリングなどを管理する代わりに、コア製品とビジネスロジックに集中できるようになります。

AWS Lambda はどのように機能しますか?

次のブロック図付きの AWS Lambda の例では、AWS Lambda の動作をいくつかの簡単な手順で説明しています。

AWS Lambda のブロック図
AWS Lambda のブロック図

ステップ1: まず、AWS Lambda でサポートされている言語で AWS Lambda コードをアップロードします。 Java, Python、Go、C# は、AWS Lambda 関数でサポートされている言語の一部です。

ステップ2: これらは、AWS Lambda をトリガーできるようにするいくつかの AWS サービスです。

ステップ3: AWS Lambda を使用すると、コードと、それをトリガーするイベントの詳細をアップロードできます。

ステップ4: AWS のサービスによってトリガーされたときに AWS Lambda コードを実行します。

ステップ5: AWS は、AWS Lambda コードが実行されたときのみ課金し、それ以外の場合は課金しません。

これは次のシナリオで発生します。

  • S3 バケットにファイルをアップロードする
  • HTTP get/post エンドポイント URL がヒットしたとき
  • Dynamo DBテーブルの追加/変更および削除用
  • データストリーム収集の過程中
  • プッシュ通知
  • ウェブサイトのホスティング
  • メール送信

Note: AWS のサービスに対して料金が発生するのは、AWS Lambda コードが実行された場合のみであり、それ以外の場合は何も支払う必要がないことに注意してください。

AWS Lambda をトリガーするイベント

ここでは、AWS Lambda を使用するときにトリガーされるイベントを示します。

  • データの挿入、更新、削除 Dynamo DB テーブル
  • SNSにプッシュ通知を含めるには
  • CloudTrail でログ履歴を検索するには
  • S3 オブジェクトへのエントリ
  • DynamoDB テーブルにデータが追加、変更、削除されるたびに AWS Lambda をトリガーできます。
  • 定期的な時間パターンでタスクを実行するようにイベントをスケジュールするのに役立ちます。
  • S3 バケット内のオブジェクトの変更
  • から送信された通知 Amazon SNS。
  • AWS Lambda を使用して CloudTrail ログを処理できます
  • API Gateway を使用すると、GET/POST メソッドで AWS Lambda をトリガーできます。

AWSラムダ Concepts

機能:

関数とは、AWS Lambda で実行されるプログラムまたはスクリプトです。 Lambda は呼び出しイベントを関数に渡し、関数はイベントを処理してその応答を返します。

ランタイム:

ランタイムを使用すると、同じ基本実行環境で実行されるさまざまな言語の関数が可能になります。 これは、実行時に関数を構成するのに役立ちます。 選択したものとも一致します プログラミング言語.

イベントソース:

イベントソースは、次のような AWS サービスです。 Amazon SNSとかカスタムサービスとか。このトリガー関数は、ロジックの実行に役立ちます。

ラムダ層:

Lambda レイヤーは、ライブラリ、カスタム ランタイム、その他の重要な関数の依存関係の重要な配布メカニズムです。 この AWS コンポーネントは、開発関数コードを、使用される不変のコードやリソースとは別に管理するのにも役立ちます。

ログストリーム:

ログ ストリームを使用すると、AWS Lambda 関数の実行フローとパフォーマンスの分析に役立つカスタム ログ ステートメントを関数コードに注釈として付けることができます。

AWSラムダの使い方

次に、AWS Lambda の例を使用して AWS Lambda を使用する方法を学びます。

ステップ 1) ステップ 1) AWS Lambda URL を開きます
後藤 https://aws.amazon.com/lambda/ そして始めましょう

AWSラムダの使い方

ステップ 2) アカウントを作成する
次に、アカウントを作成するか、既存のアカウントでサインインします。

ステップ 3) コードを編集して「実行」をクリックします。
次の Lambda ページでは、

  1. コードを編集する
  2. 実行をクリックします。

AWSラムダの使い方

ステップ 4) 出力を確認してください
出力が表示されます

AWSラムダの使い方

AWS Lambda VS AWS EC2

ここでは、AWS Lambda と AWS Lambda の主な違いをいくつか示します。 EC2.

Parameters AWSラムダ AWS EC2
定義 AWS Lambda はサービスとしてのプラットフォーム (PaaS) です。 バックエンド コードを実行するのに役立ちます。 AWS EC2 はサービスとしてのインフラストラクチャ (laaS) です。 仮想化されたコンピューティング リソースを提供します。
柔軟性 コンピューティング インスタンスにログインする柔軟性は提供されません。カスタマイズされたオペレーティング システムまたは言語ランタイムを選択できます。 さまざまなインスタンス、カスタム オペレーティング システム、セキュリティ パッチ、ネットワークなどを柔軟に選択できます。
インストールプロセス コードを実行する環境を選択し、コードを AWS Lambda にプッシュする必要があります。 EC2 では初めて、OS を選択し、必要なソフトウェアをすべてインストールしてから、コードを EC2 にプッシュする必要があります。
環境制限 いくつかの言語に制限されています。 環境制限はありません。

AWS Lambda VS AWS Elastic Beanstalk

ここでは、AWS Lambda と Elastic Beanstalk の主な違いをいくつか示します。

Parameters AWS エラスティック Beanstalk AWSラムダ
主な任務 アプリケーションを実行するインフラストラクチャを気にすることなく、AWS クラウド上でアプリケーションをデプロイおよび管理できます。 AWS Lambda は、バックエンド コードの実行と実行に使用されます。 アプリケーションのデプロイには使用できません。
AWS リソースの選択 これにより、AWS リソースを自由に選択できるようになります。 たとえば、アプリケーションに応じて最適な EC2 インスタンスを選択できます。 EC2 インスタンスのタイプのように AWS リソースを選択することはできません。Lambda はワークロードに基づいてリソースを提供します。
システムの種類 それはステートフルなシステムです。 ステートレスなシステムです。

AWS Lambdaの使用例

AWS Lambda は、次のような幅広いアプリケーションに使用されます。

  • ETLプロセスを支援します
  • リアルタイムのファイル処理とリアルタイムのストリーム処理を実行できます。
  • Webアプリケーションの作成に使用します
  • で使用 Amazon Alexaチャットボットなどの製品や Amazon エコー/アレクサ
  • データ処理 (リアルタイム ストリーミング分析)
  • 日常業務の自動バックアップ
  • スケーラブルなバックエンド (モバイル アプリ、LOT デバイス)
  • サーバー側のバックエンド ロジックの実行に役立ちます
  • データのフィルタリングと変換が可能

Lambda 関数のベストプラクティス

以下にいくつかのベストプラクティスを示します AWS ラムダ関数:

  • 適切な「タイムアウト」を使用してください。
  • /tempフォルダー内の500MBのローカルストレージの機能を利用します。
  • 現在のイベントの処理に直接関係しない起動コードの使用を最小限に抑えます。
  • リクエストのレイテンシを表示および最適化するには、Lambda 関数の組み込み CloudWatch モニタリングを使用する必要があります。

AWS Lambda を使用すべきでない場合

Lambda が理想的な選択肢ではない状況を以下に示します。

  • 基礎となる呼び出しに依存する AWS Lambda ソフトウェア パッケージやアプリケーションを使用することは適切ではありません。 Windows RPC
  • MS-Office 文書処理などのライセンス契約のあるカスタム ソフトウェア アプリケーションに使用される場合、 Oracle データベース等
  • AWS Lambda は、GPU アクセラレーションやハードウェア アフィニティなどのカスタム ハードウェア プロセスには使用しないでください。

AWS Lambda を使用する利点

AWS Lambda を使用する利点と利点は次のとおりです。

  • AWS Lambda は非常に柔軟に使用できるツールです
  • VPC を含むリソースへのアクセスを許可するのに役立ちます。
  • 直接作成する WYSIWYG編集者 コンソールで。
  • のプラグインとして使用できます Eclipse と Visual Studioの.
  • サーバーレス アーキテクチャなので、サーバーの管理やプロビジョニングについて心配する必要はありません。
  • 何も設定する必要はありません 仮想マシン.
  • 開発者がインフラストラクチャを構築せずに、イベントに対するコードの応答を実行できるようにします。
  • コードの実行時にのみ、必要な計算時間に対してのみ必要になります。
  • CloudWatch を通じてコードのパフォーマンスをリアルタイムで監視できます。
  • プロビジョニングを行わずにコードを実行したり、他のサーバーを管理したりすることができます。
  • 必要な場合にのみコードを実行できるようにします
  • 自動的に拡張して、XNUMX 日に数件のリクエストを処理したり、XNUMX 秒あたり数千件を超えるリクエストをサポートしたりすることもできます。
  • AWS Lambda は、スケジュールされたタスクを実行するために外部イベント タイマーを使用して設定できます。
  • AWS の Lambda 関数は、外部イベントとタイマーを使用して構成する必要があります。 スケジュール管理に使用できます。
  • Lambda 関数はステートレスであるため、迅速にスケーリングできます。
  • AWS Lambda は高速なので、ミリ秒以内にコードを実行します。

AWS Lambda の制限

AWS Lambda を使用する場合の短所と短所は次のとおりです。

  • AWS Lambda ツールは小規模プロジェクトには適していません。
  • AWS Lambda はインフラストラクチャを AWS に完全に依存しているため、コードで必要な場合に追加のソフトウェアをインストールすることはできません。
  • 同時実行は 100 に制限されています
  • AWS Lambda はインフラストラクチャを AWS に完全に依存していました。 コードで要求された場合でも、追加のソフトウェアをインストールすることはできません。
  • メモリ容量は 128 ~ 1536 MB の間で変化します。
  • イベント リクエストは 128 KB を超えてはなりません。
  • Lambda 関数は、CloudWatch にのみログを書き込むのに役立ちます。 これは、機能の監視またはトラブルシューティングを可能にする唯一のツールです。
  • コード実行のタイムアウトはわずか 5 分です。

まとめ

  • サーバーレスとは​​、一般にサーバーレス アプリケーションを指す用語です。
  • AWS Lambda は、そのようなサーバーレス コンピューティング サービスの XNUMX つです。 したがって、どの AWS リソースを起動するか、どのように管理するかについて心配する必要はありません。
  • 関数とは、AWS サーバーレス Lambda で実行されるプログラムまたはスクリプトです。
  • ランタイムを使用すると、同じ基本実行環境で実行されるさまざまな言語の関数が可能になります。
  • イベントソースは、次のような AWS サービスです。 Amazon SNSとかカスタムサービスとか。
  • Lambda レイヤーは、ライブラリ、カスタム ランタイム、その他の重要な関数の依存関係の重要な配布メカニズムです。
  • ログストリームを使用すると、関数コードにカスタムログステートメントで注釈を付けることができ、Lambda 関数の実行フローとパフォーマンスの分析に役立ちます。
  • AWS Lambda はサービスとしてのプラットフォーム (PaaS) です。 バックエンド コードを実行するのに役立ちます。
  • AWS EC2 はサービスとしてのインフラストラクチャ (laaS) です。 仮想化されたコンピューティング リソースを提供します。
  • アプリケーションを実行するインフラストラクチャを気にすることなく、AWS クラウド上でアプリケーションをデプロイおよび管理できます。
  • AWS Lambda は、バックエンド コードの実行と実行に使用されます。 アプリケーションのデプロイには使用できません。
  • AWS Lambda は次のことをサポートします。 ETLプロセス.
  • AWS の Lambda 関数のベストプラクティスは、適切な「タイムアウト」を使用することです。
  • 基礎となる呼び出しに依存する AWS Lambda ソフトウェア パッケージやアプリケーションを使用することは適切ではありません。 Windows RPC
  • AWS Lambda は柔軟性の高いツールです。
  • AWS Lambda ツールは小規模プロジェクトには適していません。
  • AWS Lambda を使用するときにトリガーされる一般的なイベントは、データ Dynamo DB テーブルの挿入、更新、削除です。