【SAA試験対策】AWS認定ソリューションアーキテクト-アソシエイトの暗記用語のまとめ 〜 Lambda編
目次
こんにちは。
AWSの認定試験の勉強をしています。特にSAA(ソリューションアーキテクト - アソシエイト)試験で出てきそうな、個人的に覚えにくい・忘れやすい用語をまとめてみました。
試験概要はこちら:AWS 認定 ソリューションアーキテクト – アソシエイト
尚、本記事で取り扱っている用語はAWS公式の実際の出題ではなく、自分が勉強していて覚えにくかった用語を元にしていますので、認定試験では出題されない可能性もあります。あくまでも参考程度に御覧ください。
そもそもAWSって何?という方はこちらの記事を御覧ください。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
AWSの基礎や体系立てた知識の習得には書籍もオススメです。
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト
今回はLambda編です。Lambdaに関連するサーバレスコンピューティングやワークフローの自動化にも触れます。
それでは用語についてまとめていきます。
Lambda
ラムダと読みます。コード(プログラミングした関数)を実行してくれるサービスで、サーバーレスコンピューティングを実現できます。
サーバーレスというのは、ネットワーク上にパソコン(EC2インスタンス)を用意せずに実行したいプログラムを実行してくれる、という構造です。
このファイルがS3にアップロードされたら、こういうふうに加工して...という毎回やるような処理はサーバーを用意してプログラムをインストールしておいて自動実行、とやればよいですよね。しかし、そのためにパソコンを用意するとなると、OSやメモリ・ストレージはどうするといったスペックの問題や、ネットワークの問題、動いていない間はどうするといった管理の問題などを考えなくてはなりません。また、実行する処理が小さい処理であればあるほど、過剰なリソースとなり無駄にコストがかかります。
Lambdaはこのようなパソコンを用意・起動・管理する手間をすべてAWS側で行ってくれて、ユーザからは見えなくなります。そして、ユーザは「このPythonコードを実行したい」みたいなスクリプトを関数として書いておき、あとは実行のトリガーを定義すればよい、というお手軽・便利なサービスです。
Lambda関数のコスト
リクエストの数と実行時間に応じてかかります。
東京リージョンの場合、
- リクエスト100万件あたり 0.2 USD
- 実行時間 GB-秒あたり 0.0000166667 USD
ということで、大量実行しない限りはほとんど掛からないですね。
Lambda関数の制限
実行時間の上限
15分。
タイムアウトを指定して無期限に実行されないようにできます。デフォルトは3秒で、900秒(15分)まで伸ばせます。これを超えると、処理が途中で終了します。
最大データ容量
512MB。(/tmp
ディレクトリのストレージ容量です。)
→ 2022年3月から512MBではなく10GBに大幅拡張されました。
参考 : AWS Lambda で最大 10 GB のエフェメラルストレージをサポート可能に
同時実行数
1000。制限緩和申請が可能なソフトリミットで、最大数十万まで引き上げられます。
Lambda Layer
複数のLambda関数を組み合わせるとき、コード(ライブラリ)を共有できるまとまりです。
これによってコードがシンプルになり、依存関係や構造をわかりやすくできます。
関数メトリクス
関数の処理が終了した後にCloudWatchに送信されるメトリクス。
メトリクスというのは「定量化された尺度」のことで、分析するデータの指標、みたいな意味で使われます。
呼び出しメトリクス、パフォーマンスメトリクス、同時実行メトリクスといった種類があります。
たとえば以下のようなメトリクスの例があります。
Invocations
(呼び出しメトリクス) : 関数が実行された回数(成功・エラー含む)Duration
(パフォーマンスメトリクス) : 処理に費やした時間CurrentExecutions
(同時実行メトリクス) : 関数インスタンスの数。(同時実行数の制限にかかるのがコレ。)
【公式ドキュメント】AWS Lambda 関数メトリクスの使用
Labmda@Edge
ラムダエッジ。Lambdaの拡張機能で、CloudFrontで関数を実行できるサービスです。
webアプリケーションサーバーを管理不要でグローバルに分散させて、各地のパフォーマンスを向上させることができます。
単純なHTTPリクエストと応答処理から、リアルタイム画像変換といった処理まで幅広く利用できます。
【公式ドキュメント】Lambda@Edge ユーザーに近いロケーションでコードを実行
RDSプロキシ
プロキシというのは代理・仲介役と言う意味です。Lambda関数がRDSのデータベースにアクセスするとき、DBインスタンスではなく、このRDSプロキシに接続する必要があります。
接続プーリングといってLabmda関数とDBの接続をスケーリングできるので、関数が同時実行されたときに毎回新しいコネクションを確立するのではなく、既存のコネクションを再利用することができ、DBサーバーのメモリやCPUの消費を節約できます。
【公式ドキュメント】Amazon RDS Proxy による接続の管理
AWS SAM
Serverless Application Modelの略で、Lambdaでイベント駆動するアプリケーション構築がラクになるサービスです。
システム構成をYAMLで記述するSAMテンプレートというテンプレートにできます。これはCloudFormationの構文に変換して起動にも使えます。Dev/Test/Prodという環境分けはCloudFormationスタックで分離します。
SAM CLIというコマンドベースのツールで、記述のチェックができたり、構築に便利なコマンドが提供されています。
【公式ドキュメント】AWS サーバーレスアプリケーションモデル (AWS SAM)とは何か?
AWS Step Functions
Lambda関数や他のAWSリソースで組み合わされる一連のワークフローを作成・確認できるサービス。
作成するワークフローはステートマシンと呼ばれています。例えば自動販売機のような、コインを入れて、ボタンを押して、押された商品を出して、といったような状態遷移するマシンを作るイメージですね。
分岐・エラー処理・並列処理といった処理の流れを、フローチャートのように視覚的に作成できます。
【公式ドキュメント】AWS Step Functions とは何ですか?
ちなみに、自動化されたワークフローを作成するサービスがいくつかあるので、比較してみます。
- SQSを使ったメッセージング ... 同時に起こる大量の処理を分散したい場合に使う。
- CodePipeline ... ソフトのリリースにおけるビルド・テスト・デプロイの自動化に使う。
- Data Pipeline ... AWSやオンプレのDB間でデータの移動を自動化するときに使う。
- Amazon SWF(Simple Workflow Service) ... これから新しくアプリケーションを作る場合にはあまり推奨されていないみたい。
【公式ドキュメント】AWS Step Functions のよくある質問
まとめ
というわけで、AWS認定試験のSAA(ソリューションアーキテクト - アソシエイト)で必要となりそうなLambda関連の用語について忘れないようにまとめてみました。
また、Lambdaに関するサーバレスコンピューティングや、ワークフローの自動化に関するサービスについても触れました。
AWSでシステム構築するのには欠かせないサービスです。なるべくサーバーレスな構成にして導入・管理の手間を減らすのがスマートですね。
定期的に見直して知識の定着を行っていきたいです。また別のカテゴリについてもまとめる予定です。
AWSの基礎からの勉強や、体系立てた知識の整理には書籍もオススメです。こちらは2020年の最新試験(SAA-C02)の問題にも対応しています。
(模擬問題付き)改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応