Back to Releases
v2.175.0 2025年1月10日

AWS CDK v2.175.0 リリース解説

ECSのフォルトインジェクション機能、KMSの署名・検証権限付与、CLIの改善など、安全性と利便性が向上したリリースです。

ecskmscliekscloudwatchs3objectlambdaapprunner

概要

AWS CDK v2.175.0では、ECSのフォルトインジェクション機能のサポート、KMSの署名・検証権限付与メソッドの追加、CLIの改善など、安全性と開発体験を向上させる複数の新機能が導入されました。また、ECSサービスのデフォルト設定に関する重要な警告機能も追加されています。

新機能

ECS: フォルトインジェクション機能のサポート

ECSサービスでAWS Fault Injection Simulator(FIS)を使用できるようにするenableFaultInjectionプロパティが追加されました。この機能により、カオスエンジニアリングテストでECSタスクの障害シミュレーションが可能になります。

使用例:

import * as ecs from 'aws-cdk-lib/aws-ecs';

const service = new ecs.FargateService(this, 'MyService', {
  cluster: cluster,
  taskDefinition: taskDefinition,
  // フォルトインジェクションを有効化
  enableFaultInjection: true,  // FISでのカオステストを可能にする
});

PR: #32598

ECS: デフォルトのminHealthyPercentに関する警告

ECSサービスでminHealthyPercentを明示的に指定しない場合、CDKはCloudFormationのデフォルト(100%)を50%にオーバーライドします。これにより、デプロイメントやFargateメンテナンス中に実行中のタスク数が最大50%まで減少する可能性があります。

v2.175.0から、この挙動が意図的でない場合に問題を引き起こす可能性があるため、警告が表示されるようになりました。

警告が表示されるケース:

  • BaseServiceminHealthyPercentundefinedの場合: @aws-cdk/aws-ecs:minHealthyPercent
  • Ec2Serviceでデーモンモード(daemon: true)かつminHealthyPercentundefinedの場合: @aws-cdk/aws-ecs:minHealthyPercentDaemon
  • ExternalServiceminHealthyPercentundefinedの場合: @aws-cdk/aws-ecs:minHealthyPercentExternal

推奨される対応:

import * as ecs from 'aws-cdk-lib/aws-ecs';

const service = new ecs.FargateService(this, 'MyService', {
  cluster: cluster,
  taskDefinition: taskDefinition,
  // 一貫した負荷処理が必要な場合(ALB経由のWebトラフィックなど)
  minHealthyPercent: 100,  // デプロイ中も全タスクを維持
  maxHealthyPercent: 200,  // ローリングアップデートを可能にする
});

PR: #31738 関連Issue: #31705

KMS: 署名・検証権限付与メソッドの追加

KMSキーを使用した署名と検証操作のための新しい権限付与メソッドが追加されました。デジタル署名を必要とするアプリケーションで、より細かい権限管理が可能になります。

新しいメソッド:

  • grantSign(): kms:Sign権限を付与
  • grantVerify(): kms:Verify権限を付与
  • grantSignVerify(): kms:Signkms:Verifyの両方を付与

使用例:

import * as kms from 'aws-cdk-lib/aws-kms';
import * as lambda from 'aws-cdk-lib/aws-lambda';

// 非対称署名用のKMSキーを作成
const signingKey = new kms.Key(this, 'SigningKey', {
  keySpec: kms.KeySpec.ECC_NIST_P256,       // 楕円曲線暗号
  keyUsage: kms.KeyUsage.SIGN_VERIFY,       // 署名・検証用
});

// Lambda関数に署名権限のみを付与
const signerFunction = new lambda.Function(this, 'SignerFunction', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});
signingKey.grantSign(signerFunction);  // kms:Sign権限を付与

// 別のLambda関数に検証権限のみを付与
const verifierFunction = new lambda.Function(this, 'VerifierFunction', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});
signingKey.grantVerify(verifierFunction);  // kms:Verify権限を付与

// 両方の権限が必要な場合
const bothFunction = new lambda.Function(this, 'BothFunction', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});
signingKey.grantSignVerify(bothFunction);  // kms:Signとkms:Verifyを付与

PR: #32681 関連Issue: #23185

CLI: 存在しないスタックに対する警告

cdk destroyコマンドで存在しないスタック名を指定した場合、警告が表示されるようになりました。これにより、タイポや誤ったスタック名の指定を早期に検出できます。

動作:

  • 存在しないスタックが指定された場合、警告メッセージが表示される
  • Are you sure you want to delete:の確認メッセージは表示されない
  • コマンド自体は失敗せず、警告のみが出力される

PR: #32636 関連Issue: #32545, #27179

EKS: GPUインスタンスチェックの更新

EKS Nodegroupで使用されるGPUインスタンスタイプのチェックロジックが更新され、最新のGPUインスタンスタイプに対応しました。

PR: #32715 関連Issue: #31347

CloudFormationリソース定義の更新

L1 CloudFormationリソース定義が更新され、最新のAWSサービス機能に対応しました。

PR: #32768, #32755

Alphaモジュールの変更

S3 Object Lambda: S3アクセスポイントARNの公開 (alpha)

@aws-cdk/aws-s3objectlambda-alphaモジュールで、S3アクセスポイントのARNがプロパティとして公開されるようになりました。これにより、ARN文字列を手動で構築する必要がなくなり、実装が簡素化されます。

使用例:

import * as s3objectlambda from '@aws-cdk/aws-s3objectlambda-alpha';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as lambda from 'aws-cdk-lib/aws-lambda';

// S3 Object Lambda Access Pointを作成
const objectLambdaAccessPoint = new s3objectlambda.AccessPoint(this, 'MyObjectLambda', {
  bucket: bucket,
  handler: transformFunction,
  accessPointName: 'my-object-lambda-ap',
  supportsGetObject: true,
});

// ARNを直接取得可能に
const arn = objectLambdaAccessPoint.accessPointArn;  // 新しいプロパティ

// 他のリソースで使用
new s3.BucketPolicy(this, 'Policy', {
  bucket: bucket,
  // ARNを直接参照できる
});

PR: #32661 関連Issue: #31950

App Runner: ServiceクラスがIServiceを実装 (alpha)

@aws-cdk/aws-apprunner-alphaモジュールのServiceクラスがIServiceインターフェースを正しく実装するようになりました。これにより、型安全性が向上し、他のコンストラクトとの相互運用性が改善されます。

PR: #32771 関連Issue: #32745

バグ修正

CLI: 環境変数CI=falseが設定できない問題の修正

環境変数CI=falseを設定しても正しく認識されない問題が修正されました。

PR: #32749

CLI: requiresRefresh関数がnullを尊重しない問題の修正

CLIのrequiresRefresh関数がnull値を正しく処理しない問題が修正されました。

PR: #32666 関連Issue: #32653

CloudWatch: メトリクスのregionとaccountIdのレンダリング修正

メトリクスに直接設定されたregionaccountIdが正しくレンダリングされるようになりました。

PR: #32325 関連Issue: #28731

ECS: canContainersAccessInstanceRoleの非推奨化

canContainersAccessInstanceRole=falseの設定で使用されるLinuxコマンドが古くなっていたため、更新されました。また、このプロパティは非推奨(deprecated)としてマークされました。

PR: #32763 関連Issue: #28518

@aws-cdk/integ-runner-alphaENOENTエラーが発生する問題が修正されました。

PR: #32750

まとめ

AWS CDK v2.175.0は、安全性と開発体験の向上に焦点を当てたリリースです。特に、ECSサービスのデフォルト設定に関する警告機能は、本番環境での予期しない問題を防ぐのに役立ちます。KMSの署名・検証権限付与メソッドの追加により、よりきめ細かい権限管理が可能になり、セキュリティベストプラクティスの実装が容易になりました。

Alphaモジュールでは、S3 Object LambdaとApp Runnerの改善により、これらのサービスの使い勝手が向上しています。

既存のCDKプロジェクトをお持ちの場合は、ECSサービスのminHealthyPercent設定を確認し、必要に応じて明示的に設定することをお勧めします。