サードパーティプラグインでAmplify CDK オーバーライドが可能になりました


以前、Amplify CDK オーバーライドってどうなってるの?という記事で Amplify CDK オーバーライドがどう実装されているのか書きました。 その時、サードパーティプラグインがオーバーライドを実装できるようになっていないこともわかりました。 そして amplify-cli のリポジトリでサードパーティプラグインがオーバーライドを実装できるようにする機能リクエストの Issue も出しました。

Allow third-party plugins to support CDK overrides · Issue #9226 · aws-amplify/amplify-cli
Is this feature request related to a new or existing Amplify category? New category Is this related to another service? No response Describe the feature you'd like to request Now, amplify cli suppo...
Allow third-party plugins to support CDK overrides · Issue #9226 · aws-amplify/amplify-cli favicon https://github.com/aws-amplify/amplify-cli/issues/9226
Allow third-party plugins to support CDK overrides · Issue #9226 · aws-amplify/amplify-cli

後日、Pull Request を出しましたが、最近やっとそれがマージされamplify-cli@8.4.0としてリリースされたので概要を書きたいと思います。 Pull Request を作成してからマージまで 5 ヶ月くらいかかりました。。。

Allow 3rd-party plugin to CDK override by fossamagna · Pull Request #9601 · aws-amplify/amplify-cli
Description of changes Allow 3rd-party plugin to CDK override. Some restricted points to starts with @aws-amplify/amplify-category- literal changed to use package location in pluginInfo. Issue #, ...
Allow 3rd-party plugin to CDK override by fossamagna · Pull Request #9601 · aws-amplify/amplify-cli favicon https://github.com/aws-amplify/amplify-cli/pull/9601
Allow 3rd-party plugin to CDK override by fossamagna · Pull Request #9601 · aws-amplify/amplify-cli

何が変わったか?

以前の記事でも触れましたが、 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 オーバーライドの機能が提供できるようになりました。 実際にどう実装すると良いのかはまた別記事で紹介したいと思います。