はじめにTIG真野です。 AWS SDK for Goを用いてAWS Lambdaを実装する際に、共通的に行いたいミドルウェア的な処理をデコレータで実装する方法を説明します。内容的には http.HandlerFunc に対してミドルウェアを作るのとほぼ同義です。 前提知識AWS SDK for GoでLambdaを実装するにあたり、関数ハンドラは複数のシグネチャを許容して、そのうち引数に context.Context を取るのは以下の4パターンです。この記事では便宜的に1~4で採番してパターン名を入れています // No.1 プレーンパターン func (context.Context) error // No2 TInパターン func (context.Context, TIn) error // No3 TOutパターン func (context.Context) (TOut,
![GoでAWS Lambdaのミドルウェアをジェネリクスを用いて実装する | フューチャー技術ブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/0a28274c438b59c4091abbd86710d2eb916f28e6/height=288;version=1;width=512/https%3A%2F%2Ffuture-architect.github.io%2Fimages%2F20240329a%2Fgodecorator.drawio.png)