ServerlessのOSSに貢献しようとしている話

はじめに

MOSH では AWS Lambda を利用するサーバーレスアーキテクチャを採用しています。

また、サーバーレスアーキテクチャを実現するためのサーバーレス管理フレームワークである Serverless を利用しています。

今回はそんな MOSH を支えている Serverless へOSS貢献しようとしている話です!

issueを探す

大抵の OSS の issue には good first issue というラベルがあります。

これは初めてのコントリビュートに向いている issue につけられるラベルです。

Issues・serverless/serverless

今回は以下の issue にチャレンジします。

Enable LoggingConfig configuration on Lambda Functions #12264

2023年11月16日に AWS Lambda で、Lambda 関数のログの検索、フィルタリング、集計を容易にする新しいコントロールを新たに導入されました。 (AWS Lambda で、Lambda 関数のログの検索、フィルタリング、集計を容易にする新しいコントロールを新たに導入)

この issue はそれを Serverless で設定できるようにする issue になります。

本来は good first issue から探そうかなと思いましたが、このログ形式のカスタマイズは MOSH でも再現したいことでした。

現状 MOSH では Cloudwatch のログが Text 形式で出力されていますが、JSON のような構造化されているログだと分析が容易になったり何かと便利なので JSON 形式にしたかったのです。 そのため、この issue に取り組むことにより MOSH にも貢献ができると考えました。

実装の提案をする

good first issue のラベルついている issue の場合、既に対応方法が決まっていることが多いのですが、今回は実装方針自体が決まっていない (2023年11月29日 時点) ので提案をします。

https://github.com/serverless/serverless/issues/12264#issuecomment-1818290289

問題なさそうであればメンテナーよりアサインしてもらえると思います。

記事を書く前にプルリクエストがマージされるまでをできたら、記事も書きやすいなあと思ったのですが、そうもいかず・・・OSSなので気長にフィードバックを待ちます。

とはいえ、それだと記事がここで終わってしまうのは提案が採用される前提で実装だけ先にやりました。(もちろん提案した実装方針が異なるフィードバックをもらった場合は別途対応します。)

新機能ではありますが設定周りのサポートの実装なので、大体このあたりを修正すればよさそうなど目処もつきやすかったです。

プルリクエストを出す

実装が終わったらプルリクエストを出します。

OSSごとにテンプレートがある場合があるので気をつけましょう。

プルリクエストを出す前に貢献する際のドキュメントがあればそれを見ると良さそうです。

Serverless の場合は CONTRIBUTING.md がありました。

以下が、実際に今回出した(い)プルリクです。

本来は Serverless側のリポジトリ にプルリクを出しますが、前述のとおりまだ提案が受け入れられてないので自身のフォークしたブランチにプルリクを出しました。

https://github.com/ryy/serverless/pull/1

マージされる

実装したコードに対して、コメントがあれば対応しつつ、最終的に問題なく Approve をもらいマージされたら終わりです。 リリースを待ちましょう!

最後に

もし日頃利用しているライブラリで気になる部分などを見つけたりした場合、モンキーパッチなどで対応せずそれを issue にして OSS に貢献するのもいいかなと思います!

また、この取り組みを通じて、OSS に貢献すると同時に MOSH というプロダクトにも価値をもたらすことができました!