AWS CDKでデプロイしたスタックが今回と前回でどのような違いがあるのか確認する方法を解説します。
前提条件
- AWS CDK ver2系
差分を確認する方法
差分を確認するには次のコマンドを実行すれればOKです。このコマンドはデプロイ前(cdk deploy)に実行することができます。
$ cdk diff
このコマンドは、前回デプロイしたスタックと今回デプロイするスタックの差分を表示してくれます。
差分の表示例
最初に、次のようにほぼデフォルト設定のLambdaをデプロイしていたとします。
lib/sample_stack.ts
import * as cdk from "aws-cdk-lib/core";
import { Construct } from "constructs";
import * as lambda from "aws-cdk-lib/aws-lambda";
export class CdkIntroStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new lambda.Function(this, "SampleFunction", {
runtime: lambda.Runtime.NODEJS_24_X,
handler: "index.handler",
code: lambda.Code.fromAsset("lambda")
});
}
}
次に、タイムアウト時間をデフォルトの3秒から延長して10秒に変更したとします。
lib/sample_stack.ts
import * as cdk from "aws-cdk-lib/core";
import { Construct } from "constructs";
import * as lambda from "aws-cdk-lib/aws-lambda";
export class CdkIntroStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new lambda.Function(this, "SampleFunction", {
runtime: lambda.Runtime.NODEJS_24_X,
handler: "index.handler",
code: lambda.Code.fromAsset("lambda"),
timeout: cdk.Duration.seconds(10) // タイムアウト時間を延長
});
}
}
この状態でcdk diffを実行すると、次のように差分が表示されます。
$ cdk diff
start: Building CdkIntroStack Template
Stack SampleStack
Resources
[~] AWS::Lambda::Function ******
└─ [+] Timeout
└─ 10
✨ Number of stacks with differences: 1
どういう差分があるのかは、サービスの接頭辞で区別できます。
| 接頭辞 | 変更内容 |
|---|---|
| [+] | 追加 |
| [-] | 削除 |
| [~] | 変更 |
上記の例では、タイムアウト時間が追加([+])され、Lambdaが変更([~])されることがわかります。
まとめ
AWS CDKでスタックの差分を確認する方法をまとめました。デプロイする前には、差分を確認して修正内容が正しいことを確認するようにしたいです。