🌱

マルチアカウント運用をしているプロジェクトのCDKのバージョンアップの際にValidationErrorが出た時の対応メモ

に公開

課題

aws-cdk 2.118.0

aws-cdk 2.221.1

aws-cdk-lib 2.118.0

aws-cdk-lib 2.221.1
への更新の際に

ValidationError: Cannot use resource '...' in a cross-environment fashion, the resource's physical name must be explicit set or use PhysicalName.GENERATE_IF_NEEDED

が発生

synthのタイミングでエラーが発生する

原因(推測)

おそらく、2.222.0 で内部バリデーションが厳格化されたものだと思われます。cdkのリポジトリをみても分かりませんでしたが。

このようなものだと推測しています。

対策

エラーメッセージの通り
roleName: cdk.PhysicalName.GENERATE_IF_NEEDED
を入れると解決

PhysicalName.GENERATE_IF_NEEDED は
同一環境なら CloudFormation に名前を任せる
クロス環境参照が必要な場合だけ CDK が物理名を生成して固定するようです。

参考にした記事
https://zenn.dev/mjxo/articles/a6c8fb9b43eafa

リファレンス
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.PhysicalName.html#static-generate_if_needed

Fusic 技術ブログ

Discussion