[AWS Tutorial][Lambda]はじめに

AWS LambdaのGetting Startedの冒頭で説明されている部分を読み進めてみます。AWS Lambdaについて学習をする場合、多くの場合ここから始めるのがよさそうです。一方で必ずしも読み進めやすい記載内容ではなかったため、自分なりに理解した内容を中心に、可能な限り簡潔にまとめていきます。 ソース:https://aws.amazon.com/jp/getting-started/deep-dive-serverless/ サーバーレスについて サーバーレスアプリケーションはイベント駆動型で、テクノロジーに依存しない API またはメッセージングを介して疎結合されます。イベント駆動型コードは、状態の変化やエンドポイントリクエストなどのイベントに応答して実行されます。 カテゴリ別のサービス学習 サーバーレス 最初の段落に、サーバーレスアプリケーションはイベント駆動型(イベント・ドリブン型)である旨記載があります。APIを使ってロジックを起動させるイメージですね。次の段落もその補足説明になっています。 Lambda関数は、(略)統合されたイベントソースを介して、非同期統合の作成に使用できるイベントによってトリガーされます カテゴリ別のサービス学習 サーバーレス 次の段落ですが、「非同期統合の作成」あたりがよくわからないですね。原文をあたってみます。 Lambda functions are triggered by events via integrated event sources such as Amazon Simple Queue Service (SQS), Amazon Simple Notification Service (SNS), and Amazon Kinesis that can be used to create asynchronous integrations. Category Deep Dive Serverless どうやら、「非同期統合」という特別なものがあるわけではなく、「非同期な統合(連動といってもいいかも)」が実現できる、ということですかね。SQSやSNS、Amazon Kinesisというサービスがこの非同期な統合に使えるという紹介のようです。 サーバーレスアーキテクチャパターンは、同じくサーバーレスである他のマネージドサービスで Lambda を使用します。 カテゴリ別のサービス学習 サーバーレス 日本語的に少しあやしい感じがあるので、ここも原文をみてみます。 Serverless architecture patterns use Lambda with other managed services that are also serverless Category Deep Dive Serverless 「サーバーレスアーキテクチャパターンとしては、Lambdaを他のサーバーレスのマネージド・サービスと共に使うかたちです」くらいの感じですかね。メッセージとしては「Lambdaを使ってサーバーレスにするなら、せっかくなので、Lambdaを管理するサービスも含めて全てをサーバーレスにしましょう」ということですね。以下が関連するマネージド・サービスとして紹介されています。 Amazon API Gateway: API管理 Amazon DynamoDB: データ格納 AWS Step Functions: オーケストレーション 一連のデベロッパーツール ところで、”サーバーレスアーキテクチャパターン”という単語が唐突に出てきますが、特に説明もありません。AWSの公式ドキュメントを探しましたが、定義らしきものも見つけられなかったので少しWebを調べてみました。 参考:Serverless architecture patterns いくつか見た中で、こちらのブログの説明が端的でわかりやすかったので紹介します。 https://waswani.medium.com/serverless-architecture-patterns-in-aws-edeab0e46a32 こちらの記事では、Lambdaを用いたアーキテクチャパターンをいくつか紹介しています。以下の図は最もシンプルなものですが、こういったイメージ図が一つあるだけで随分メッセージが伝わってくるのだけど、AWSに限った話ではないですが、公式ドキュメントでは中々お目にかかれないですね。 サーバーレスを使う理由 ここでは、ユーザにとっての利点としてざっくり以下の2点が説明されています。 サーバの管理が(メンテナンス、拡張など含め)不要 使った分だけに課金される コアサーバーレスサービス サーバーレスアプリケーションは、通常、フルマネージドサービスを使用して、コンピューティング、データ、メッセージングと統合、ストリーミング、ユーザー管理、ID レイヤー全体のビルディングブロックとして構築されます カテゴリ別のサービス学習 サーバーレス 「統合、」あたりからちょっとよくわからないので、原文をあたってみます。 Serverless applications … Read more

[AWS Tutorial] Lambda Tutorial 作業メモ 2021年

AWSのサーバレスコンピューティングサービスである、AWS Lambdaについて、存在こそ知っていましたが、実際に使ってみたことがなかったため、AWS公式のチュートリアルに従って作業を進めてみましたので、ここにその作業メモを残してみます。Lamdaのチュートリアルが公開されたのがいつなのかわかっていませんが、実際に進めてみると手順と画面が一致していない部分も散見されましたので、困っている方の参考になれば幸いです。 AWS Lambda Tutorial概況 まずは、チュートリアルの概況から整理してみます。AWSのGetting Startedとしてカテゴリ別のサービス学習という形で、以下6つののチュートリアルが紹介されています。 初級コース 「Hello, World!」をサーバーレスで実行 アップロードした画像からサムネイルを作成する シンプルなマイクロサービスを作成する サーバーレスワークフローを作成する 中級コース ファンアウトイベント通知を送信 Amazon EventBridge をサーバーレスアプリケーションに統合する 当初、この6つが公式のチュートリアル全てかと思っていたのですが、AWSの開発者ガイドの中に、上記以外のチュートリアルが散りばめられているようです。例えば、AWS Lambdaであれば、AWS Lambdaの開発者ガイドの「他のサービスでの使用」カテゴリのS3には、「チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す」が公開されていたりします。 実際にGetting Startedのチュートリアルを進めると分かるのですが、Getting Startedのチュートリアルの中で、適宜これら開発者ガイドのチュートリアルを参照するような記載が出てくることになります。とりあえずサービスの色々な機能を試してみたい場合は、Getting Startedのチュートリアルを進め、やりたいことがピンポイントで決まっている場合は、開発者ガイドのチュートリアルで進める形がよさそうです。 今回の一連の投稿では、AWS Lambdaでできること、できないことなどの理解を深めることを目的としていますので、Getting Startedのチュートリアルを軸に進めていきたいと思います。 Lambda Tutorial作業メモ 2021年 以下に随時実施したチュートリアルの作業メモを追記していこうと思います。 Getting Started Tutorial チュートリアル名 関連サービス Lambda S3 DynamoDB CloudWatch [初級コース] はじめに – – – – 「Hello, World!」をサーバーレスで実行 アップロードした画像からサムネイルを作成する シンプルなマイクロサービスを作成する サーバーレスワークフローを作成する [中級コース] ファンアウトイベント通知を送信 Amazon EventBridge をサーバーレスアプリケーションに統合する 作業メモへのリンクと、利用した関連サービス 初級コース はじめに ここでは、サーバーレスアーキテクチャについての概念などが説明されています。実際にサービスを使ってみることはない導入部分なのですが、少し独特の言い回しもあり、個人的には理解に少し骨が折れました。 「Hello, World!」をサーバーレスで実行 メモ整理中 アップロードした画像からサムネイルを作成する 未実施 シンプルなマイクロサービスを作成する メモ整理中 サーバーレスワークフローを作成する 未実施 中級コース ファンアウトイベント通知を送信 未実施 Amazon EventBridge をサーバーレスアプリケーションに統合する 未実施 開発者ガイドチュートリアル チュートリアル名 関連サービス Lambda S3 DynamoDB CloudWatch Amazon S3 トリガーを使用して Lambda 関数を呼び出す x x – x Amazon DynamoDB ストリームで AWS Lambda を使用する x – x x 作業メモへのリンクと、利用した関連サービス Amazon … Read more