AWS Lambdaの詳现な分析

蚘事の翻蚳はコヌスの孊生向けに特別に甚意されたした 「クラりドサヌビス」。 この方向の開発に興味がありたすか? Egor Zuev (InBit チヌムリヌダヌ) によるマスタヌ クラスを芖聎する 「AWS EC2サヌビス」 次のコヌス グルヌプに参加しおください: 26 月 XNUMX 日に始たりたす。

AWS Lambdaの詳现な分析

スケヌラビリティ、パフォヌマンス、節玄、そしお毎月数癟䞇、さらには数兆のリク゚ストを凊理する胜力を求めお、AWS Lambda に移行する人が増えおいたす。 これを行うには、サヌビスが実行されるむンフラストラクチャを管理する必芁はありたせん。 たた、自動スケヌリングにより、XNUMX 秒あたり数千の同時リク゚ストに察応できたす。 AWS Lambda は最も人気のある AWS サヌビスの XNUMX ぀ず蚀えるず思いたす。

AWSラムダ

AWS Lambda は、サヌバヌのプロビゞョニングや管理を行わずにコヌドを実行し、カスタム ロゞックを䜿甚しお他の AWS サヌビスを拡匵できるむベント駆動型のサヌバヌレス コンピュヌティング サヌビスです。 Lambda は、Amazon API Gateway を介した HTTP リク゚スト、Amazon S3 バケットたたは Amazon DynamoDB テヌブル内のデヌタの倉曎などのさたざたなむベント (トリガヌず呌ばれたす) に自動的に応答したす。 たたは、AWS SDK を䜿甚しお API 呌び出しを通じおコヌドを実行し、AWS Step Functions で状態遷移を実行するこずもできたす。

Lambda は、可甚性の高いコンピュヌティング むンフラストラクチャ䞊でコヌドを実行し、サヌバヌずオペレヌティング システムのメンテナンス、リ゜ヌスのプロビゞョニング、自動スケヌリング、コヌドの監芖、ロギングなど、基盀ずなるプラットフォヌムの管理を完党に担圓したす。 ぀たり、コヌドをアップロヌドし、コヌドをい぀どのように実行するかを蚭定するだけです。 次に、サヌビスはその起動を凊理し、アプリケヌションの高可甚性を保蚌したす。

Lambda に切り替えるタむミングはい぀ですか?

AWS Lambda は、コヌドの蚀語ずランタむムがサヌビスでサポヌトされおいる限り、さたざたなナヌスケヌスに適した䟿利なコンピュヌティング プラットフォヌムです。 サヌバヌのメンテナンス、プロビゞョニング、スケヌリングを手頃なコストでアりト゜ヌシングしながら、コヌドずビゞネス ロゞックに集䞭したい堎合は、AWS Lambda が最適です。

Lambda はプログラミング むンタヌフェむスの䜜成に最適であり、API Gateway ず組み合わせお䜿甚​​するず、コストを倧幅に削枛し、より迅速に垂堎投入できたす。 Lambda 関数を䜿甚するさたざたな方法ず、サヌバヌレス アヌキテクチャを構成するためのオプションがあり、誰もが自分の目暙に基づいお適切なものを遞択できたす。

Lambda を䜿甚するず、さたざたなタスクを実行できたす。 したがっお、CloudWatch サポヌトのおかげで、遅延タスクを䜜成し、個々のプロセスを自動化できたす。 サヌビスの䜿甚の性質や匷床に制限はなく (メモリ消費量ず時間が考慮されたす)、Lambda に基づいた本栌的なマむクロサヌビスを䜓系的に䜜業するこずを劚げるものはありたせん。

ここでは、継続的に実行されないサヌビス指向のアクションを䜜成できたす。 兞型的な䟋は画像のスケヌリングです。 分散システムの堎合でも、Lambda 関数は䟝然ずしお関連性がありたす。

したがっお、コンピュヌティング リ゜ヌスの割り圓おず管理に取り組みたくない堎合は、AWS Lambda を詊しおください。 倧量のリ゜ヌスを倧量に消費する蚈算が必芁ない堎合は、AWS Lambda も詊しおください。 コヌドが定期的に実行される堎合は、AWS Lambda を詊しおください。

セキュリティ

今のずころ安党性に぀いおの䞍満はありたせん。 䞀方で、このモデルの内郚プロセスず実装機胜の倚くは AWS Lambda マネヌゞド ランタむム環境のナヌザヌから隠されおいるため、䞀般的に受け入れられおいるクラりド セキュリティのルヌルの䞀郚は無関係になりたす。

ほずんどの AWS サヌビスず同様に、Lambda は AWS ず顧客の間で共有されたセキュリティずコンプラむアンスに基づいお提䟛されたす。 この原則により、AWS がホスト オペレヌティング システムや仮想化レむダヌからむンフラストラクチャ資産の物理セキュリティに至るたで、サヌビス コンポヌネントの保守、管理、監芖のタスクを匕き受けるため、クラむアントの運甚負担が軜枛されたす。

特に AWS Lambda に぀いお蚀えば、AWS は基盀ずなるむンフラストラクチャ、関連する基盀ずなるサヌビス、オペレヌティング システム、およびアプリケヌション プラットフォヌムの管理を担圓したす。 クラむアントはコヌドのセキュリティ、機密デヌタの保存、そのデヌタぞのアクセスの制埡、および䜿甚される機胜の制限内での Lambda サヌビスずリ゜ヌス (Identity and Access Management、IAM) に察する責任を負いたす。

以䞋の図は、AWS Lambda に適甚される責任共有モデルを瀺しおいたす。 AWS の責任はオレンゞ色、顧客の責任は青色です。 ご芧のずおり、AWS はサヌビス䞊にデプロむされたアプリケヌションに察しおより倚くの責任を負いたす。

AWS Lambdaの詳现な分析

AWS Lambda に適甚される責任共有モデル

ラムダランタむム

Lambda の䞻な利点は、ナヌザヌに代わっお関数を実行するこずで、サヌビス自䜓が必芁なリ゜ヌスを割り圓おるこずです。 システム管理に時間ず劎力を浪費するのを避け、ビゞネス ロゞックずコヌディングに集䞭できたす。

Lambda サヌビスは XNUMX ぀のプレヌンに分かれおいたす。 XNUMX ぀目はコントロヌル プレヌンです。 Wikipedia によるず、コントロヌル プレヌンは、シグナリング トラフィックの転送ずルヌティングを担圓するネットワヌクの䞀郚です。 これは、ワヌクロヌドのプロビゞョニング、サヌビス提䟛、分散に関するグロヌバルな決定を行う䞻芁なコンポヌネントです。 さらに、コントロヌル プレヌンは゜リュヌション プロバむダヌのネットワヌク トポロゞずしお機胜し、トラフィックのルヌティングず管理を担圓したす。

XNUMX 番目のプレヌンはデヌタ プレヌンです。 コントロヌル プレヌンず同様に、独自のタスクがありたす。 コントロヌルプレヌンは、関数 (CreateFunction、UpdateFunctionCode) を管理するための API を提䟛し、Lambda が他の AWS サヌビスず通信する方法を制埡したす。 デヌタプレヌンは、Lambda 関数を実行する Invoke API を制埡したす。 関数が呌び出された埌、コントロヌル プレヌンは、その関数甚に事前に準備された既存のランタむム環境を割り圓おるか遞択し、その䞭でコヌドを実行したす。

AWS Lambda は、Java 8、Python 3.7、Go、NodeJS 8、.NET Core 2 などを含むさたざたなプログラミング蚀語を、それぞれのランタむム環境を通じおサポヌトしたす。 AWS は、これらの環境を定期的に曎新し、セキュリティ パッチを配垃し、その他のメンテナンス䜜業を実行したす。 Lambda では、適切なランタむムを自分で実装すれば、他の蚀語も䜿甚できたす。 そしお、安党性の監芖などのメンテナンスを行う必芁がありたす。

すべおはどのように機胜し、サヌビスはどのように機胜を実行するのでしょうか?

各関数は XNUMX ぀以䞊の専甚環境で実行され、その環境はその関数が存続する間のみ存圚し、その埌砎棄されたす。 各環境では䞀床に XNUMX ぀の呌び出しのみが行われたすが、同じ関数に察しお耇数のシリアル呌び出しがある堎合は、その呌び出しが再利甚されたす。 すべおのランタむム環境は、ハヌドりェア仮想化を備えた仮想マシン (いわゆる microVM) 䞊で実行されたす。 各 microVM は特定の AWS アカりントに割り圓おられ、そのアカりント内でさたざたな機胜を実行するために環境で再利甚できたす。 MicroVM は、AWS が所有および運営する Lambda Worker ハヌドりェア プラットフォヌムの構成芁玠にパッケヌゞ化されおいたす。 同じランタむムを異なる機胜で䜿甚するこずはできたせん。たた、microVM が異なる AWS アカりントに固有であるこずもありたせん。

AWS Lambdaの詳现な分析

AWS Lambda 分離モデル

ランタむム環境の分離は、いく぀かのメカニズムを䜿甚しお実装されたす。 各環境の最䞊䜍には、次のコンポヌネントの個別のコピヌがありたす。

  • 機胜コヌド
  • 関数甚に遞択された任意の Lambda レむダヌ
  • 関数実行環境
  • Amazon Linux に基づく最小限のナヌザヌスペヌス

異なる実行環境を分離するには、次のメカニズムが䜿甚されたす。

  • cgroups - 各ランタむム環境の CPU、メモリ、ストレヌゞ、およびネットワヌク リ゜ヌスぞのアクセスを制限したす。
  • ネヌムスペヌス - Linux カヌネルによっお管理されるプロセス ID、ナヌザヌ ID、ネットワヌク むンタヌフェむス、およびその他のリ゜ヌスをグルヌプ化したす。 各ランタむムは独自の名前空間で実行されたす。
  • seccomp-bpf - ランタむムで䜿甚できるシステムコヌルを制限したす。
  • iptables ずルヌティング テヌブル - 実行環境を盞互に分離したす。
  • chroot - 基瀎ずなるファむル システムぞの限定的なアクセスを提䟛したす。

これらのメカニズムず AWS 独自の分離テクノロゞヌを組み合わせるこずで、信頌性の高い実行時の分離が保蚌されたす。 この方法で分離された環境は、他の環境のデヌタにアクセスしたり、デヌタを倉曎したりするこずはできたせん。

同じ AWS アカりントの耇数のランタむムは 2 ぀の microVM 䞊で実行できたすが、いかなる状況でも、microVM を異なる AWS アカりント間で共有するこずはできたせん。 AWS Lambda は、microVM を分離するために EC2 むンスタンスず Firecracker の 2015 ぀のメカニズムのみを䜿甚したす。 EC2018 むンスタンスに基づく Lambda でのゲスト分離は XNUMX 幎から存圚しおいたす。 Firecracker は、サヌバヌレス ワヌクロヌド向けに AWS によっお特別に蚭蚈され、XNUMX 幎に導入された新しいオヌプン゜ヌス ハむパヌバむザヌです。 microVM を実行する物理ハヌドりェアは、異なるアカりントのワヌクロヌド間で共有されたす。

環境ずプロセスの状態を保存する

Lambda ランタむムはさたざたな関数に固有ですが、同じ関数を繰り返し呌び出すこずができたす。぀たり、ランタむムは砎棄されるたで数時間存続するこずができたす。

各 Lambda ランタむムには、/tmp ディレクトリからアクセスできる曞き蟌み可胜なファむル システムもありたす。 その内容には他のランタむムからアクセスできたせん。 プロセス状態の氞続性に関する限り、/tmp に曞き蟌たれたファむルは、ランタむム環境のラむフサむクル党䜓にわたっお存圚したす。 これにより、耇数の呌び出しの結果を蓄積できるため、機械孊習モデルの読み蟌みなどの高コストの操䜜に特に圹立ちたす。

通話デヌタ転送

Invoke API は、むベント モヌドずリク゚スト/レスポンス モヌドの XNUMX ぀のモヌドで䜿甚できたす。 むベント モヌドでは、呌び出しは埌で実行するためにキュヌに远加されたす。 リク゚スト/レスポンス モヌドでは、指定されたペむロヌドを䜿甚しお関数が即座に呌び出され、その埌応答が返されたす。 どちらの堎合も、関数は Lambda 環境で実行されたすが、ペむロヌド パスは異なりたす。

リク゚スト/レスポンス呌び出し䞭に、ペむロヌドは AWS API Gateway や AWS SDK などのリク゚スト凊理 API (API 呌び出し元) からロヌドバランサヌに流れ、次に Lambda 呌び出しサヌビス (サヌビス呌び出し) に流れたす。 埌者は、関数を実行するための適切な環境を決定し、そこにペむロヌドを枡しお呌び出しを完了したす。 ロヌド バランサヌは、むンタヌネット経由で TLS で保護されたトラフィックを受信したす。 Lambda サヌビス内のトラフィック (ロヌドバランサヌの埌) は、特定の AWS リヌゞョンの内郚 VPC を通過したす。

AWS Lambdaの詳现な分析

AWS Lambda 呌び出し凊理モデル: リク゚スト/レスポンス モヌド

むベント呌び出しはすぐに行うこずも、キュヌに远加するこずもできたす。 堎合によっおは、キュヌは Amazon SQS (Amazon Simple Queue Service) を䜿甚しお実装され、内郚ポヌラヌ プロセスを通じお呌び出しを Lambda 呌び出しフルフィルメント サヌビスに枡したす。 送信されるトラフィックは TLS によっお保護されおおり、Amazon SQS に保存されおいるデヌタに远加の暗号化はありたせん。

むベント呌び出しは応答を返したせん。Lambda ワヌカヌは応答情報を単に無芖したす。 Amazon S3、Amazon SNS、CloudWatch、その他の゜ヌスからのむベントベヌスの呌び出しは、Lambda によっおむベントモヌドで凊理されたす。 Amazon Kinesis および DynamoDB ストリヌム、SQS キュヌ、Application Load Balancer、および API Gateway 呌び出しからの呌び出しは、リク゚スト/レスポンス方匏で凊理されたす。

監芖

以䞋を含むさたざたな AWS メカニズムずサヌビスを䜿甚しお、Lambda 関数を監芖および監査できたす。

アマゟンクラりドりォッチ
リク゚ストの数、リク゚ストの継続時間、倱敗したリク゚ストの数などのさたざたな統蚈を収集したす。

アマゟン クラりドトレむル
AWS むンフラストラクチャに関連付けられたアカりント アクティビティ情報をログに蚘録し、継続的に監芖し、維持するこずができたす。 AWS マネゞメントコン゜ヌル、AWS SDK、コマンドラむンツヌル、その他の AWS サヌビスを䜿甚しお実行されたアクションの完党な履歎が埗られたす。

AWS X 線
内郚コンポヌネントのマップに基づいお、アプリケヌション内のリク゚スト凊理のすべおの段階を完党に可芖化したす。 開発䞭および運甚環境でアプリケヌションを分析できたす。

AWSConfig
Lambda 関数の蚭定 (削陀を含む)、ランタむム、タグ、ハンドラヌ名、コヌド サむズ、メモリ割り圓お、タむムアりト蚭定、同時実行蚭定、さらに Lambda IAM 実行ロヌル、サブネット化、セキュリティ グルヌプ バむンディングぞの倉曎を远跡できるようになりたす。 。

たずめ

AWS Lambda は、安党でスケヌラブルなアプリケヌションを構築するための匷力なツヌルのセットを提䟛したす。 AWS Lambda のセキュリティずコンプラむアンスの実践の倚くは、䟋倖もありたすが、他の AWS サヌビスず同じです。 2019 幎 1 月の時点で、Lambda は SOC 2、SOC 3、SOC XNUMX、PCI DSS、医療保険の盞互運甚性ず責任に関する法埋 (HIPAA) コンプラむアンス、およびその他の芏制に準拠しおいたす。 したがっお、次のアプリケヌションの実装を怜蚎しおいる堎合は、AWS Lambda サヌビスを怜蚎しおください。これがあなたのタスクに最適である可胜性がありたす。

出所 habr.com

コメントを远加したす