サードパーティプラグインでAmplify CDK オーバーライドが可能になりました
以前、Amplify CDK オーバーライドってどうなってるの?という記事で Amplify CDK オーバーライドがどう実装されているのか書きました。 その時、サードパーティプラグインがオーバーライドを実装できるようになっていないこともわかりました。 そして amplify-cli のリポジトリでサードパーティプラグインがオーバーライドを実装できるようにする機能リクエストの Issue も出しました。
後日、Pull Request を出しましたが、最近やっとそれがマージされamplify-cli@8.4.0としてリリースされたので概要を書きたいと思います。 Pull Request を作成してからマージまで 5 ヶ月くらいかかりました。。。
何が変わったか?
以前の記事でも触れましたが、
Amplify CDK オーバーライドを使うとoverride.tsというファイルで CDK の API を利用して Amplify(の対象のカテゴリー)が提要する機能をオーバーライドできます。
override.tsに記述した内容はamplify pushを実行するとその内容が最終的に Cloud Formation のテンプレートとその入力パラメーターとなるparameters.jonsに変換されてデプロイされます。
以前はamplify pushの時に実行される Cloud Formation のテンプレートの生成の処理が@aws-amplifyのパッケージスコープに限定されていましたが、
今回の Pull Request がマージされてからは、amplify pushのライフサイクルで全てのカテゴリープラグインのtransformCategoryStack関数を呼び出してもらえるようになりました。
この関数を実装すれば公式プラグイン(amplify-category-apiなど)と同じ CDK オーバーライドの機能を提供できるようになりました。
ざっくりまとめると、以下のようになります。
amplify-cli から提供されるもの
transformCategoryStack関数を実装して amplify-cli が提供するライフサイクルをフックできるcli-inputs.jsonのバリデーション
amplify-cli から提供されないもの(プラグインが実装するもの)
override.tsのトランスパイル(override.jsの生成)override.jsの実行(Cfn テンプレートの生成)
まとめ
サードパーティプラグインでも CDK オーバーライドの機能が提供できるようになりました。 実際にどう実装すると良いのかはまた別記事で紹介したいと思います。