[レポート]What’s new with serverless #reinvent

2022.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

「What's new with serverless」のセッションに参加してきたので、その内容についてお話ししていきたいと思います。

タイトルにもあるように、「サーバーレスの新機能」という内容のセッションでした。 具体的には、「AWS Lambda、Amazon EventBridge、AWS Step Functions、AWS SAM」について説明されるセッションでした。

概要

Join this session to learn what new features in AWS Lambda, Amazon EventBridge, AWS Step Functions, and AWS SAM you might have missed this year. Explore the latest patterns and what has been made possible. Learn practical tips to make use of the latest features designed to help you build better serverless applications.
(直訳:
このセッションでは、AWS Lambda、Amazon EventBridge、AWS Step Functions、AWS SAMで今年見逃したかもしれない新機能を紹介します。最新のパターンと何が可能になったかを探ります。より良いサーバーレスアプリケーションを構築するために設計された最新機能を活用するための実践的なヒントを学びます。

スピーカー

  • David Boyne
  • Senior Developer Advocate - AWS Serverless

アジェンダ

  • AWS Lambda
  • AWS Step Functions
  • Amazon EventBridge
  • AWS Serverless Application Model (AWS SAM)
  • More resources

内容(AWS Lambda)

AWS Lambda Function URLs

今までLambdaからDynamoDBに接続される環境にアクセスするためには、API Gatewayを利用する必要があり手間だった。

そこで、「AWS Lambda Function URLs」を利用することで手間を解消できる。

- Lambda 関数専用の HTTPS エンドポイント
- AWS CloudFormationの独立したリソース
- AWS Lambda Functionを呼び出すための一意のURLを生成する
- LATESTまたはユーザー定義のエイリアスを指すことができる

InputやMonitoring

Use caseやWhen to use Lambda URLs

AWS Lambdaの同期呼び出しの比較

  • AWS Lambda URLs
- 入門
- 簡単な呼び出し
- ウェブアプリケーション
- 長時間のワークロード
  • API Gateway
- サービス連携に最適な
- URLに複数の機能
- REST API
- セキュリティの強化

Lambda SnapStart

新しいイノベーションにより、AWS SnapStartはJavaベースのFunctionのコールドスタートを最大10倍高速化します。通常、Functionのコードに変更を加えることなく利用することができます。

社内でもすでに記事が速報で上がっているのでぜひ。

Lambdaのコールドスタートを解決するLambda SnapStartのセッションに参加してきた(SVS320) #reinvent

- 実行環境構築の初期化オーバーヘッドを最適化する新機能「Lambda」を搭載
- 関数が数百ミリ秒以内にハンドラ関数コードの実行を開始することを可能にする
- Amazon Corretto Java 8 (java8.al2) または Amazon Corretto Java 11 (java11) を実行する AWS Lambda 関数で初期に使用できます。
- MicroVM Snapshotテクノロジを搭載

AWS Lambda実行環境のライフサイクルやリクエストタイムライン

どう動いているのかや関数のライフサイクル

Lambda Telemetry API

Telemetry APIは従来のLogs APIの強化版とも言うべき存在で、Logs APIで取得できた情報に加えてLambda 実行環境のライフサイクルに関連するイベントとエラーに関するトレースとメトリクスが追加で取得できるようになっています。

社内でもすでに記事が速報で上がっているのでぜひ。

【アップデート】Lambda Extensionsのオブザーバビリティをさらに強化するTelemetry APIが利用可能になりました

- 優先的な監視・観測ツールを使用して、強化されたテレメトリーデータを受信する
- Telemetry APIはLogs APIの機能を強化します。
- Lambda サービスから直接、ログ、メトリクス、トレースを受け取ることができる
- Telemetry API のスキーマは OpenTelemetry (OTEL) とセマンティックな互換性があります。

Lambda Logs APIとLambda Telemetry API

イベントとメトリックス

Lambda storage

「/tmp」として利用可能なエフェメラルストレージを最大10GBまで拡張する事が可能

社内でもすでに記事が速報で上がっているのでぜひ。

AWS Lambdaのストレージ容量が最大10GBまで拡張可能になりました

/tmpスペースの詳細情報

Lambda Powertools

AWS Lambda 関数用のユーティリティースイートで、トレース、構造化ロギング、カスタムメトリックスなどのベストプラクティスの導入を容易にする。

社内でもすでに記事が速報で上がっているのでぜひ。

AWS Lambda Powertoolsが便利すぎた #serverless #python

- サーバーレスのベストプラクティスの発見と取り込みを支援するオープンソースライブラリ
- ロガー、トレース、メトリクス、ユーティリティのためのLambda
- 2021年のPythonの起動回数は2.5B、2022年には前年比6.5Bに成長。2022年には前年比6.5Bまで成長。
- 2022年に.NET(プレビュー)、TypeScript(GA)のサポートをリリース

内容(AWS Step Functions)

分散アプリケーション、マイクロサービスのコンポーネントの疎結合化を可能にするAWSのマネージドサービス。 各コンポーネントが独立するため、アプリケーションのスケール及び変更を容易にすることができます。 一つの Step Functions の定義全体をステートマシンと呼び、これらはASL(Amazon States Language)と呼ばれる独自言語を用いて記述されます。

社内でもすでに記事が速報で上がっているのでぜひ。

AWS Step Functions をゼロからざっくり理解する

AWS Step Functionsの機能

New console experience

- ステップファンクション標準ワークフローの分析、デバッグ、最適化を支援する新しいエクスペリエンス
- イベントタブ:選択したステートのすべてのイベントを、対応するタイムスタンプとともに表示します
- 入出力タブでは、状態の入力から出力まで、その間の変換をパラメータでデバッグ可能
- 新規実行ページをオンにして開始する

AWS Step Functions distributed map state

社内でもすでに記事が速報で上がっているのでぜひ。

[Update]AWS Announces AWS Step Functions Distributed Map #reInvent

- ステップファンクションで大規模な並列ワークロードを調整する
- JSONやCSファイルなど数百万のS3オブジェクトを反復処理する
- 最大10,000の並列実行が可能
- LambdaまたはAmazonを呼び出すECS/AWS Fargateを呼び出し、大規模なオンデマンドサーバーレスコンピューティングを実現する
- エクスプレスまたは標準のワークフローを選択

ユースケース

内容(Amazon EventBridge)

Amazon EventBridge は、アプリケーションをさまざまなソースからのデータに接続するために使用できるサーバーレスのイベントバスサービスです。EventBridge は、アプリケーション、SaaS (Software as a Service) アプリケーション、および AWS サービスからのリアルタイムデータのストリームを、AWS Lambda 関数、API デスティネーションを使用した HTTP 呼び出しエンドポイント、または他の AWS アカウントのイベントバスなどのターゲットに配信します。

https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-what-is.html

EventBridge inbound webhooks

- GitHub、Stripe、Twilioとの統合にかかる時間を短縮
- GitHub、Twilio、StripeからのイベントをEventBridgeへ
- Lambda function URLsを使ったCloudFormationスタックの提供

Salesforceとの統合は時間を要したみたいで、会場の笑いを誘っていました。

EventBridge Pipes

Amazon EventBridge Pipesは、ソースとターゲットをつなぎます。イベント駆動型アーキテクチャを開発する際の専門知識や統合コードの必要性を低減し、企業のアプリケーション全体の一貫性を促進します。パイプを設定するには、ソースを選択し、オプションのフィルタリングを追加し、オプションのエンリッチメントを定義し、イベントデータのターゲットを選択します。

https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html

社内でもすでに記事があり、とてもわかりやすいので是非。

Amazon EventBridge Pipesを使ってプロデューサー/コンシューマー型メッセージ処理のパイプラインを簡略化しよう #reinvent

Amazon EventBridge Scheduler

EventBridgeは、スケジュールされたルールに加えて、新しいスケジューリング機能であるAmazon EventBridge Schedulerを提供するようになりました。EventBridge Schedulerは、サーバーレススケジューラーであり、一元管理されたサービスからタスクを作成、実行、管理することができます。EventBridge Schedulerは、高度にカスタマイズ可能で、EventBridgeのスケジュールルールよりも拡張性が向上し、対象となるAPI操作やAWSサービスのセットも豊富です。EventBridge Schedulerでは、270以上のAWSサービスと6,000以上のAPIオペレーションを呼び出すことができる数百万のタスクをスケジュールすることができます。インフラのプロビジョニングや管理、複数のサービスとの連携が不要なEventBridge Schedulerは、スケーラブルなスケジュール配信と保守コストの削減を実現します。

https://docs.aws.amazon.com/eventbridge/latest/userguide/scheduler.html

社内でもすでに記事があり、とてもわかりやすいので是非。

イベント駆動サービスAmazon EventBridge 3兄弟をどう使い分ける?(Rules/Scheduler/Pipes) #reinvent

内容(AWS Serverless Application Model (AWS SAM))

- トランスフォームテンプレート
 - リソースとイベントソースのマッピングを表現するための省略記法で、サーバーレスアプリケーションのためのlaC(Infrastructure as Code)を提供します。

- コマンドラインインターフェース(CLI)
  - サーバーレスアプリケーションのローカル開発、デバッグ、ビルド、パッケージング、デプロイのためのツールを提供します。

AWS SAM accelerate

- sam build
 - 並列ビルド
インクリメンタルビルド
 - 一時的なレイヤー

- sam sync
 - 再デプロイを伴わないコード更新
 - 変更されたファイルの監視

- sam logs
 - ローカル端末でログを取得
 - ログのフィルタリング
 - トレースを含む

AWS SAM accelerateのネストスタック対応

- ネストしたスタックでAWS SAMの機能を高速化することを利用する
- スタック内のコード変更を数秒以内に環境にプッシュする
- ネストされたスタックを使用して、アプリケーションの分離と保守を管理することができます

AWS SAM Serverless connectors

社内でもすでに取り上げてられているので、是非。

AWS SAM の新しいリソースタイプ AWS SAM Connector が使えるようになりました

Connectorsにより、開発者は2つのリソース間でデータやイベントがどのように流れるか、また必要なパーミッションのレベルを記述することができます。

esbuildサポート

- esbuildでAWS Lambda関数をビルド、パッケージ化する
- TypeScriptで書かれたLambda関数をサポートする
- ツリーシェイクとミニフィケーションでパッケージサイズを小さくする
- 異なるECMAScriptのバージョンをターゲットにする(デフォルトはes2020)

最後に

AWS SAMが好きで、このスピーチを聞きに行こうと選択しましたが、それ以外にも多くのサービスを学ぶことができて非常にいい経験になりました。 一番驚いたのは、社内ですでに記事が多く上がっていたことです笑 ではでは。