概要
AWS CDK v2.178.0では、AWS AppSync Events用のL2コンストラクトの追加、Kinesis FirehoseモジュールのGA昇格、Step FunctionsにおけるJSONataと変数のサポート、ECSの新機能追加など、多数の重要な機能追加が含まれています。特にAppSync EventsとStep FunctionsのJSONataサポートは、リアルタイムアプリケーションやステートマシンの実装を大幅に改善します。
新機能
AWS AppSync Events L2コンストラクト (#32505)
AWS AppSync Eventsをサポートする新しいL2コンストラクトが追加されました。リアルタイムイベント配信のためのEvent APIとChannel Namespaceを構築できます。
import * as appsync from 'aws-cdk-lib/aws-appsync';
// Event APIの作成(API Keyによる認証)
const eventApi = new appsync.EventApi(this, 'MyEventApi', {
name: 'my-event-api',
authorizationConfig: {
// デフォルト認証モード: API Key
defaultAuthorization: {
authorizationType: appsync.AuthorizationType.API_KEY,
apiKeyConfig: {
expires: cdk.Duration.days(365), // API Keyの有効期限
},
},
},
});
// Channel Namespaceの作成
const channelNamespace = new appsync.ChannelNamespace(this, 'MyChannelNamespace', {
api: eventApi,
name: 'my-namespace',
// JavaScriptリゾルバーでチャネルの認可ロジックを定義
code: appsync.Code.fromAsset('path/to/channel-handler.js'),
});
// IAMロールにイベント公開権限を付与
eventApi.grantPublish(myRole, 'my-namespace/*');
他の認証モード(IAM、Cognito User Pools、Lambda)もサポートされています。
Step Functions JSONataと変数のサポート (#32343)
Step Functionsで新しいクエリ言語JSONataと変数機能がサポートされました。既存のJSONPathよりもシンプルで強力な表現が可能です。
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
// JSONataを使用したPassステート
const jsonataPass = sfn.Pass.jsonata(this, 'JSONataPass', {
outputs: {
// JSONata式で出力を定義({% %}で囲む)
count: '{% $states.input.count + 1 %}', // カウントを1増やす
message: '{% "Hello, " & $states.input.name %}', // 文字列連結
},
});
// 変数への代入(JSONataとJSONPathの両方で使用可能)
const assignPass = sfn.Pass.jsonata(this, 'AssignPass', {
assign: {
// 変数に値を代入(ステートマシン全体で共有される)
counter: '{% $states.input.count + 1 %}',
timestamp: '{% $now() %}', // 現在時刻を取得
},
});
// 既存のJSONPathも引き続き使用可能
const jsonPathPass = sfn.Pass.jsonPath(this, 'JSONPathPass', {
outputPath: sfn.JsonPath.stringAt('$.foo'),
});
// ステートマシンの定義
const stateMachine = new sfn.StateMachine(this, 'MyStateMachine', {
definition: jsonataPass.next(assignPass),
});
Kinesis Firehose GA昇格 (#33296)
@aws-cdk/aws-kinesisfirehose-alphaモジュールが安定版に昇格し、aws-cdk-lib/aws-kinesisfirehoseとして利用可能になりました。
import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.Bucket(this, 'Bucket');
// S3へのデリバリーストリーム
const deliveryStream = new firehose.DeliveryStream(this, 'DeliveryStream', {
destination: new firehose.S3Bucket(bucket, {
// データ変換(オプション)
processor: new firehose.LambdaFunctionProcessor(myFunction, {
retries: 5, // リトライ回数
}),
// 圧縮形式
compression: firehose.Compression.GZIP,
// バッファリング設定
bufferingInterval: cdk.Duration.minutes(1), // バッファ時間(デフォルト: 300秒)
bufferingSize: cdk.Size.mebibytes(5), // バッファサイズ(デフォルト: 5MB)
}),
});
CloudFront Origin Group選択基準 (#32740)
CloudFront Distributionでオリジングループのフェイルオーバー選択基準を設定できるようになりました。
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';
// オリジングループの作成
const originGroup = new origins.OriginGroup({
primaryOrigin: new origins.S3Origin(primaryBucket),
fallbackOrigin: new origins.S3Origin(fallbackBucket),
fallbackStatusCodes: [500, 502, 503, 504],
// 新機能: 選択基準の設定
selectionCriteria: cloudfront.OriginGroupSelectionCriteria.DEFAULT, // デフォルト動作
});
const distribution = new cloudfront.Distribution(this, 'Distribution', {
defaultBehavior: {
origin: originGroup,
},
});
Cognito パスワード履歴サイズ (#33164)
Cognito User Poolでパスワードの再利用防止設定が可能になりました。
import * as cognito from 'aws-cdk-lib/aws-cognito';
const userPool = new cognito.UserPool(this, 'UserPool', {
passwordPolicy: {
minLength: 12,
requireLowercase: true,
requireUppercase: true,
requireDigits: true,
requireSymbols: true,
// 新機能: パスワード履歴サイズ(過去N個のパスワードの再利用を防止)
passwordHistorySize: 5, // 過去5個のパスワードは使用不可(デフォルト: 0)
},
});
ECS 新機能
ExternalService Daemonスケジューリング (#32630)
ECS ExternalServiceでdaemonスケジューリング戦略がサポートされました。
import * as ecs from 'aws-cdk-lib/aws-ecs';
const externalService = new ecs.ExternalService(this, 'ExternalService', {
cluster: cluster,
taskDefinition: taskDefinition,
// daemonスケジューリング戦略(各ノードに1つずつタスクを配置)
schedulingStrategy: ecs.SchedulingStrategy.DAEMON,
// desiredCountはdaemon戦略では指定不要
});
Service Connect TLS設定 (#32605)
ECS Service ConnectでTLS暗号化が設定できるようになりました。
import * as ecs from 'aws-cdk-lib/aws-ecs';
const service = new ecs.FargateService(this, 'Service', {
cluster: cluster,
taskDefinition: taskDefinition,
});
service.enableServiceConnect({
services: [
{
portMappingName: 'api',
// 新機能: TLS設定
tls: {
issuerCertificateAuthority: {
// ACM Private CAのARN
awsPcaAuthorityArn: 'arn:aws:acm-pca:region:account:certificate-authority/xxxx',
},
// クライアントTLSの設定(オプション)
kmsKey: myKey, // 秘密鍵の暗号化に使用するKMSキー
roleArn: myRole.roleArn, // 証明書アクセス用のIAMロール
},
},
],
});
アベイラビリティゾーン リバランシング (#32263)
ECSサービスでAZリバランシング機能が有効化できるようになりました。
import * as ecs from 'aws-cdk-lib/aws-ecs';
const service = new ecs.FargateService(this, 'Service', {
cluster: cluster,
taskDefinition: taskDefinition,
// 新機能: AZリバランシングの有効化
availabilityZoneRebalancing: ecs.AvailabilityZoneRebalancing.ENABLED, // デフォルト: DISABLED
// 注意: 以下の条件を満たす必要があります
// - capacityProviderStrategiesが設定されていないこと
// - launchTypeがFARGATEであること
// - deploymentControllerがECSであること
});
コンテナバージョン一貫性 (#32225)
ECSタスクでコンテナイメージバージョンの一貫性を制御できるようになりました。
import * as ecs from 'aws-cdk-lib/aws-ecs';
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef');
taskDefinition.addContainer('app', {
image: ecs.ContainerImage.fromRegistry('nginx:latest'),
// 新機能: バージョン一貫性の設定
versionConsistency: ecs.VersionConsistency.ENABLED, // タスク内で同じイメージバージョンを使用
// DISABLED: タスク起動時に最新のイメージを取得(デフォルト)
// ENABLED: 最初のコンテナと同じイメージダイジェストを使用
});
// 注意: CDKアセットからビルドしたイメージの場合、自動的にDISABLEDに設定されます
const assetImage = taskDefinition.addContainer('asset', {
image: ecs.ContainerImage.fromAsset('./app'),
// versionConsistencyは自動的にDISABLEDに設定される
});
SNS FIFO高スループットモード (#33056)
SNS FIFOトピックで高スループットモードがサポートされました。
import * as sns from 'aws-cdk-lib/aws-sns';
const topic = new sns.Topic(this, 'Topic', {
fifo: true,
// 新機能: 高スループットモードの設定
fifoThroughputScope: sns.FifoThroughputScope.MESSAGE_GROUP, // メッセージグループごとに処理
// FifoThroughputScope.TOPIC: トピックレベルでの順序保証(デフォルト、300 TPS)
// FifoThroughputScope.MESSAGE_GROUP: メッセージグループレベルでの順序保証(より高いスループット)
contentBasedDeduplication: true,
});
DynamoDB Point-in-Time Recovery新プロパティ (#33059)
DynamoDBで新しいPoint-in-Time Recovery設定プロパティが追加されました(既存のプロパティは非推奨)。
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
const table = new dynamodb.Table(this, 'Table', {
partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
// 新しいプロパティ
pointInTimeRecovery: true, // シンプルなboolean指定
});
// 既存のpointInTimeRecoveryは非推奨(まだ使用可能)
// pointInTimeRecovery: true
その他の新機能
- Bedrock: Luma AI’s Ray2ビジュアルAIモデルのサポート (#33163)
- RDS: Aurora PostgreSQL Limitless Database PostgreSQL 16.6のサポート (#33162)
- ELBv2: mTLSのAdvertiseTrustStoreCaNamesサポート (#32678)
- Lambda: ADOT Lambda Layers v0.115.0への更新 (#32783)
- Custom Resource: 中国とGovCloudリージョンでのデフォルトNode.js 20ランタイム対応 (#33112)
Alphaモジュール
ec2-alpha: Developer Preview (#33230, #32956)
ec2-alphaモジュールがDeveloper Previewになり、Transit Gateway L2コンストラクトが追加されました。
import * as ec2 from '@aws-cdk/aws-ec2-alpha';
// Transit Gatewayの作成
const tgw = new ec2.TransitGateway(this, 'TransitGateway', {
amazonSideAsn: 64512,
description: 'My Transit Gateway',
});
// VPCをアタッチ
tgw.attachVpc(vpc, {
subnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
});
eks-v2-alpha: 新しいEKS v2モジュール (#33215)
新しいEKS v2 alphaモジュールが追加されました。ネイティブCFN L1クラスタリソースを使用した書き直しです。
import * as eks from '@aws-cdk/aws-eks-v2-alpha';
const cluster = new eks.Cluster(this, 'Cluster', {
version: eks.KubernetesVersion.V1_31,
defaultCapacity: 2,
});
msk-alpha: ServerlessClusterサポート (#32780)
MSK ServerlessClusterのL2コンストラクトが追加されました。
import * as msk from '@aws-cdk/aws-msk-alpha';
const cluster = new msk.ServerlessCluster(this, 'ServerlessCluster', {
clusterName: 'my-serverless-cluster',
vpc: vpc,
});
バグ修正
- API Gateway v2: ARN関数の不正な動作を修正 (#33100)
- Batch: ManagedComputeEnvironmentでCFNパラメータをサポート (#32954)
- CLI: cdk.jsonの配列引数が無視される問題を修正 (#33107)
- Custom Resources: CloudWatchアクション用の不正なIAMプレフィックスを修正 (#33078)
- SNS: enforceSSL有効時にトピックポリシーが作成されない問題を修正 (#31569)
破壊的変更(Alphaモジュールのみ)
ec2-alpha
- BREAKING:
IPAMクラスのoperatingRegionプロパティがoperatingRegions(複数形)にリネームされました。
ecs (Stable)
- 非推奨化:
TaskDefinitionProps.inferenceAcceleratorsプロパティとTaskDefinition.addInferenceAccelerator()メソッドが非推奨になりました。
その他の改善
- エラーハンドリング: 複数のモジュールでエラー処理が改善され、型付きの
ValidationErrorがスローされるようになりました(API Gateway、Application Auto Scaling、App Mesh、AppSync、Cognito) - メタデータ収集: 追加のメタデータ収集機能が有効化されました(フィーチャーフラグの下)(#33232, #33292)
- L1アップデート: CloudFormationリソース定義が最新版に更新されました (#33191, #33272)
まとめ
AWS CDK v2.178.0は、AppSync EventsやStep FunctionsのJSONataなど新しいAWSサービス機能への対応、Kinesis FirehoseのGA昇格、ECSの豊富な新機能など、多くの重要な改善を含むリリースです。特にリアルタイムイベント処理やステートマシンの実装を行う開発者にとって、大きな価値のある機能が追加されています。Alphaモジュールでも、EC2、EKS、MSKの重要な機能が追加され、今後の安定版化が期待されます。