WAF の再作成がサポートされていない
バグの説明 既存で WAF の ACL がある状態だと、デプロイに失敗します。
再現手順 1, WAF に ACL が存在する状態 2, デプロイ(npm -w packages/cdk run cdk deploy -- --all) 3, カスタムリソース CrossRegionExportWriter で以下のエラー
CloudFrontWafStack | 2/5 | 6:22:22 AM | UPDATE_FAILED | Custom::CrossRegionExportWriter | ExportsWriterapnortheast12334E1B8/Resource/Default (ExportsWriterapnortheast12334E1B81D43DF3F) Received response status [FAILED] from custom resource. Message returned: Error: Some exports have changed!
/cdk/exports/GenerativeAiUseCasesStack/CloudFrontWafStackuseast1FnGetAttWebAclCloudFrontWafStackWebAclWebAclCloudFrontWafStackAC643995Arn68A112D4
at h (/var/task/index.js:1:837)
at Runtime.handler (/var/task/__entrypoint__.js:1:958)
at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1173:29) (RequestId: 0f995a33-bc87-4ea3-8238-617c74967982)
想定される動作 CrossRegionExportWriter で作成される以下の Lambda 関数(CloudFrontWafStack-CustomCrossRegionExportWriterCu-xxxxx)の index.js で、Some exports have changed! に分岐しており、WAF の再作成がサポートされていない。
function h(s){let t=s.ResourceProperties.WriterProps,r=t.exports,e=new l.SSM({region:t.region});try{switch(s.RequestType){case"Create":console.info(`Creating new SSM Parameter exports in region ${t.region}`),await i(e,r),await u(e,r);return;case"Update":let n=s.OldResourceProperties.WriterProps.exports,c=x(r,n),p=C(n,r);if(p.length>0)throw new Error(`Some exports have changed!
状況の詳細を教えてください。「既存で WAF の ACL がある状態」というのが何を指すのか読み取れず、申し訳ございません。
- 初期状態はどのような状態でしょうか?
- そこから何をしようとされましたか?
初期状態はどのような状態でしょうか? → GenU 2.0 をデプロイ済みの環境 → CloudFormation の WAF スタックで ACL にドリフトが発生していたため解消しました (IP Set に手動で IP アドレスを追加していたため、コードに合わせて IP アドレスを削除した) そこから何をしようとされましたか? → その状態で GenU 3.0 のデプロイを行いました
こちらですが私も同じ状況になりましたので共有させていただきます。
根本的な原因としては
common-web-acl.tsの143行目からのwebAclのnameがWebAcl${id}からWebAcl-${suffix}に変更されたことによってWebAclが新規作成(置き換え)され、CrossRegionExportWriterでのエラーになっているものと思われます。
私も同じ状況が発生しましたので、ご報告させていただきます。