🌱
マルチアカウント運用をしているプロジェクトの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 が物理名を生成して固定するようです。
参考にした記事
リファレンス
Discussion