AWS CDK v2.199.0 がリリースされました。このバージョンでは、AppConfigのConfiguration Profile削除保護、ECS Fargateのヘルスチェック設定、EKS Addonの設定値サポート、EventBridgeのSNSターゲットでのIAMロールサポート、Step FunctionsとBedrockのモデルカスタマイズジョブ統合など、多数の新機能とバグ修正が含まれています。
新機能
AppConfig: Configuration Profileの削除保護 (#34418)
AppConfigのConfiguration Profileで削除保護がサポートされました。これまでEnvironmentのみで利用可能だった削除保護が、Configuration Profileでも設定できるようになりました。
対応する設定クラス:
HostedConfigurationProfileSourcedConfigurationProfile
import * as appconfig from 'aws-cdk-lib/aws-appconfig';
// Hosted Configuration Profileでの削除保護
const hostedProfile = new appconfig.HostedConfigurationProfile(this, 'MyHostedProfile', {
application: myApplication,
content: appconfig.ConfigurationContent.fromInlineText('my config content'),
// 新機能: Configuration Profileの削除保護を有効化
deletionProtectionCheck: appconfig.DeletionProtectionCheck.ACCOUNT, // アカウントレベルで削除保護
});
// Sourced Configuration Profileでの削除保護
const sourcedProfile = new appconfig.SourcedConfigurationProfile(this, 'MySourcedProfile', {
application: myApplication,
location: appconfig.ConfigurationSource.fromParameter(myParameter),
// 新機能: ACCOUNT_WITH_NOTIFICATION を指定すると削除時に通知を受け取る
deletionProtectionCheck: appconfig.DeletionProtectionCheck.ACCOUNT_WITH_NOTIFICATION,
});
利用可能なオプション:
DeletionProtectionCheck.ACCOUNT- アカウントレベルで削除保護を有効化DeletionProtectionCheck.ACCOUNT_WITH_NOTIFICATION- 削除時に通知を受け取る
ECS Patterns: Fargateサービスのヘルスチェックパーセンテージ設定 (#34516)
NetworkMultipleTargetGroupsFargateService に minHealthyPercent と maxHealthyPercent プロパティが追加され、デプロイ中のタスク数を細かく制御できるようになりました。
import * as ecsPatterns from 'aws-cdk-lib/aws-ecs-patterns';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as ecs from 'aws-cdk-lib/aws-ecs';
const vpc = new ec2.Vpc(this, 'VPC');
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
const loadBalancedService = new ecsPatterns.NetworkMultipleTargetGroupsFargateService(this, 'Service', {
cluster,
taskImageOptions: {
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
},
// 新機能: デプロイ中のタスク数を制御
minHealthyPercent: 50, // デプロイ中に最低50%のタスクを稼働
maxHealthyPercent: 200, // デプロイ中に最大200%のタスクまで起動可能(デフォルト: 200)
});
この設定により、デプロイ戦略を最適化し、ダウンタイムを最小限に抑えることができます。
EKS: Addonの設定値サポート (#34061)
EKS Addonで configurationValues プロパティがサポートされました。Addonの動作をカスタマイズするための設定値をJSON形式で指定できます。
import * as eks from 'aws-cdk-lib/aws-eks';
const cluster = new eks.Cluster(this, 'Cluster', {
version: eks.KubernetesVersion.V1_31,
});
// 新機能: Addonに設定値を指定
const addon = new eks.CfnAddon(this, 'VpcCniAddon', {
clusterName: cluster.clusterName,
addonName: 'vpc-cni',
// カスタム設定値をJSON形式で指定
configurationValues: JSON.stringify({
env: {
ENABLE_PREFIX_DELEGATION: 'true', // Prefix Delegationを有効化
WARM_PREFIX_TARGET: '1', // ウォームプレフィックス数
},
}),
});
Alpha版でも利用可能:
@aws-cdk/aws-eks-v2-alpha モジュールでも同様の機能が利用できます。
EventBridge: SNSターゲットでのIAMロール使用 (#34259)
EventBridgeの SnsTopic ターゲットで、IAMロールを使用した認可が選択できるようになりました。KMS暗号化されたSNSトピックへのメッセージ送信時の権限問題を解決します。
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as iam from 'aws-cdk-lib/aws-iam';
const topic = new sns.Topic(this, 'MyTopic');
const rule = new events.Rule(this, 'MyRule', {
eventPattern: {
source: ['aws.ec2'],
},
});
// デフォルトの動作(リソースベースポリシーを使用)
rule.addTarget(new targets.SnsTopic(topic));
// 新機能: IAMロールを使用した認可(KMS暗号化トピックで推奨)
rule.addTarget(new targets.SnsTopic(topic, {
authorizeUsingRole: true, // IAMロールを自動作成して使用
}));
// 新機能: カスタムIAMロールを指定
const customRole = new iam.Role(this, 'CustomRole', {
assumedBy: new iam.ServicePrincipal('events.amazonaws.com'),
});
rule.addTarget(new targets.SnsTopic(topic, {
role: customRole, // カスタムロールを使用
}));
メリット:
- KMS暗号化されたSNSトピックでのメッセージ送信が確実に動作
- EventBridgeターゲットのベストプラクティスに準拠
- 統一された権限ポリシー管理
Step Functions: Bedrockモデルカスタマイズジョブの統合 (#31913)
Step Functionsで、Bedrockのモデルカスタマイズジョブ(ファインチューニング)を実行できる新しいタスク統合が追加されました。
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';
import * as bedrock from 'aws-cdk-lib/aws-bedrock';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as kms from 'aws-cdk-lib/aws-kms';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const trainingBucket = new s3.Bucket(this, 'TrainingBucket');
const outputBucket = new s3.Bucket(this, 'OutputBucket');
const validationBucket = new s3.Bucket(this, 'ValidationBucket');
const kmsKey = new kms.Key(this, 'Key');
const vpc = new ec2.Vpc(this, 'VPC');
// Bedrockモデルカスタマイズジョブタスク
const customizationJob = new tasks.BedrockCreateModelCustomizationJob(this, 'CustomizeModel', {
baseModel: 'amazon.titan-text-express-v1', // ベースモデル
customizationType: tasks.CustomizationType.FINE_TUNING, // カスタマイズタイプ
customModelName: 'my-custom-model', // カスタムモデル名
jobName: 'my-customization-job', // ジョブ名
// トレーニングデータの場所
trainingDataS3Uri: trainingBucket.s3UrlForObject('training-data.jsonl'),
// 出力先
outputDataS3Uri: outputBucket.s3UrlForObject('output/'),
// オプション: 検証データ
validationDataS3Uri: [validationBucket.s3UrlForObject('validation-data.jsonl')],
// オプション: ハイパーパラメータ
hyperParameters: {
batchSize: '10',
learningRate: '0.0001',
epochs: '3',
},
// オプション: KMS暗号化キー
kmsKey,
// オプション: カスタムモデルのタグ
customModelTags: [
{ key: 'Environment', value: 'Production' },
{ key: 'Team', value: 'ML' },
],
// オプション: ジョブのタグ
jobTags: [
{ key: 'CostCenter', value: 'AI-Research' },
],
// オプション: VPC設定(プライベートサブネットで実行)
vpcConfig: {
securityGroups: [new ec2.SecurityGroup(this, 'SG', { vpc })],
subnets: vpc.isolatedSubnets,
},
// オプション: クライアントリクエストトークン(冪等性保証)
clientRequestToken: 'my-unique-token',
});
const stateMachine = new sfn.StateMachine(this, 'StateMachine', {
definitionBody: sfn.DefinitionBody.fromChainable(customizationJob),
});
ユースケース:
- 独自のデータセットでLLMをファインチューニング
- ドメイン特化型モデルの作成
- モデルのカスタマイズプロセスを自動化
CloudFormation: L1リソース定義の更新 (#34555)
CloudFormationのL1リソース定義が最新版に更新されました。新しいAWSサービスとプロパティがサポートされています。
バグ修正
Application Load Balancer: HTTP証明書の検証強化 (#34233)
Application Load Balancerのリスナーで、HTTPプロトコル使用時に証明書が設定されている場合にエラーを出すバリデーションが追加されました。
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
// これはエラーになる(HTTPプロトコルに証明書は不要)
const listener = alb.addListener('Listener', {
protocol: elbv2.ApplicationProtocol.HTTP, // HTTPプロトコル
certificates: [certificate], // 証明書を指定 -> エラー
});
この修正により、デプロイ前に設定ミスを検出できます。
RDS: Aurora MySQLバージョンのインポート/エクスポート判定修正 (#33564)
AuroraMysqlEngineVersion.of() メソッドで、バージョン文字列からインポート/エクスポート機能の利用可能性を判定するロジックが修正されました。
import * as rds from 'aws-cdk-lib/aws-rds';
// カスタムバージョンを指定
const engine = rds.DatabaseClusterEngine.auroraMysql({
version: rds.AuroraMysqlEngineVersion.of('8.0.mysql_aurora.3.05.2'),
});
// インポート/エクスポート機能の利用可能性が正しく判定されるようになった
破壊的変更(実験的機能)
VPC Lattice: プロパティの必須化
影響を受けるリソース:
CfnResourceConfiguration:nameとresourceConfigurationTypeプロパティが必須に変更CfnResourceGateway:name,subnetIds,vpcIdentifierプロパティが必須に変更
この変更は、CloudFormationの仕様変更に伴うものです。VPC Latticeを使用している場合は、該当プロパティを明示的に指定してください。
CloudFormation: L1リソースの破壊的変更
一部のL1リソース(CfnXxx)で、CloudFormationの仕様更新に伴う破壊的変更が含まれています。L1リソースを直接使用している場合は、各モジュールの変更ノートを確認してください。
Alphaモジュールの変更
このリリースには、Alphaモジュール(2.199.0-alpha.0)の変更も含まれています。Alphaモジュールは実験的機能を含み、互換性のない変更が行われる可能性があります。
まとめ
AWS CDK v2.199.0 は、AppConfigの削除保護、ECS Fargateのヘルスチェック設定、EKS Addonのカスタマイズ、EventBridgeのIAMロールサポート、Step FunctionsとBedrockの統合など、多数の新機能を提供しています。
特に注目すべき機能は以下の通りです:
- AppConfig Configuration Profile削除保護: 誤削除を防ぐ重要な保護機能
- ECS Fargateヘルスチェック設定: デプロイ戦略の柔軟な制御
- EKS Addon設定値: Addonの動作を細かくカスタマイズ
- EventBridge SNSターゲットのIAMロール: KMS暗号化トピックへの確実な送信
- Step Functions Bedrock統合: モデルカスタマイズジョブの自動化
バグ修正により、ALBの設定ミス検出やRDS Aurora MySQLのバージョン判定が改善されました。
VPC LatticeとCloudFormationのL1リソースに破壊的変更が含まれているため、該当機能を使用している場合はアップグレード前に変更内容を確認してください。