BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWSがプレビュー版で.NET Annotations Lambdaフレームワークをリリース

AWSがプレビュー版で.NET Annotations Lambdaフレームワークをリリース

ブックマーク

原文(投稿日:2022/04/27)へのリンク

最近、AWSはLambda Annotationsと呼ばれる.NET 6 Lambda関数を作成するための新しいフレームワークを発表した。このフレームワークは、昨年2月にリリースされたLambda用の.NET6マネージドランタイムと一緒に構築されましたものである。

Lambda Annotationsは、.NET Lambda関数を作成するためのプログラミングモデルである。これにより、Lambdaプログラミングモデルとより慣用的なプログラミングモデルの間のギャップを埋めることができる。このプログラミングモデルでは、idiomatic.NETコーディングパターンを使うことができ、C#ソースジェネレーターが使われる。

AWS Developer Toolsのブログ投稿で、Amazon.comのソフトウェア開発者エンジニアのNorm Johanson氏は次のように説明している。

Annotationsフレームワークによって、C#でLambdaを記述する体験をより自然に感じることができるようになります。また、コードで実装されているLambda関数をプロジェクトのCloudFormationテンプレートに同期することもできます。つまり、関数ハンドラー文字列がCloudFormationテンプレートで正しく設定されていないことを心配する必要はありません。また、CloudFormation JSONやYAMLテンプレートを更新するコーディングの最中にフォーカスしている箇所を見失うこともありません。

Johanson氏はまた、C#コンパイラを使ってプロジェクトを作成すると、AnnotationsフレームワークによってLambda関数を示す.NET Lambdaプロパティが検索され、変換処理をするビルドにコードが追加されると述べている。また、生成された情報には、新しい関数ハンドラー文字列が含まれており、その情報はCloudFormationテンプレートに同期される。さらに、Johanson氏は、C#ソースジェネレーターを使うことで、コンパイル時に変換レイヤーを作成し、実行時のリフレクションコードを回避できると述べている。

開発者は、AWS Toolkit for Visual Studio 2022で新しいフレームワークを使用できる。Microsoft統合開発環境(IDE)を使うと、利用可能なAWSサーバーレスアプリケーションプロジェクトテンプレートを使ってプロジェクトを作成できる。これにより、1つ以上のLambda関数を記述し、それを単一のデプロイユニットとしてAWSにデプロイできるようになる。その際、AWS CloudFormationとその他の必要なAWSリソースが使われる。


出典: https://aws.amazon.com/blogs/developer/introducing-net-annotations-lambda-framework-preview/

プロジェクトが作成される際に、Amazon.Lambda.Annotations NuGetパッケージとの依存関係ができる。そのパッケージには、Lambdaコードにアノテーションを付けるために使われる.NETプロパティと、翻訳コードを生成するC#ソースジェネレーターが含まれる。さらに、Annotationsフレームワークを使うと、LambdaStartup属性を使ってLambda関数の依存性注入を簡単に設定できる。

公式の.NET on AWS twitterハンドラーは、ツイートで次のように述べている。

これで、通常のAWS Lambdaプログラムモデルをより単純なバージョンに置き換えて、ビジネスロジックに集中することができる。

このフレームワークはaws/aws-lambda-dotnet GitHubリポジトリで開発されている。

作者について

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT