cdk diffやsynthをした時に無限にbootstrapのエラーが出るのでcdkの処理内容や問題の切り分けなどをする
現在社内のリファクタ運動(通称: 祭り)でcdkのバージョンが古いプロダクトについて一斉にcdkのバージョンをv1からv2にアップグレードしている。
その際に下記のようなエラーが複数のプロダクトで出ており困っている。
Other Changes
[+] Unknown Rules: {"CheckBootstrapVersion":{"Assertions":[{"Assert":{"Fn::Not":[{"Fn::Contains":[["1","2","3","4","5"],{"Ref":"BootstrapVersion"}]}]},"AssertDescription":"CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."}]}}
cdk bootstrap
を打てば治るかなと思ったのですが治らず。
cdk synth
cfnテンプレートを読むと下記のようになっていた。
Parameters:
BootstrapVersion:
Type: AWS::SSM::Parameter::Value<String>
Default: /cdk-bootstrap/hnb659fds/version
Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]
Rules:
CheckBootstrapVersion:
Assertions:
- Assert:
Fn::Not:
- Fn::Contains:
- - "1"
- "2"
- "3"
- "4"
- "5"
- Ref: BootstrapVersion
AssertDescription: CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.
CheckBootstrapVersionに渡される値が1~5が含まれていない場合エラーが出るというルールになっている。
https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/migrating-v2.html
awsのマイグレーションガイドを読むと、このCheckBootstrapVersionのruleはv2から追加されたものらしい。なおかつv1からv2に上げる時には必ず一回はcdk bootstrapを打つ必要があるとのこと。
ちなみに弊社のssmの下記のパラメーターには17が入っていた。 /cdk-bootstrap/hnb659fds/version
awsのドキュメント通り、下記の文はエラーではなくルールの追加の変更だけなので気にしなくて良い。v2に上げると自動的に入るassertであってdiffが出るのはそれはそう。
Other Changes
[+] Unknown Rules: {"CheckBootstrapVersion":{"Assertions":[{"Assert":{"Fn::Not":[{"Fn::Contains":[["1","2","3","4","5"],{"Ref":"BootstrapVersion"}]}]},"AssertDescription":"CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."}]}}
逆にこういうエラーが出た場合、cdkのバージョンが低いのでcdk bootstrapをするなり、ssmパラメータの中身を見て適切な対応をするなどする必要がある。(まぁcdk bootstrapすれば自動的に上がるはずだけど)
$ cdk diff
Could not assume arn:aws:iam::756312589703:role/cdk-hnb659fds-lookup-role-756312589703-ap-northeast-1, proceeding anyway.
(To get rid of this warning, please upgrade to bootstrap version >= 8)
下記のdiffの詳細や影響があるのか、ECRの指定の仕方やscheduleの指定方法などでwarningが出るようになったのでそれの解決法やなぜ出たのかなどについてやる気があれば書きたい。
[~] AWS::ElasticLoadBalancingV2::TargetGroup m2m-users-dev-target-group-id m2musersdevtargetgroupid16970582
└─ [+] TargetGroupAttributes
└─ [{"Key":"stickiness.enabled","Value":"false"}]
[~] AWS::ElasticLoadBalancingV2::LoadBalancer m2m-users-dev-alb-id m2musersdevalbidD2ACCEAB
└─ [+] LoadBalancerAttributes
└─ [{"Key":"deletion_protection.enabled","Value":"false"}]