①
問題①
以前動作していたコードがエラーになるのは通常、AWS Construct ライブラリモジュールのバージョンが一致しない場合の症状です。
AWS Construct ライブラリを構成するすべてのモジュールは、一致しているセットとして提供されます。すべての AWS Construct ライブラリモジュールが同じバージョンであり、最新であることを確認すると、ほとんどのエラーフラグが解消されます。
解決策①
インストールされているすべての AWS Construct ライブラリモジュールのバージョンを確認するには、ターミナルウィンドウで npm outdated
コマンドを実行します。(古くなったバージョンのみを表示)
npm outdated
Package Current Wanted Latest Location Depended by
@aws-cdk/aws-apigateway 1.191.0 1.192.0 1.192.0 node_modules/@aws-cdk/aws-apigateway MyWidgetService
@aws-cdk/aws-lambda 1.191.0 1.192.0 1.192.0 node_modules/@aws-cdk/aws-lambda MyWidgetService
@aws-cdk/aws-s3 1.191.0 1.192.0 1.192.0 node_modules/@aws-cdk/aws-s3 MyWidgetService
npm update
コマンドを実行して、すべてのパッケージを最新バージョンに更新します。
npm update
②
問題②
cdk synth を実行すると、
--app is required either in command-line, in cdk.json or in ~/.cdk.json
と表示される。
cdk synth
****************************************************
*** Newer version of CDK is available [2.64.0] ***
*** Upgrade recommended (npm install -g aws-cdk) ***
****************************************************
--app is required either in command-line, in cdk.json or in ~/.cdk.json
解決策②
CDK プロジェクトのメインディレクトリでないところで、cdk synth を実行しているため、メインディレクトリに移動してから実行する。
cd sample-app
sample-app % cdk synth
③
問題③
cdk destroy コマンドを実行しても、デプロイされたリソースが削除されない。
解決策③
ユーザーデータを含むことができるリソースの場合、CDK は removalPolicy
プロパティを、デフォルトで RETAIN
に設定されます。
removalPolicy
プロパティを DESTROY
に変更すると、このプロパティを上書きし、cdk destroy コマンドを実行すると、削除されます。
削除プロセス中にリソースが削除されない場合、リソースを手動で削除する必要があります。
from aws_cdk import (
Stack,
aws_s3 as s3
)
from constructs import Construct
class MyWidgetServiceStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
bucket = s3.Bucket(self,"cdk-s3-multi-sample",
removal_policy = core.RemovalPolicy.DESTROY)