動的OGPをS3+Cloudfront+Lambda@Edgeの構成でcdk v2を使って実現しようとしたときにv1のCDKToolkitが邪魔をしたメモ

## 概要

[VueのSPAでの動的OGPをS3+Cloudfront+Lambda@Edgeの構成でcdkを使って実現したメモ](https://qiita.com/hibohiboo/items/244dfb4eec18be1cc285)を参考に、cdk v2でlambda@edgeをデプロイしようとしたら失敗した。
v1で作成した、`us-east-1`リージョンの`CDKToolkit`スタックを消して(ロールとS3とスタックは手動削除）再度bootstrapをしたら動作することを確認できた。

[ソース](https://github.com/hibohiboo/kartagraph/blob/bd4815f261faa859d9cd616a9e96e16dac9762c7/cdk/lib/cdk-stack.ts)

今回作成した経路。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/8d8eedbb-34a2-fa0d-5ce0-33d3de4a961e.png)


## エラー内容

```
current credentials could not be used to assume 'arn:aws:iam::■:role/cdk-■-deploy-role-■-us-east-1', but are for the right account. Proceeding anyway.
aws-cartagraph-stack: building assets...

[0%] start: Building ■:■-ap-northeast-1

aws-cartagraph-stack: assets built


 ❌ Building assets failed: Error: Building Assets Failed: Error: edge-lambda-stack-■:
 SSM parameter /cdk-bootstrap/■/version not found.
 Has the environment been bootstrapped? 
Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
 
Building Assets Failed: Error: edge-lambda-stack-■: SSM parameter /cdk-bootstrap/■/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' 
(see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
```

## 対応1 bootstrapを実行してみる

`prease run 'cdk bootstrap'`と言っているので、試してみる。

```
$npx cdk bootstrap --profile produser 
 ⏳  Bootstrapping environment aws://■/ap-northeast-1...
 ⏳  Bootstrapping environment aws://■/us-east-1...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
Switching from  to undefined as permissions boundary
 ✅  Environment aws://■/ap-northeast-1 bootstrapped (no changes).
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)

CDKToolkit |  0/13 | 21:22:30 | CREATE_FAILED        | AWS::IAM::Role          | LookupRole cdk-■-lookup-role-■-us-east-1 already exists

Failed resources:
CDKToolkit | 21:22:30 | CREATE_FAILED        | AWS::IAM::Role          | LookupRole cdk-■-lookup-role-537869083368-us-east-1 already exists
 ❌  Environment aws://■/us-east-1 failed bootstrapping: 
Error: The stack named CDKToolkit failed to deploy: 
UPDATE_ROLLBACK_COMPLETE: cdk-■-lookup-role-■-us-east-1 already exists
```

## 調査 - CDKToolkitStack(us-east-1)の削除
あまり有力な情報見つからず。
おそらく、cdk v1 で作った `CDKToolkit`スタックが邪魔をしているのだと思う。

バージニア北部リージョンのCloudFormationを確認。下記の状態となっていた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/12be5fd2-b94b-56e3-02c8-48fd77294775.png)

一度、削除してみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/1d543187-f867-6be5-c5d2-8d52bab6ac1e.png)

削除に失敗。S3を消すのにエラーになった模様。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/d2c7bd33-a632-0c56-bb30-5cc1525e335f.png)

上記の警告に従い、S3(`cdk-hnb659fds-assets-■-us-east-1`)を削除対象からはずしてみる。

削除できた。

`cdk-■-lookup-role-537869083368-us-east-1 already exists` と言われているので、こちらも消してみる。

この状態で再度bootstrapをするも、バケットが存在するエラーで落ちた。

`cdk-hnb659fds-assets-■-us-east-1`のバケットも手動削除する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/40b9cd9b-55a0-ea4d-7849-6f2350eefe25.png)


## 再度 bootstrap

`us-east-1`のbootstarapがようやく完了。

## 再度デプロイ

デプロイに成功。


## 参考

[cdk - bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
[cdk - bootstrap 和訳](https://zenn.dev/yamatatsu/books/aws-cdk-documentation-jp/viewer/17-concepts-bootstrapping)

[CDK Bootstrapをカスタマイズしてみた](https://dev.classmethod.jp/articles/customize-bootstrap/)
[AWS CDK メモ: ブートストラップ処理を実行する (cdk bootstrap)](https://maku.blog/p/q7q8p6m/)