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

⚡ スマートサマリー

AWS Lambdaは、イベント駆動型のサーバーレスコンピューティングプラットフォームです。 Amazon トリガーに応じてコードを実行し、プロビジョニング、スケーリング、サーバー管理を自動的に処理するWebサービス。これにより、ビジネスロジックに集中できます。

  • 🇧🇷 サーバーレスモデル: AWS Lambdaは、サーバーのプロビジョニングや管理を行うことなくコードを実行するため、オペレーティングシステムのパッチ適用、スケーリング、キャパシティプランニングといった作業が不要になります。
  • イベント駆動型実行: 関数は、S3 などの AWS サービスからトリガーされます。 DynamoDBAPI GatewayおよびSNSは、イベントが発生したときのみ実行されます。
  • 🧩 言語サポート: LambdaはNode.jsをサポートしています。 Python, JavaGo、C#、Rubyに加え、その他の言語用のカスタムランタイムも提供。
  • ???? 利用ごとに料金を支払う: Billingはコードの実行中(ミリ秒単位)のみに適用され、毎月100万リクエストまでの無料枠が永続的に提供されます。
  • 🛠️ コアコンセプト: 関数、ランタイム、イベントソース、レイヤー、ログストリームは、Lambdaがコードを実行および管理する方法を定義します。
  • 🤖 AI支援: GitHub Copilotと Amazon Q は Lambda コードを生成し、Lambda は生成 AI 推論をオーケストレーションします。 Amazon 岩盤。

AWS Lambdaとは何ですか?

AWS Lambdaについて詳しく調べる前に、サーバーレスとは​​何かを理解しておくと役立ちます。

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

サーバーレスとは​​、一般的にサーバーレスアプリケーションを指す用語です。サーバーレスアプリケーションは、サーバーの設置や管理を一切必要としません。

AWS Lambdaとは何ですか?

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

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

AWS Lambda関数を利用することで、オペレーティングシステム(OS)のアクセス制御、OSパッチ適用、適切なサイジング、プロビジョニング、スケーリングなどの管理に時間を費やすことなく、コアとなる製品開発やビジネスロジックに集中することができます。

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

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

AWS Lambda のブロック図

ステップ1: まず、AWS Lambda でサポートされている言語で AWS Lambda コードをアップロードします。 Java, PythonAWS Lambda関数でサポートされている言語には、Go、C#などがあります。

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

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

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

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

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

  • S3 バケットにファイルをアップロードする
  • HTTP GET/POST エンドポイントの場合 URL ヒット
  • Dynamo DBテーブルの追加、変更、削除について
  • データストリーム収集の過程中
  • プッシュ通知
  • ウェブサイトのホスティング
  • メール送信

注意: AWS Lambda コードが実行された場合にのみ AWS サービスの利用料金が発生し、それ以外の場合は料金は一切発生しないことを覚えておいてください。

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) AWS Lambdaを開く URL

に行く https://aws.amazon.com/lambda/ さあ、始めましょう。

AWSラムダの使い方

ステップ2) してアカウントを作成

次に、アカウントを作成するか、既存のアカウントでログインしてください。

AWSラムダの使い方

ステップ3) コードを編集して「実行」をクリックしてください。

次のLambdaページでコードを編集し、「実行」をクリックします。

ステップ4) 出力を確認してください

出力結果が表示されます。

AWSラムダの使い方

AWS Lambda VS AWS EC2

AWS Lambdaと EC2.

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

AWS LambdaとAWS Elasticの比較 Beanstalk

AWS LambdaとElasticの主な違いは以下のとおりです。 Beanstalk.

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

AWS Lambdaの使用例

AWS Lambdaは、以下のような幅広い用途に使用されています。

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

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

AWS Lambda関数のベストプラクティスをいくつかご紹介します。

  • 適切な「タイムアウト」を使用してください。
  • /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 (NAIST) と Visual Studioの.
  • サーバーレスアーキテクチャであるため、サーバーの管理やプロビジョニングについて心配する必要はありません。
  • 何も設定する必要はありません 仮想マシン.
  • 開発者がインフラストラクチャを構築せずに、イベントに対するコードの応答を実行できるようにします。
  • コードを実行した際に発生した計算時間分だけを支払えばよいのです。
  • CloudWatch を通じてコードのパフォーマンスをリアルタイムで監視できます。
  • これにより、他のサーバーをプロビジョニングしたり管理したりすることなく、コードを実行できます。
  • 必要な時だけコードを実行するのに役立ちます。
  • 自動的に拡張して、XNUMX 日に数件のリクエストを処理したり、XNUMX 秒あたり数千件を超えるリクエストをサポートしたりすることもできます。
  • AWS Lambda は、スケジュールされたタスクを実行するために外部イベント タイマーを使用して設定できます。
  • AWSのLambda関数は、スケジューリングに使用できるように、外部イベントとタイマーを設定する必要があります。
  • ラムダ関数はステートレスであるため、迅速にスケールアップできます。
  • AWS Lambda は高速なので、ミリ秒以内にコードを実行します。

AWS Lambda の制限

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

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

よくあるご質問

AWS Lambda は Node.js をネイティブにサポートしています。 Python, JavaGo、C#、PowerShell、Rubyなどに対応しています。ランタイムAPIとコンテナイメージのサポートにより、ほぼすべての言語を実行できるため、チームが好みのスタックに制限されることはほとんどありません。

AWS Lambdaには、毎月100万件のリクエストと40万GB秒のコンピューティングリソースという、永続的な無料利用枠が含まれています。それを超えると、リクエスト数とコードが実際に使用したコンピューティング時間に対してのみ、ミリ秒単位で課金されます。

コールドスタートとは、アイドル状態だった関数に対して Lambda が新しい実行環境を初期化する際の短い遅延のことです。プロビジョニングされた同時実行、より小さなパッケージ、または SnapStart を使用することで、この遅延を短縮できます。 Java 機能します。

はい。ZIP アーカイブをアップロードする以外にも、Lambda では関数を最大 10 GB のコンテナ イメージとしてパッケージ化できます。これは、より大きな依存関係や機械学習ライブラリに適しており、ping 同じイベント駆動型、サーバーレス実行モデル。

Lambdaは、自動スケーリングとミリ秒単位の課金で、短時間のイベント駆動型関数を実行します。AWS Fargateは、サーバー管理なしで、より長時間のコンテナ化されたワークロードを実行します。迅速なイベント応答にはLambdaを、安定した長時間実行のコンテナタスクにはFargateを選択してください。

はい。Lambda は、軽量な推論を実行し、次のようなサービスへの呼び出しをオーケストレーションすることで、AI アプリケーションを一般的に支えています。 Amazon BedrockとSageMaker。コンテナイメージのサポートにより機械学習ライブラリのパッケージ化が容易になり、Lambdaは生成AIパイプラインのスケーリングを処理します。

Yes. GitHubコパイロット コメントまたは名前からハンドラー関数を書き込みますが、 Amazon Q Developerは、IAMポリシー、CloudFormation、およびSDK呼び出しに関するAWS対応のヘルプ機能を追加し、サーバーレス開発を高速化します。

各関数には最小限の権限を持つIAMロールを付与し、機密情報は暗号化された環境変数またはSecrets Managerに保存し、機密性の高い関数はVPC内に配置してください。CloudWatchとCloudTrailは、監視と監査のためにアクティビティをログに記録します。