メインコンテンツまでスキップ

CDK の NOTICES についてざっと調べてみた

· 約4分
Taichiro Suzuki

CDK NOTICES とは?​

ここ に説明がありました。

CDK Notices are important messages regarding security vulnerabilities, regressions, and usage of unsupported versions. Relevant notices appear on every command by default.

cdk deploy などのコマンドを実行すると、このようなメッセージがでます。

NOTICES

21902 apigateway: Unable to serialize value as aws-cdk-lib.aws_apigateway.IModel

Overview: Users of CDK in any language other than TS/JS cannot use
values that return an instance of a deprecated class.

Affected versions: framework: >=2.41.0 <=2.43.0

More information at: https://github.com/aws/aws-cdk/issues/21902


If you don’t want to see a notice anymore, use "cdk acknowledge <id>". For example, "cdk acknowledge 21902".

CDK の NOTICES はいつから出るようになった?​

v2.14.0 に入っているこちらの対応 で導入されたようです。

CDK の NOTICES を消すには?​

  • Affected versions に書かれている通り、CDK のバージョンをアップデートするのが正攻法です。
  • CDK のバージョンを都合によってアップデートできない場合、cdk acknowledge <id> で消すこともできます。
  • CI で実行していて不要な場合などは --no-notices で非表示にすることも可能です。
  • プロジェクト単位で NOTICES 対応が不要な場合は、cdk.json に notices: false を追加することで消すこともできます。
ヒント

ちなみに NOTICES を明示的に表示する cdk notices というコマンドがあるのですが、cdk notices --no-notices を実行したところ、NOTICES は表示されませんでした。

一度消した NOTICES をもう一度出すためには?​

CDK の NOTICES は $HOME/.cdk/cache/notices.json に状態が保存されているようです。 よって、これまで acknowledge した NOTICES は全てこちらで管理されています。 該当する項目を消すことで、筆者の手元で NOTICES がもう一度表示されることが確認できました。

複数のプロジェクトを運用している場合は注意が必要​

CDK の NOTICES がユーザー単位で注目されていることに注意が必要です。

例えば、とあるプロジェクトには不要で、とあるプロジェクトには必要な NOTICES があった場合、不用意に cdk acknowledge をしてしまうと、必要なプロジェクトでも見えなくなります。 そのようなケースでは、根本原因である CDK のバージョンアップ、--no-notices フラグ、cdk.json の notices: false で対応するのが良いでしょう。

また、CDK のバージョンアップを行うと NOTICES が見えなくなりますが、実態としては自動的に cdk acknowledge されているようです。 つまり複数のプロジェクトに NOTICES がでていても、1 つのプロジェクトで対応すると見えなくなり、対応していないプロジェクトが放置される原因になります。 よって、CDK をアップデートする際は、同時に行うのが良いでしょう。