Monthly Serverless Update 202110

f:id:Keisuke69:20210701084133j:plain 2021年10月のサーバーレス関連まとめです。こちらのイベントの内容です。

serverless-newworld.connpass.com

Update: アーカイブが以下で公開されています。

www.youtube.com

とりあげるサービス

クラウドのサービスは大体このあたりを中心に取り上げます。

AWS

先月に引き続き、AWSはre:Inventが近づいてきたからか大きなアップデートはない感触。というかサーバーレスそのものに関するアップデートは減ってきている感じもする。

AWS Step Functions が AWS SDK 統合で 200 を超える AWS のサービスのサポートを追加

  • Lambdaいらずに

AWS Batch が AWS Step Functions ワークフローを視覚化するためのコンソールサポートを追加

AWS Lambda now supports IAM authentication for Amazon MSK as an event source

Amazon DynamoDB の NoSQL Workbench で、サンプルデータのインポートと自動追加が可能になりデータモデルの構築と可視化が簡単に

AWS Amplify for JavaScript がストレージのリジューム可能なファイルアップロードをサポート

Google Cloud

Google Cloudはもっとアップデートがなかった。

Cloud Run now supports network file systems such as NSF, NDB, 9P, CIFS/Samba, and Ceph, as well as Cloud Filestore and Cloud Storage FUSE. (Available in public preview.)

Cloud Run now supports a new second generation execution environment that provides full Linux compatibility rather than system call emulation. This execution environment provides better performance and the ability to use network file systems. (Available in public preview.)

ここからはFirebase。

Google Analytics for Firebase gets a refresh

  • 見た目が変わった
  • GA4で導入された変更が、FirebaseのAnalyticsセクションで利用できるように

Add Analytics labels to your messaging campaigns

  • FCM使って送信した通知とかコンソールのキャンペーンにラベルをつけられるようになった
  • Google Analyticsでこのラベルを使って追跡可能になった

FlutterFire now supports Realtime Database for Web

  • Flutter向けのライブラリがRealtime Databaseを使ったWebアプリをサポートしたそう

Azure

General availability: Azure Functions extensions for Blobs, Queues, Event Hubs, Service Bus, and Event Grid

パブリック プレビュー:Azure Functions での動的コンカレンシー

その他

Edge Functions are now available in Public Beta

  • いわゆるCDNのEdgeで動くFaaS

Blog - Next.js 12 | Next.js

  • 先週くらいにNext.js Confが開催されてNext.js 12がアナウンスされました
  • 結構大きなアップデートがあります

Use Next.js 12 on Netlify

  • そのNext.js 12はNetlify上で動くよ、と

Write Netlify Functions in Rust

  • Netlify Functions はRustで書けるようになったらしい

Deploy Nuxt 3 to Netlify

First look at the Jamstack Community Survey 2021 Results

その他ブログなど

今月はお休み

最後に

このMonthly Serverless Updateをお届けするのは次回で最後です。最後の回の申し込みはこちらから。

Monthly Serverless Update 最終回 - connpass

あと、BLASTOFFっていう新しい配信始めます。こちらもぜひ。

serverless-newworld.connpass.com

Monthly Serverless Update 202109

f:id:Keisuke69:20210701084133j:plain 2021年9月のサーバーレス関連まとめです。こちらのイベントの内容です。

あと、本文最後にお知らせがあります。

serverless-newworld.connpass.com

(Update)

アーカイブはこちら。

www.youtube.com

とりあげるサービス

クラウドのサービスは大体このあたりを中心に取り上げます。

AWS

AWSはre:Inventが近づいてきたからか大きなアップデートはない感触。

Amazon EventBridge スキーマレジストリのクロスアカウントイベントの検出

Amazon Pinpoint、SMS 受信時の暗号化 SNS トピックに対応

Amazon Elasticsearch Service が Amazon OpenSearch Service となり、OpenSearch 1.0 のサポートを追加

AWS Amplify が Amplify CLI コマンドの実行時にカスタムスクリプトを実行するためのコマンドフックを発表

AWS ParallelCluster が Amazon API Gateway を介したクラスター管理のサポートを開始

Amazon Aurora Serverless v1 が設定可能なオートスケーリングタイムアウトをサポート

Amazon DynamoDB では、AWS CloudTrail でストリーミングのデータプレーン API アクティビティをフィルタリングできるようにすることで、監査ログ記録のよりきめ細かい制御が可能に

AWS Lambda now supports triggering Lambda functions from an Amazon SQS queue in a different account

AWS Lambda Functions Powered by AWS Graviton2 Processor – Run Your Functions on Arm and Get Up to 34% Better Price Performance | AWS News Blog

GCP

Customer managed encryption keys are now at general availability

You can now configure Cloud Run services to have CPU allocated for the entire lifetime of container instances.

これはUpdate情報だとさらっと書かれてる感じですけどこっちのブログとかのほうが詳しいし、嬉しさがよくわかるかと。

サーバーレス コンテナ Cloud Run に待望の新機能 Always on CPU が登場しました | by Shingo | google-cloud-jp | Sep, 2021 | Medium

Cloud Functions now supports PHP 7.4 at the General Availability release level

Firestore triggers for Cloud Functions are now supported at the General Availability release level.

Added DATA_READ and DATA_WRITE Data Access audit logs.

  • いわゆる監査ログが取れるように
  • Firestore上のデータに対するアクセスを全部ロギングできる。ログはCloud Loggingで見る。
  • トラブル調査にめっちゃ役立った。けど料金的にはどうなのか不明

Azure

Azure Cosmos DB: Azure Functions extension version 4.0 in public preview | Azure updates | Microsoft Azure

Public preview: Distributed tracing for Java apps on Azure Functions Linux | Azure updates | Microsoft Azure

Azure Functions runtime 4.0 is now in public preview | Azure updates | Microsoft Azure

その他

Deno Deploy Beta 2 | Deno Blog

At Next.js Conf 2021, let’s make the Web. Faster. – Vercel

  • またNext.js Confやる模様
  • 10/26にオンラインで

Jamstack Conf 2021 Speaker Lineup

  • Jamstack Congのスピーカーが発表になった様子
  • こちらは10/6,7

How New Netlify Product Updates Accelerate Enterprise Development

  • チーム開発する上での機能群を提供する模様
  • Enterprise Grid planというのも発表。これは複数組織、複数チームを持つエンタープライズ企業向けの請求周りの機能とか複数チームの管理機能とか

その他ブログなど

9月はAWSがDevDayというカンファレンスを開催したこともあってそのセッション資料が多めです。かくいう自分もブレイクアウトセッションをやらせてもらいました。

AWS CloudFormation と AWS SAM を使用したサーバーレスアプリケーションの開発とデプロイ | Amazon Web Services ブログ

AWS Amplifyを軸にした フルサーバーレスなアプリケーション構成 / Full serverless application on AWS Amplify - Speaker Deck

Cloud Runで新規サービスを構築・運用するためにSREとして取り組んだこと - ZOZO TECH BLOG

Javaの階層型コンパイルによるAWS Lambda 関数のパフォーマンス向上 | Amazon Web Services ブログ

サーバーレスにおけるべき等性の実装 (バッチ処理と分散トランザクション編) ~サーバーレスが気になる開発者に捧ぐ「べき等性」ことはじめ 第 4 回~ - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

AWS サーバーレスサービスによるマルチテナント SaaS ソリューションの構築 | Amazon Web Services ブログ

Operating Lambda: パフォーマンスの最適化 – Part 1 | Amazon Web Services ブログ

Operating Lambda: パフォーマンスの最適化 – Part 2 | Amazon Web Services ブログ

Operating Lambda: パフォーマンスの最適化 – Part 3 | Amazon Web Services ブログ

2021年版、サーバーレスのテスト手法を考える / Serverless Testing 2021 - Speaker Deck

AWSでISRの実現!その謎を解明すべくAmazonの奥地へと足を踏み入れる!! / Digging how to running ISR on AWS - Speaker Deck

Lambda@EdgeからCloudFront Functionsへの移行と CI / CDパイプラインの整備 / aws-dev-days-2021 - Speaker Deck

こちらはフォローアップ記事です → [AWS Dev Day Online Japan フォローアップ] ShifterにおけるCloudFront Functions / Lambda@edge運用について - 株式会社デジタルキューブ

AWS Step Functions × AWS SAMで実現する家族ノートの低運用コストETL基盤/ kazokunote-stepfunctions-awssam-etl - Speaker Deck

AWS Chalice 再入門 〜RESTful APIはやっぱり最高〜 - Speaker Deck

Lambda だけじゃもったいない。サーバーレス開発の第二歩目を踏み出そう/lets-take-second-step-in-serverless-development - Speaker Deck

最後に

ちょうど一年前から始めたこのアップデート紹介の配信なんですが、僕自身のスケジュールとモチベーションの問題から年内をもって終わりにしようかと思います。

というのも今年の途中からはAWSの人ではなくなったんですけど、そうすると提供できる情報としては見てくれている皆さんと変わらないといえるわけです。加えてぼちぼち忙しくなったり、第二子が生まれたりでなかなか時間取るのも難しくなったことや、AWS以外も扱うようにした結果、各トピックの中身にまではあまり触れることができずなおさら別に僕がやらなくてもいいのではないかという風に思えてきてしまったのです。

あとは、これまで個人的にサーバーレス ≒ AWS Lambdaとそれを中心とする周辺サービスという感じで扱ってきていて、Google CloudやAzureについても同等のサービスに絞って紹介してきました。でも特にここ数ヶ月感じているのはこれらのサービスの進化は一定程度落ち着きを見せたのかなと。その結果、アップデートとしてはあまり大きなものがなくなっている気がします。特にGoogle CloudとAzureに至っては各社の戦略上そこを本気でやるという感じでもなさそうですし、FaaS以外にもより広がりを見せています。また、メガクラウドベンダー以外にも一点突破型で存在感のあるサービスも増えてきました。

そんなこんなでこれならば以前やっていた『サーバーレスアンチパターン今昔物語』的な内容のものを不定期でやったほうが自分的に楽しめるかなと思っている次第です。

というわけでマンスリーアップデートとしては年内いっぱいでおしまいにしようと思ってます。もしかしたら年内いっぱいやらないかもだけど、re:Invent回はやりたいな。

Monthly Serverless Update 202107

f:id:Keisuke69:20210701084133j:plain 2021年7月のサーバーレス関連まとめです。こちらのイベントの内容です。今回からはちょっとやり方を変えようと思ってるのでこれまでと違ってコメント少なめです。

serverless-newworld.connpass.com

配信のアーカイブ youtu.be

とりあげるサービス

クラウドのサービスは大体このあたりを中心に取り上げます。

AWS

細々としたアップデートが多かった感じ。あと最近はAmplifyが頑張ってる印象。

ローコードのビジュアルワークフローを構築するための AWS Step Functions の新機能 Workflow Studio のお知らせ

AWS Amplify CLI に、AWS Lambda 関数がアクセスする環境変数とシークレットの保存に関するサポートが新たに追加

Amazon MQ for RabbitMQ が、整合性のあるハッシュ交換タイプのサポートを開始

Amplify Admin UI が、既存の Amazon Cognito ユーザープールと ID プールのインポートのサポートを開始

AWS Lambda がイベントソースとしての Amazon MQ for RabbitMQ のサポートを開始

AWS Amplify により DataStore で複数の認可モードを混合し、照合可能に

Amazon ECS が、スケジュールされたイベント駆動型タスクの追加設定をサポート

Amplify Flutter が Null Safety (Null 安全) のサポートを開始

Amazon CodeGuru Profiler announces new automated onboarding process for AWS Lambda functions

AWS Amplify now supports Sign in with Apple

Deploy and host server-side rendered apps with Amplify - AWS Amplify

GCP

Cloud FunctionsはあまりなくてCloud Runは細かいのが多め。ここ数ヶ月GCPのサーバーレス関連アップデートを見てきた感想として、きっとGCPはFunctions as a Serviceに関してはそれほどやる気がないんだろう。同じサーバーレスの文脈でもあくまでもコンテナ利用を軸としたものが中心にあるんだろうな。それはGoogleのこれまでの内部的な方針も含めると納得感はある。しらんけど。

Cloud Functions now logs pending queue requests abort error messages.

Cloud Functions now supports .NET at the General Availability release level.

  • バージョンは.NET Core3.1

Cloud Run VPC Service Controls are now at General Availability (GA).

Committed use discounts are now at General Availability (GA).

The following organization policies are now at General Availability (GA): Cloud Run Allowed ingress settings and Allowed VPC egress settings.

Cloud Run container instances can now process up to 1,000 concurrent requests, see Setting maximum concurrency. The default is still 80.

Cloud Run is now covered by FedRAMP Moderate

Azure

Azureは依然としてよくわからない。他の2社と違ってServerlessというカテゴライズもされていないので漏れがある気がする。おそらくAzureも世の中へのメッセージングの1つとしてServerlessという打ち出し方はするものの、これまでのMS製品の傾向からして特段新しいものではないっていう感じなのだろうか。しらんけど。

General availability: Updates to secrets configuration options in App Service and Azure Functions | Azure の更新情報 | Microsoft Azure

Public preview: Azure App Service Migration Assistant PowerShell-based experience | Azure の更新情報 | Microsoft Azure

General availability: Azure Spring Cloud Pricing Model Change | Azure の更新情報 | Microsoft Azure

General availability: Application Insights integration with App Services for Java & Node.js apps | Azure の更新情報 | Microsoft Azure

App Service Environment v3 now generally available | Azure の更新情報 | Microsoft Azure

Public Preview: Form Recognizer container support | Azure の更新情報 | Microsoft Azure

General availability: Azure Sphere version 21.07 expected on July 21, 2021 | Azure の更新情報 | Microsoft Azure

その他

Welcoming Kathy Korevec to Vercel, our new Head of Product – Vercel

Supercharge your Vercel Projects with Integrations – Vercel

July 27 incident update | Deno Blog

その他ブログなど

Fastly、JavaScriptエンジンをWebAssemblyで実装。CDNエッジのサーバレス環境「Compute@Edge」でJavaScriptサポート発表(訂正済み) - Publickey

AWSは実環境で得られる効果が大きい アンケートから見るLambdaのテスト領域の傾向 - ログミーTech

AWS Lambda でのカスタムチェックポイントによるバッチ処理の最適化 | Amazon Web Services ブログ

AWS LambdaサポートのコンテナイメージとAWS CDKを利用したマイクロサービス開発 | Amazon Web Services ブログ

定期実行するLambdaが「起動しなかったこと」を検知するCloudWatch Alarmを作る | DevelopersIO

Firestore Data Bundlesを活用してFirestoreの読み取りコストを削減する

AWS Lambda でのカスタムチェックポイントによるバッチ処理の最適化 | Amazon Web Services ブログ

Monthly Serverless Update 202106

f:id:Keisuke69:20210701084133j:plain 2021年6月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。

Monthly Serverless Update 2021/05 - connpass

依然としてAWS以外のクラウドにはまだ疎いのでその辺はご容赦ください。

Update 配信のアーカイブが以下で公開されていますのでぜひそちらもどうぞ

www.youtube.com

2021年6月のリリース

いつもどおりタイトルだけで内容がわかるようなものは特にコメントしていません。各クラウドのサービスは大体このあたりを中心に取り上げます。

AWS

今月はパッとした発表はなかった感じ。強いて言うならStepFunctionsのWorkflow Studioかな。

Amazon API Gateway は、REST API を使用した Express ワークフローの同期呼び出しをサポートするようになりました

  • StepFunctionsの同期ExpressワークフローをAPI Gatewayから呼び出せるようになった
  • あれ、これ先月も取り上げた気がするな…

AWS Lambda Extensions がすべての商用リージョンで一般的に利用可能に

AWS Amplify が、Amplify で生成された IAM ロールでの IAM アクセス許可の境界のサポートを発表

Amazon DynamoDB Accelerator (DAX) がアプリケーションと DAX クラスター間、および DAX クラスター内の複数のノード間の転送データの暗号化をサポート

新機能 – AWS Step Functions ワークフロースタジオ – ステートマシンを構築するためのローコードのビジュアルツール | Amazon Web Services ブログ

  • 最初のワークフロー作りの敷居を下げるという意味ではとても良さげ
  • それよりも「ローコード」というワーディングでメッセージし始めたのが個人的には趣深い
  • そういう意味ではサーバーレス、というかLambdaはグルーコード、インテグレーションコードを減らすってのがウリの一つでもあるので「ローコード」と言えるのかもしれない…

AWS SAM が AWS Lambda 向けの機械学習 (ML) 推論テンプレートを提供

AWS Lambda now supports SASL/PLAIN authentication for functions triggered from self-managed Apache Kafka

  • SASL = Simple Authentication and Security Layer
  • プロトコルに認証機能や暗号化を提供するレイヤのことで最近利用してるものが増えてきてる模様(Postfixとか)
  • その中でもPLAINてのは文字通り認証情報を平文でやり取りするものらしい
  • で、今回の発表は自前Kafkaからのトリガーでそれをサポートするよってことらしい

GCP

GCPもあまり大した発表なし。GCPは5月に大規模イベントがあったのも影響しているかもしれない。

Setting request timeout  |  Cloud Run Documentation  |  Google Cloud

Using WebSockets  |  Cloud Run Documentation  |  Google Cloud

Using HTTP/2  |  Cloud Run Documentation  |  Google Cloud

Using gRPC  |  Cloud Run Documentation  |  Google Cloud

  • Web Socket / HTTP2/ gRPC streaminのサポートがGA

The Ruby Runtime  |  Cloud Functions Documentation  |  Google Cloud

  • Rubyの2.6と2.7をサポート

The Firebase Blog: Expanding Crashlytics Support for Apple Platforms

  • Apple SiliconとRosetta 2をサポート
  • つまり、iOSアプリはもちろん、Rosetta2で実行されるx86 macOS アプリとARM macOSアプリがサポートされる
  • あとはパフォーマンス改善も

Azure

Azureも6月はパッとしない。ていうかクラウドベンダーのサーバーレス全般がパッとしない印象。Azureも確か5月に大きなイベントがあった影響かも知れないけど。

Public preview: Identity-based connections in Azure Functions with latest Azure SDK triggers and bindings | Azure の更新情報 | Microsoft Azure

General availability: Azure API Management Premium tier price reduction for incremental purchased units | Azure の更新情報 | Microsoft Azure

  • このリリースで初めて知ったけどAzureのAPI Managementっていくつかのプランに分かれてるのか
  • それぞれサポートされる機能に差分があるみたい
  • 一番ビックリしたのは下から2番めのプラン以上は課金が時間単位ということ

Open source API portal now generally availabile | Azure の更新情報 | Microsoft Azure

その他

Next.js 11, Next.js Live and more: A recap of Next.js Conf Special Edition – Vercel

  • Next.js 11が発表された。Script componentとかが新しいところ
  • Next.js Liveというリアルタイムコラボレーションが可能なプラットフォームも発表(プレビューリリース)

$102M to Continue Building the Next Web, Together – Vercel

  • 去年春の2100万ドル、冬の4000万ドルに続いて今回は1億2000万ドルを調達
  • 日本のポジションもオープンしてるし狙い目かも知れない

Deno Deploy Beta 1 | Deno Blog

  • 最初のベータリリースであるBeta 1をリリース
  • 今後も機能を追加しつつベータリリースを繰り返し、最終的にGAは2021年Q4を狙ってるとのこと

その他ブログなど

Salesforce Functionsがベータ公開、Salesforceプラットフォームでサーバレスを提供 - Publickey

  • Salesforce Functionsという独自のFunctionサービスを提供。データに対して処理する感じだろうけど相性良さそう
  • 対応言語はNode.js/JavaScriptJava、Apex。ApexってのがSalesforceらしい
  • FunctionsだけでなくてPostgreSQL、Redis、kafkaのマネージドサービスも提供されるということでSaaSだけでなくPaaSの性格も強めてきたのかな

CircleCI + Serverless でコンテナ環境を AWS Lambda に自動デプロイ - Qiita

  • Lambdaでコンテナイメージ使うとき用にCircleCIでイメージビルドしてECRへ登録

【開催報告&全資料まとめ&録画公開】Amplify Meetup #03 | Amazon Web Services ブログ

[AWS CDK] API Gatewayのログ出力を有効にしてCloudWatch Logsでログを確認してみた | DevelopersIO

  • API Gatewayのログ出力周りの設定に関してCDKのサンプルコードがある
  • CDKで細かいことやろうとするとサンプルとか少ないのでこういう細かいサンプルは助かる人多いよね

AWS LambdaのJava 8ランタイムがAmazon Correttoへ。OpenJDKから移行するとAWSが発表 - Publickey

  • 移行したくない人向けにOpenJDKを使い続ける設定も用意される模様

AWS ALB vs API Gateway cost

  • APIのエンドポイントをAPI Gatewayで提供する場合とALBで提供する場合のコスト比較
  • HTTPエンドポイントをAPI GatewayではなくてALBで提供することを検討した人もいるのでは?
  • 個人的にはシンプルに提供するならばALBも全然ありだと思ってる
  • ちなみに自分も少し考えている

CloudFront FunctionsはLambda@Edgeより安い。それ本当?! | DevelopersIO

  • CloudFront FunctionとLambda@Edgeのコスト比較
  • このシナリオでは予想外にLambda@Edgeのほうがやすかった模様

Datadog APMで実現するサーバーレスアーキテクチャの分散トレーシング - ZOZO Technologies TECH BLOG

  • ZOZOさんによるDatadog APMを使った分散トレーシング環境の事例
  • 対象システムはAWSみたいなので、その場合にX-Rayと比較してどうなのか気になるところ

Serverless FrameworkがLambda用コンテナを自動でECRにデプロイできるようになってた件

  • Serverless FrameworkがLambda用コンテナをビルドしてECRにプッシュまでするだと!?

Step FunctionsからLambda関数を実行する書き方2つの違い | DevelopersIO

  • 2種類のASLの書き方に関して、違いとか
  • 書き方によってコールバックタスクが書ける/書けないとか引数の渡し方などに違いが

【Node.js/Next.js】Cloud Runで動作する軽量なDockerを構築してみた

  • 非常に軽量なイメージであるDistrolessとマルチステージビルドで軽量化

SAM+TerraformでLambdaの管理を楽にする | DevelopersIO

Jamstackを検討する - ゆーすけべー日記

もしかして App Runner 上 Next.js の SSR で直接 DynamoDB 呼べますか?

  • SSRをやるのにApp Runnerいいよね
  • App RunnerからDynamoDBも(当然)つながる

CloudFront FunctionsでIP制限を試してみた | DevelopersIO

【小ネタ】Lambda関数に画像データを渡す | DevelopersIO

  • base64エンコードしてpayloadに直接入れるて渡すやつ
  • payloadのサイズは最大6MBで、base64エンコードすると少し容量が増えるのでそれ以下ならありかと
  • Lambda FunctionでデコードすることになるけどそのCPU利用が気になるケースはあるのだろうか?

Cloud Runをコマンドやスクリプトを実行するサーバレスジョブ基盤として使う

  • 小さいバッチをCloudRunで

Next.jsとmicroCMSでカップラーメン食べた回数カウンターを作る

  • Next.jsの環境をLambda@EdgeとS3でやってる

Monthly Serverless Update 202105

f:id:Keisuke69:20210601165122j:plain 2021年5月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。

Monthly Serverless Update 2021/05 - connpass

今月からはAWSに限らずサーバーレス全般のアップデートやトピックを取り上げて行く予定ですが、AWS以外のクラウドにはまだ疎いのでその辺はご容赦ください。

2021.06.01 Update

配信動画のアーカイブはこちら

www.youtube.com

2021年5月のリリース

いつもどおりタイトルだけで内容がわかるようなものは特にコメントしていません。各クラウドのサービスは大体このあたりを中心に取り上げます。

AWS

5月はあまり数はなかった感じ。

Amazon CloudFront が軽量エッジコンピューティング機能である CloudFront Functions を発表

  • 個人的には5月最大のアップデート
  • これまでCloudFrontではLambda@Edgeというものが提供されていたけれど、今回のアップデートで真のエッジコンピューティングが実現
  • 軽量な一方で制限も多いので処理量が多い場合などはこれまで通りLambda@Edgeを
  • 現状ではJavaScriptのみ対応
  • ECMAScript 5.1互換だけどES6から9の一部の機能もサポートしてるそう
  • 一方でJSの一部記法に制限があり
  • CommonJS系なNode.jsな書き方はそのままだと動かない可能性ある

AWS Step Functions が EventBridge への Amazon カスタムイベントのサポートを開始

Amazon EventBridge が同じアカウントとリージョン内の複数のイベントバス間でのイベント共有をサポート

  • 同一リージョン、同一AWSアカウントの異なるイベントバス間でイベントのルーティングが可能に
  • 先日発表されたクロスリージョンでのルーティングとあわせてより柔軟な構成が可能に

AWS Amplify Hosting が Next.js ウェブアプリのサーバーサイドレンダリング (SSR) サポートを発表

  • 対応しているのがNext.jsのv9ってのが残念
  • 早くv10対応お願いします
  • ISRは依然として無理

AWS ソリューションの実装 - Serverless Bot Framework がお客様による Amazon Lex チャットボットの利用場面を拡大するための新しい統合を追加

AWS Lambda Extensions が一般的に利用可能に

  • ようやくGA(それまでまだGAじゃなかったの知らなかった)

Amazon API Gateway REST APIs integrates with Step Functions Synchronous Express Workflows

  • API GatewayからStepFunctionsの同期Express Workflowをトリガーできるようになった
  • 同期なのでワークフローのアウトプットをAPIのレスポンスとして返すこともできる

GCP

Google I/OがあったからFirebaseは多め。言語ごとのSDKとかCLIのアップデートも多くてこっちは取り上げるかどうかは悩みどころ。GCPについてはCloudRunはいくつかあるけどCloud Functionsについてはなし。

Identity-Aware Proxy overview  |  Google Cloud

  • IAPがCloudRunでサポートされるようになったようです。ただし、プレビュー

Using secrets  |  Cloud Run Documentation  |  Google Cloud

  • Cloud Run で Secret Manager のシークレットをサポートするようになったようです
  • これもプレビュー

Optimizing service accounts with Recommender  |  Cloud Run Documentation

  • これもプレビュー
  • Recommenderを使ってCloud Runのサービス アカウントを最適化し、必要な権限を最小限にしたりってのができるようになったそう

Enabling Binary Authorization (Cloud Run)  |  Google Cloud

  • これもプレビュー。てかプレビューばっかだな。

Using customer managed encryption keys  |  Cloud Run Documentation

  • プレビュー
  • Cloud Runで顧客管理の暗号鍵が使えるようになった

The Storage Emulator joins the Emulator Suite for broader backend coverage

Firebase App Distribution now supports Android App Bundles for streamlined testing

Strengthening app security with App Check

New modularized Web SDKs improve load times

More Extensions for adding features and functionality

Enhanced search, filtering, and games reporting in Crashlytics

Unveiling realtime data for Performance Monitoring and a revamped dashboard

Remote Config updates help you better visualize and optimize your app configuration

Azure

Azure Static Web Apps is now generally available | Azure の更新情報 | Microsoft Azure

  • モダンなフロントエンドWebアプリとAzure FunctionsベースのAPIをまるっとデプロイできるサービス
  • Vue/React/Angularに加えて.NETもサポートされてるのがAzureっぽい
  • SSRに対応してるかとかはちょっとわからず。でも例えばNext.jsでgetServerSideProps使われてたらAzure Functionsで良しなにやってくれるとかだったら熱い

Public preview: Introducing new Durable Functions storage provider options | Azure の更新情報 | Microsoft Azure

PowerShell support in Durable Functions is now generally available | Azure の更新情報 | Microsoft Azure

General availability: Logic Apps with new hosting options | Azure の更新情報 | Microsoft Azure

その他

Surfacing the Environment of Deployments and Domains – Vercel

Detailed Usage metrics for Personal Accounts – Vercel

  • 最近追加されたUsage Metricsの画面がProとEnterpriseプランだけでなくHobbyプランのアカウントでも見れるようになった

Usability improvements for Netlify Function logs

  • Netlify functionのログ表示が大幅に改善されたと
  • フィルタできるようになったりした

Configure Netlify Build Plugins to run only in specific deploy contexts

  • プラグインを特定コンテキストのみで実行するってことができるようになった

Next-generation of Deploy Previews and Netlify acquisition of FeaturePeek

  • 最近買収したFeaturePeekのテクノロジーをもとにDeploy Previewがパワーアップした
  • レビュアーがコメントしたり、画面録画したりってことができるようになったとのこと

その他ブログなど

Selenium, AWS Lambda, AWS Fargate, AWS Developer Tools を使ったサーバーレスなUIテスト | Amazon Web Services ブログ

  • UIテストの実行環境をサーバーレスで用意するらしい
  • 仕組みがごつい
  • Headlessブラウザを組み込んだコンテナをビルドしてLambdaで使ったりFargateで使ったり

App Runnerの登場とAmplify ConsoleのSSR対応でVPCレスなAWSアーキテクチャを夢見た話

  • 今回取り上げてないけど次世代のWebアプリケーションホスティングプラットフォームと言えるApp RunnerとAmplify Consoleでフロントエンドをホストするには的な
  • Vercel/Netlify以外でSSRとかISRしようとするとコンテナ必須な現状なのでこういう時にNode.jsをサポートしてるApp Runnerはいいよね
  • 一方でコンテナすら面倒見たくない自分は…

[速報]Azure Functions、Azure App ServiceなどがAWSやGoogle Cloud、オンプレミスなどで実行可能に、Kubernetes対応で。Microsoft Build 2021 - Publickey

  • Azure Functionsがオンプレでも動かせるように

AWS Step FunctionsとSSM RunCommandでWebシステムの起動・停止のジョブネットを組んでみた | DevelopersIO

  • みんな大好きジョブネットをStepFunctionsとSSMで
  • そういえば一昔前はScheduler as a Serviceをめっちゃリクエストされましたね

lambda@edge上でwasmを使用した画像リサイズにおける速度

Next.js + Prisma + NextAuth.js + React Queryを試した - $shibayu36->blog;

  • Next AuthにPrisma良さそう

Serverless Framework & DockerによるローカルフレンドリーなLambda開発・運用

  • Serverless Frameworkが実行できるDockerイメージ作ったり
  • Native Extensionを利用するのでLambda Layer作ったり
  • Dockerを活用したLambdaの開発をする話

エッジでJavaScriptを実行するCloudFront Functionsのユースケースまとめ | DevelopersIO

Lambda@Edge 関数のログが見つからないときの対処方法 | DevelopersIO

  • 知見だ

esbuild を使って AWS Lambda (Node.js) を2秒でアップデートする

  • Serverless Frameworkを使ったアップデートも意外と速いって印象
  • ビルド時間が速いとされてるesbuildを使って自前でアップデート処理を実装することでもっとさくさく開発できるのではって話
  • かなり短くできたらnodemon使ってライブアップデートっぽいことするのも可能、と

Deno Deploy を触ってみよう ~ アプリケーションの作成と更新 ~ - 虎の穴開発室ブログ

  • Deno Deployのやってみた系
  • 実行にはaddEventListnerfetchイベントをListenする必要がある。JSの標準的なAPIを普通に使う感じなのはいいね
  • 実際の処理はコールバックに。Lambda関数書くのと大して変わらない感じだ
  • デプロイはとても楽そう。この記事ではDeploy URLを使った方法を紹介。GitHub連携とかデプロイが楽なのはいいな

AWS Lambda でコンテナに入れた Sinatra を動かす - id:onk のはてなブログ

  • 既存のものをマイグレする以外でLambdaでSinatra使いたい理由がわからなかった
  • ここまでやるならFargateとかでもいいんじゃないかなーと思うんだけどどうなんだろう
  • App RunnerがRubyに対応したらそれでもいいよね

Monthly AWS Serverless Update 202103

2021年3月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。

serverless-newworld.connpass.com

2021年3月のリリース

1月、2月は少なかったんですが3月になって増えてきましたね。年明けて2ヶ月たってようやく本気だしてきたのでしょうか。

タイトルだけで内容がわかるようなものは特にコメントしていません。

AWS Lambda コンソールに新しいナビゲーションデザインを追加

  • Lambdaのコンソールが(また)変わりました
  • テストとか設定周りがタブとして用意されるようになった

AWS Step Functions が YAML のツールサポートを追加

Amazon EventBridge now supports propagation of X-Ray trace context

Amplify Android での Kotlin 中心のデベロッパーエクスペリエンスの発表

  • ファサード」モジュールを提供することで統合してるそうです(Kotlinわからない…)

Amazon EventBridge introduces support for API Destinations

  • イベントの送り先として任意のHTTP APIを指定可能に
  • 外部のSaaSや自分で管理しているAPIなど
  • 認証も組み込み済ってことでそのためのコード書く必要がないそうですが具体的にどうなってるかは不明

AWS Lambda が 4 つの Trusted Advisor チェックを追加

  • 以下の4つが追加
    • 高いエラー率 - 過去 7 日間のエラー率が 10% を超えるものをチェック
    • 過剰なタイムアウト - 過去 7 日間のタイムアウト率が 1% を超える関数をチェック
    • 非推奨 (または非推奨になりそうな) ランタイムの使用
    • 単一の AZ での VPC 対応関数
  • 上2つはコストに響く、シングルAZのチェックは可用性の観点

S3 Object Lambda で、S3 GET リクエストに独自のコードを追加して、データがアプリケーションに返されるときにデータを変更および処理することが可能に

  • S3 GETでデータが返される前にLambdaで処理を仕込める
  • フォーマット変換とか

Amazon RDS Proxy now supports database connectivity from multiple Amazon VPCs

Amazon RDS Proxy adds read-only endpoints for Amazon Aurora Replicas

  • read-onlyのエンドポイント「も」作れるようになった

AWS CloudTrail が Amazon DynamoDB のデータイベントのログ記録を追加

AWS CloudTrail を使用して、データプレーン API アクティビティをログに記録し、Amazon DynamoDB テーブルのアイテムレベルのアクティビティをモニタリング、アラーム、アーカイブすることが可能に

  • 同じ内容
  • ついにDynamoDBのデータアクセスに対する監査ログが取れるように

Amazon API Gateway で、エンドポイント、承認、およびロギング設定を管理するための IAM 条件キーを提供開始

Announcing AWS Step Functions’ integration with Amazon EMR on EKS

Announcing end of support for Python 2.7 in AWS Lambda | AWS Compute Blog

  • Python2.7のサポート終了案内
  • 2021年7月15日で新規作成はできなくなり、2021年9月30日で更新もできなくなる
  • それ以降も実行はできるけど、普通に考えて早めの移行をおすすめします

Amazon API Gateway custom domain names now support multi-level base path mappings

その他ブログなど

Operating Lambda: イベント駆動型アーキテクチャの設計原則 – Part 2 | Amazon Web Services ブログ

Operating Lambda: イベント駆動型アーキテクチャにおけるアンチパターン – Part 3 | Amazon Web Services ブログ

Amazon S3 Object Lambdaの紹介 – コードを利用して S3 から取得するデータを処理 | Amazon Web Services ブログ

  • Amazon S3 Object Lambdaの詳細。サンプル付き

コンテナ利用者に捧げる AWS Lambda の新しい開発方式 ! - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

  • Lambdaでサポートされたコンテナイメージについて
  • 使い方だけでなく背景や嬉しさなんかも

Using Rust for AWS Lambdas

  • RustをLambdaで。カスタムランタイム
  • 公開されているオフィシャルのサンプルだと非同期周りがうまく動かなくなってるのでそのあたりを対応

minne の画像配信システムのリアーキテクトと作品画像の画質向上ついて - ペパボテックブログ

LaravelをAWS Lambdaで動作させてデータベースにはAurora Serverlessを使ってみた - Qiita

初めてのAWSフルサーバーレス開発で困ったこととそこから得た知見 - Speaker Deck

サーバレスアーキテクチャで柔軟なIoTプラットフォームの構築 | IIJ Engineers Blog

Scala と AWS でフルサーバーレス開発事例 / How Chatworks uses Scala and Serverless - Speaker Deck

  • ChatWorkと言えばScalaScalaといえばChatWork
  • ScalaをLambdaでやるためのTips
  • GraalVMでネイティブコード化してカスタムランタイムで実行

サーバーレスアプリケーション向けのAWS CDK、Serverless Stackを触ってみました | DevelopersIO

  • Serverless Stackというサーバーレスアプリ開発のためのツールのニューカマー
  • CDKをラップしてるらしい
  • Live Lambda Developmentってのがリアルタイムで手元の修正結果を確認できるみたいでよさげ

serverless-stack.com

真のサーバーレスに一段近づけるフロントエンドアーキテクチャーの話

  • ネタ
  • サーバーレスというより分散システムの話かな

Step FunctionsとPandasを使ってサーバーレスETL入門 | DevelopersIO

  • ETLをAWS GlueではなくStep Functionsでやってみた

Serverless Frameworkで作るお手軽アプリケーション - Kaizen Platform 開発者ブログ

  • Lambda/API Gateway/S3/CloudFrontという構成
  • ユーザーが動画制作用の素材を外部サービスから無料で検索できる機能を実装

Serverless Image Handlerによるセキュアな画像配信の実現 - Visional Engineering Blog

  • 人材活用プラットフォームHRMOSのサーバーレスかつセキュアな画像配信
  • AWS Solutionsとして公開されているServerless Image Handlerをベースに、CloudFrontの署名付きURLを利用する形で構築

Monthly AWS Serverless Update 202102

2021年2月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。

serverless-newworld.connpass.com

2021年2月のリリース

1月に引き続き2月もあまりアップデートはなかったです。逆にその分Lambdaなんかはre:Inventでお腹いっぱいになった機能追加にキャッチアップするいいタイミングかもですね。

タイトルだけで内容がわかるようなものは特にコメントしていません。

AWS Lambda が Node.js 14 のサポートを開始

  • Top Level AwaitってことはNode.jsのv14.3以降ってことですね、きっと
  • でもLambdaで利用するにはフラグなしじゃないとダメだと思うのでv14.8以降ですかね

AWS Amplify ホスティングが Amazon CloudWatch の統合でモニタリング機能を追加

AWS ソリューション実装 - AWS Data Streaming Solution for Amazon MSK がストリーミングアプリケーションからイベントを読み取ってデータを Amazon S3 に保存するテンプレートを追加

PartiQL を DynamoDB ローカルで使用して、Amazon DynamoDB のテーブルデータの照会、挿入、更新、削除が可能に

  • PartiQL
  • SQL互換のクエリ言語
  • RDB以外にKVSやJSONとかCSVファイルといった半構造化データや入れ子形式のいろんなデータソースに対して横断的に検索できるクエリ言語
  • このPartiQLによるDynamoDBのテーブルデータのクエリ、挿入、更新、削除ができるようになった

新しいデータと認証のサポートを備えた Amplify Flutter の一般提供を発表

  • 猫も杓子もFlutter

Amazon DynamoDB Accelerator (DAX) が次世代のバースト可能な汎用 Amazon EC2 T3 インスタンスタイプのサポートを開始

Amazon SNS で 10 桁のコードと無料電話番号を使用しながら SMS メッセージを米国内の宛先に送信できるようになりました

Amazon CloudWatch Contributor Insights for Amazon DynamoDB が AWS CloudFormation のサポートを開始

その他ブログなど

Operating Lambda: イベント駆動型アーキテクチャを理解する – Part 1 | Amazon Web Services ブログ

  • Operation Lambdaシリーズ第一弾
  • イベントドリブンアーキテクチャについて利点とかどういう課題を解決するかなど

Docker コンテナイメージを使用した PHP Lambda 関数の構築 | Amazon Web Services ブログ

  • LambdaでPHPを使う方法
  • 以前はカスタムランタイムでやるしかなかったが、コンテナサポートされたのでやりやすくなったと思う

Building a serverless multi-player game that scales | AWS Compute Blog

サーバーレス「AWS Lambda」のコストが9割減も、新課金ルールが生きる使い方 | 日経クロステック(xTECH)

  • 課金単位が1msになった件について
  • コストが5分の1から10分の1になった例も

Lambdaのテスト領域に関する技術共有会を開催しました | DevelopersIO * Lambdaのテストに関するまとめ * Lambdaに限らずテストというものに対する考え方を包括的に * サンプルはTSとJest

TypeScriptフルスタックフレームワークのfrourioをAWSのサーバレスな環境で動かす

www.buzzsprout.com

【Golang】で【Amazon API Gateway Lambda オーソライザー】と【FirebaseAuth】を利用しての認証をやってみた - カミナシ開発者ブログ

Vercel以外でNext.jsのISRをできるのか問題

  • サーバーレスとは直接関係ないかもだけどNext.jsのISRをVercel以外で
  • 僕も以前に書きましたが現状コンテナとか使うしかない → キャッシュにつらみ

CircleCI OrbsでAWS SAM CLIを超簡単に導入して使ってみる | DevelopersIO

  • CircleCIでSAM CLI使いたい人向け

DynamoDB + Lambda + CloudFront + S3でシンプルなウェブサービスを作る話

Monthly AWS Serverless Update 202101

2021年1月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。

serverless-newworld.connpass.com

2021年1月のリリース

昨年の11月30日からAWSの年次グローバルカンファレンスであるre:Inventが開催されたことで12月は大きなアップデートがいくつかあったのですが、それはいろんなところでまとめられているので今回は触れません。今回はあくまでも2021年1月に発表されたアップロードに限ります。

1月はなんとAWS Lambdaに関するアップデートがありません。re:Inventに全力投球って感じだったのでしょうか。

タイトルだけで内容がわかるようなものは特にコメントしていません。

AWS Step Functions が、分析および機械学習のワークフローでデータを準備する AWS Glue DataBrew ジョブのサポートを追加

Amazon SNS が、Kinesis Data Firehose サブスクリプションを介してメッセージのアーカイブと分析のサポートを追加

Amazon SQS が、AWS GovCloud (米国) リージョンで 1 分間隔の CloudWatch メトリクスのサポートを開始

Amazon SQS が段階的価格設定を発表

Amplify DataStore がアプリデータのソートと選択型同期のサポートを開始

Amazon API Gateway が、HTTP API でのデータマッピングのサポートを開始

  • HTTP APIでもいろいろできること増えてきた

AWS Chalice adds support for the AWS CDK | AWS Developer Blog

  • ChaliceだけだとDynamoDBとかSQSとかのその他のリソース管理はできなかったのができるように

Amazon SNS now supports 1-minute CloudWatch metrics

その他ブログなど

Making retries safe with idempotent APIs

  • APIを使用して再試行を管理する方法について
  • 冪等性 APIというものを使用して複雑さを軽減し、再試行を処理するというAmazon で使用している戦略について説明

サーバーレスの勉強方法を聞いてみた。- builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

  • AWSのテクニカルトレーナーとサーバーレススペシャリストSAがサーバーレスの学び方について対談形式で話してます

Operating Lambda: Understanding event-driven architecture – Part 1 | AWS Compute Blog

Operating Lambda: Design principles in event-driven architectures – Part 2 | AWS Compute Blog

Operating Lambda: Anti-patterns in event-driven architectures – Part 3 | AWS Compute Blog

コンテナイメージとしてパッケージ化された Lambda 関数の最適化 | Amazon Web Services ブログ

コンテナイメージ内でLambda レイヤーと拡張機能を動作させる | Amazon Web Services ブログ

AWS Lambdaでコンテナイメージを動かしたときに踏んだ初歩的な罠 — HACK The Nikkei

AWS Lambda + Docker + TensorFlowを使ってサクッと推論APIをつくる - aptpod Tech Blog

AWS Lambda with Container Image で MeCab (NEologd) を動かしてみたCCT-recruit | CCT-recruit

  • 上記全部コンテナイメージネタ
  • Mecabを同梱したり、TensorFlowで作ったモデルを同梱したり

E-JAWSカンファレンス2021にて講演しました|IM Digital Lab(アイムデジタルラボ)|note

  • 先日開催されたE-JAWSの年次カンファレンスでの三越伊勢丹さんの事例
  • 個人的に胸アツ

Jets触ってみた(ruby serverless) - Qiita

Serverless Framework Pluginで行うLambdaテスト

結婚式のエンドロールを当日作った話

  • 結婚式のエンドロールムービーを当日その場で集めた写真で当日作った話。おもしろ
  • Lambda使いつつ動画生成はEC2で
  • Native Extension系はLambda使うよりEC2やコンテナでやったほうが楽。今ならコンテナイメージ使えるかもしれないけどCPUパワーも必要だし

BBC Onlineがサーバレス化

  • フルLambdaだそう

Serverless Laravel を振り返る※お金のお話もあるよ! - Qiita

  • 以前紹介したサーバーレスLAMPスタックな感じでLaravelをサーバーレスで

ALBリスナールールとLambdaだけでメンテナンスページへの切替が簡単にできる仕組みを作る | Developers.IO

  • ALBのバックエンドとしてLambda関数が使えるのでそれを利用
  • リスナールールの優先順位を切り替えるための処理もLambda関数で

API Gateway + Lambda + Rust で開発する (2021-01) - eagletmt's blog

  • Netlifyが作ってるRustのLambdaイメージであるnetlify_lambdaを利用

増えすぎたAWS Lambdaにどう対処するか 中国版ZOZOTOWNでの解消法 - ログミーTech

  • 約400個のLambda関数が存在

サーバーレスゆく年くる年 2020/2021

f:id:Keisuke69:20140815173612j:plain

本投稿はServerless Advent Calendar 2020の22日目です。

さらに、2020年12月23日の21時から開催予定のイベント(ライブストリーミング)で話す内容でもあります。もしお時間があればぜひこちらにもご参加ください。登録はこちら

はじめに

今年は新型コロナウィルスによるリアルイベントの開催が難しくなったこともあって、僕自身としてもいろいろと変化がありました。このイベント自体もその1つといえ、自分のペースで好き勝手にオンラインで配信するという新しい形態になりました。

ま、立場上、他のクラウド事業者のサービスに言及するのは難しかったりするのですがAWSのものだけでもボリューム的にお腹いっぱい感あるので自身のキャパ的にもちょうどいいのかもしれません。というわけで年内最後はゆく年くる年ってことで今年の総括ならびに来年の展望なんかを徒然なるままに書いていきます。ポエムです。ポジショントークと言われるかもですが公私混同気味にいきます。

さて、今年の冒頭にこのようなツイートをしました。

それは去年から今年にかけて発表されてきた数々のアップデートを踏まえた率直な感想でした。思えば2014年、AWSに入社した年のre:InventでAWS Lambdaが発表されてから今年で丸6年になります。当時、入社直後にこのサービスのコンセプトを知って興奮したことを今でも覚えていますし、僕のAWSJでの6年間はポジションややることは変わりつつもほぼサーバーレスとともに歩んだ6年間と言っても過言ではないです。

そんなサーバーレスの2020年を振り返るにあたって、各サービスの今年のアップデート数をカウントしてみました。なお、僕がサーバーレスといった場合の対象範囲はAWS Lambda、Amazon API GatewayAWS Step Functionsを中心としています。いろんな観点ではAmazon EventBridgeなどもあったりするのですが、一旦そのあたりは置いておいて。また、Amazon DynamoDBなどは一緒に使うことの多い関連サービスって位置づけです、僕の中では。

さて、早速数えてみます。What's Newでアナウンスされた件数です。多少の漏れはあるかもしれません。

サービス アップデート数
AWS Lambda 40
Amazon API Gateway 13
AWS Step Functions 14

こうやってみると数としてもLambdaが圧倒的ですね。というわけで、2020年の発表の中で個人的に熱い発表ベスト3をLambdaから、API GatewayとStep Functionsは1つずつ選んで紹介したいと思います。

AWS Lambdaのアップデート3選

Lambdaに関しては40もアップデートがあったので、3個選びたいと思います。あくまでも僕個人の意見ですからね。

Lambda Extensions

AWS Lambda Extensions: a new way to integrate Lambda with operational tools (in preview)

1つ目はLambda Extensionsですね。これはサードパーティを含む各種運用ツールを統合しやすくなったというものです。既に使えるようになってるサードパーティには有名どころ、例えばNew Relicとかが使えるようになってますね。これの何が嬉しいかっていうと、今回を機にこれまでは難しかったLambdaのライフサイクルに外部から関与することが可能になりました。ここで言っている『外部』というのはAWS以外のデベロッパーが、という意味です。

といってもよくわからないかと思うのでもう少しお話すると、まずLambda Extensionsと一言でいっても2つの種類があります。External ExtensionsとInternal Extensionsですね。ExternalのほうはLambdaファンクションのランタイムと同じ実行環境内で動く別プロセスとして実行できます。Internalの方は同じプロセスで実行されます。

一番嬉しいのはやはりExternalのほうではないかと思います。これってつまりコンテナでいうところのサイドカー的なアプローチが可能ってことなんですね。これは特にモニタリング用途で有用かと思います。今までサーバでアプリケーションを実行している場合のモニタリングはエージェントを入れることが多かったかと思います。これがコンテナであればサイドカーだったりしたわけですがこれと同じようなことがLambdaでもできるようになったということですね。

これまではLambdaの実行環境にアプローチできるのはAWSのサービス側しかなかったのでこれを個人の開発者含むサードパーティができるようになったのはとても大きいと思います。ログを自分の好きなところに出すようにできたり。

でも、多くの人はそんなにその恩恵を受けることは今すぐにはないかもしれませんw ただし、各種モニタリングサービスなどが対応していくことが期待されるのでサーバーレスアプリケーションのエコシステムの拡充という観点ではとても大きいアップデートだと思っています。

また、Internalの方はExternalとは異なりLambdaファンクションが実行されるランタイムプロセスそのものにアプローチすることが可能なのでランタイムの起動処理をカスタマイズしたりってことが可能になります。

PrivateLinkサポート

AWS Lambda now supports AWS PrivateLink

2つ目はPrivateLinkのサポートです。

もともと、AWS LambdaではVPC内にあるリソースに対してアクセスすることは可能です。ですが、この点について誤解している人がたまにいます。LambdaファンクションからVPC内のリソースにアクセスできるようにしてもファンクションの実行自体はユーザのVPCではなくサービスのVPCで行われます。

この場合、Lambdaファンクションの呼び出しAPIは通常Publicに公開されているInvoke API越しに行う必要があります。つまりLambdaファンクションの呼び出しはインターネット越しに行う必要があったんですね。

それがこの発表にあるPrivateLinkを使うことでVPC内からインターネットを介さずにLambdaファンクションを呼び出せるようになったということです。

これまで非常に厳しいセキュリティ要件をクリアする必要があるシステムでは採用が難しいケースも少なからずあったのですが、このアップデートでまた1つ大きな壁をクリアできるようになったと言えます。特にセキュリティ要件の中には意味があるないといった理屈ではなく、問答無用で対応する必要があったりするものも多々あると思うので…。

課金単位が1msに!

AWS Lambda changes duration billing granularity from 100ms down to 1ms

そして3つ目はつい先日発表のあった課金単位が1ms単位になったというものですね。

2020年のre:Inventではメモリ10GBまで対応したとか6vCPUまで使えるようになったとか、コンテナイメージでパッケージングしてデプロイできるようになったとか数々のアップデートがあったわけですが個人的に一番熱いのはこれです。

1msですよ、1ms。

これまでの100ms単位はまだ改善の余地があると思っていましたが、現状ではこれ以下にするのは意味がないレベルかと思います。

これまでもコードの実行時間のみ、しかも100ms単位なのでコストの効率がいいって話をしてきましたが1ms単位になってこの効率はさらに高まりました。むしろ、アプリケーション側の無駄がこれまで以上にコストに跳ね返るようになったと言ってもいいかもしれません。

恐ろしい時代になったものです。

Amazon API Gateway

API Gatewayは2020年のアップデートが13個だけなので1つだけ選びたいと思います。1つだけ選ぶならこれしかないです。

Amazon API Gateway now supports mutual TLS authentication

mutual TLS (mTLS) のサポートですね。

実はこの機能、今だから言えますがもう数年前から主に金融系のお客様からは強くご要望いただいていたのですがいろんな事情でなかなかサポートされたなかったものなので喜びもひとしおです。

内容的にはいわゆるmTLSをサポートするってだけなのですが、これによりクライアント認証が可能になるんですね。

クライアント認証ってのはつまり、サーバ側からみて接続してくる側(=クライアント)の信頼性を保証できるようになったということです。

ヨーロッパ方面でのOpen Banking APIやPSD2といった仕様やOpenID FoundationのFinancial APIでは必要とされているのでこれらに準拠するAPIを用意するにあたり必須機能だったのです。

いやー、めでたい。

AWS Step Functions

さて、Step Functionsというと最近にわかに注目度が上がっていると感じます。というのもLambdaだけでは大きく複雑なワークロードの実現は難しかったり、手間だったりするのですがそれらをオーケストレーションしたりするのに使われています。もちろんLambdaだけでなく他のサービスもTaskとして使用できます。

そんなStep Functionsの今年の1つを選ぶにあたっては結構悩みました。というのもぶっちゃけ目を引く大きなアップデートというのはなかったので…。というわけでその中でも今回はこれを選びたいと思います。

AWS Step Functions now supports Amazon API Gateway service integration

これはStep FunctionsからAPI Gatewayで作ったAPIを呼び出せるというものですね。

何が嬉しいかっていうとAPI Gatewayで公開されたMicroserviceを呼び出すようなワークフローを実現しやすくなったということです。例えばSagaパターンをStep Functionsで実装することってあると思いますがそういう場合ですね。

あとはワークフローの中で外部APIをコールしたい場合にこれまではLambda経由でコールする必要があったわけですが、シンプルなものであればこれもAPI Gateway経由でコールすることができるようになります。つまりLambdaファンクションの実装と実行時間課金が不要になるのです。

2020年のサーバーレス

今年は個人的にサーバーレスのスペシャリスト兼任をやめたので仕事の観点では割と自由にサーバーレスに取り組めました。

そんな僕の観点からは冒頭のツイートの通り今年はやはりサーバーレス元年だったかなと思います。昨年末はリリース依頼の大きな成長を遂げた年で、そのうえで今年はより強みを増すためのアップデートが多かったかなと。今年はその拡張性を高めるようなアップデートとスペックの両面でのアップデートが目立ったなーという感じです。

これらが大きく現実世界のワークロードとして花開くのは恐らく来年だとも思っています。

また、今年はコロナ禍がきっかけではあったものの結果としてサーバーレス関連のコミュニティは盛り上がったのではないかと感じています。これはサーバーレスに限らないかもしれませんが…。

Serverless Meetupは6月以降はServerless Meetup Japan Virtualとして2週間に1回という高頻度で開催が行われています。これは昨年までと比べて大きな違いかと思います。

手前味噌ですが自分がやっているサーバーレスアンチパターン今昔物語というイベントも7月から月に1回くらいのペースでやれています。こちらはAWS Japan主催のイベントとは異なり完全に個人の趣味なのでちょっと変わった切り口でもできているかと思っております。

ちなみに2019年はLambdaのアップデートは20個だったので年を経るにつれて頻度が下がるどころか2020年は倍増してるってのも興味深いですね。

2021年のサーバーレス

ロードマップ的なところはもちろん置いておいたとして、もっとフロントエンドエンジニアにもサーバーレスが広がってほしいなと思っています。

自分自身としても今年はサーバーレススペシャリストではなくなったこともあり、当初は改めてちゃんとKubernetesに向き合ってみようと思ったもののなぜか夢中になれず。一方で最近はその進化のスピードもどんどんあげているフロントエンド(というかJava Scriptを中心としたフロントエンドWeb界隈)に未来を感じています。

なお、現状ではサーバーレスに携わっている人っていうのは多くはサーバーサイドエンジニアです。これはサーバーレスで作るAPIに関してだけのアンケートですが、総得票291票の55%超がサーバーサイドエンジニアで今までの延長で使うようになったという回答でした。

次点がインフラの人ですね。これはシステム間のインテグレーションなどをもしかしたらインフラエンジニアがやるようになったのかもしれない。このあたりは深堀りしていないので想像ですが。

この結果自体は僕のTwitterでのアンケートなのでもちろんバイアスもかかっているとは思います。でも現状をある程度示しているのかなとも思います。

その上で、僕としてはフロントエンドの人こそサーバーレスを活用できると嬉しいことが多いと思っています。理由は単にフロントエンドといってもAPIがいることが多いわけで、そこのAPIを作るにはサーバーサイドが必要になるんだけどアプリ的にはJS繋がりでNode.jsを使うにしてもそのサーバを用意したり、スケーラビリティや可用性を確保したりってのはやはりフロントエンドエンジニアは負担が大きい。

また、フロントエンドの文脈で言うとServer Side Renderingなんかはやはりサーバが必要になってくるわけでこれも辛い。

もちろんサーバをお守りする専任の人がいればいいんだけどコスト的にそうもいかないケースであったり、自分たちだけでスピード感もってやってしまいたいケースもあると思います。

そういったときにサーバーレスを活用できるととてもいい世界が広がっているように思っています。

ただし、現状では手放しで喜べる状況にはまだまだなっていないと言えます。プラットフォーム的な制約も少なからずありますが、それ以上にDeveloper Experienceの観点でフロントエンドからはまだまだ使いづらいと感じています。特に各種ライブラリやフレームワークとの連携ですね。

このあたりはAWSのようなサーバーレスなサービス提供者自体が何らかの方法を提供するのか、Serverless Next.js Componentのようにサードパーティが橋渡し役になったほうがいいのかは正直わかりませんが個人的には後者のほうがいいと思っています。

プラットフォームはあくまでもプラットフォームとしてプリミティブなものがいいのではないかと。その上で周辺を取り囲むエコシステムがフロントエンド向けにも拡充していくといいなと願っています。こう書くとAmplifyの話が出てくると思いますが…。

というわけで2021年のサーバーレスもアップデートは続くと思いますが、サードパーティのエコシステムに期待です。

そして僕は『フロントエンド×サーバーレス』な感じでこのあたりの情報発信を続けていこうと思っています。

それではみなさん、これからもどうぞよろしく。

AWS Lambdaがコンテナをサポートしたのでちょっと試してみた

現在開催中のre:InventでAWS Lambdaがコンテナのサポートをするという発表がありましたね。

aws.amazon.com

というわけでちょっと試してみました。

素材はここにあげてあります。

github.com

流れとしては、

  1. 普通にファンクション書く
  2. Dockerfile作る
  3. イメージをビルドする
  4. イメージをECRにプッシュする
  5. Lambdaファンクションを作るときにECR上のイメージを指定する

という感じです。3,4のコマンド実行例はReadmeに記載しています。

イメージに関してはRuntime APIを実装する必要があるんですが、現在Lambdaがサポートしている各言語向けには既に用意されていてリリースされています。例えばNode.jsであればnpm install aws-lambda-ricでインストールできます。

加えて、これを組み込み済のベースイメージが既に用意されているのでこれを使うのが楽かもです。僕が試したサンプルも用意されているベースイメージを使ってます。きっとLambdaがサポートしていない言語の場合はカスタムランタイムを作るのと同じような感じでやればいいんじゃないかと思うんだけど確証はない。

サンプルではaxiosを使ってGoogleのトップページをリクエストしてその結果を出力しているだけです。超絶雑なコード。

"use strict";
const axios = require("axios");

exports.lambdaHandler = async (event, context, callback) => {
  const url = "https://google.com/";
  const res = await axios.get(url).then((res) =>
    callback(null, {
      statusCode: res.status,
      body: res.data,
      headers: {
        "Content-Type": "text/html",
      },
    })
  );
};

axiosはpackage.jsonに書いておいてイメージをビルドする際にnpm installしてます。ま、自前のコンテナイメージを用意できる利点はこのあたりにあるのかもしれない。

Dockerファイルはこんな感じ。

FROM amazon/aws-lambda-nodejs:12
COPY app.js package*.json ./
RUN npm install
CMD [ "app.lambdaHandler" ]

Runtime Interface Emulaterなるものもあるので自前でがっつりイメージ作る人は使うといいのかもしれない。

Lambdaファンクションの作成はこんな感じで。 f:id:Keisuke69:20201202050223p:plain

コンテナイメージを使う場合の選択が増えてるのでそれを選択して、先程ECRにプッシュしたイメージを指定するだけです。

作成してから、実行できるようになるまで少し時間がかかるようでその間はテスト実行のボタンが無効になってました。準備完了したらボタンが押せるように。というわけでテスト実行もできます。

f:id:Keisuke69:20201202050655p:plain

組み込みのコードエディタは当然のことながら使えませんでした。ま、コンテナイメージだしあたりまえよね。それ以外は普通のファンクションと同じ。ちなみに同じくre:InventでLambdaの課金単位がこれまでの100ms単位から1ms単位へと粒度が細かくなりました。

という感じですが、Dockerイメージがサポートされるからといって何でも自由にできるというよりは、あくまでもLambdaの実行モデルであるファンクションモデルはそのままにランタイムの自由度が増したって感じですね。

必要な人にはとってもいいエンハンスだと思いますが、過度な期待は禁物です。

追記:

これローカルでも簡単に実行できるのでローカルテストしたい場合にはいいかもですね。ローカル実行するには作ったイメージをdocker runでローカルで起動した上でLambdaのAPIlocalhostに対して実行するだけです。

docker run -p 3000:8080 lambda-container-support-sample:latest

こんな感じでローカルで起動して別ターミナルから以下のようにAPIをリクエストするだけです。

curl -XPOST "http://localhost:3000/2015-03-31/functions/function/invocations" -d '{}'
©Keisuke Nishitani, 2023   プライバシーポリシー