概要
AWS CDK v2.242.0では、API GatewayのTLS 1.3セキュリティポリシー、AppSync GraphQL APIの拡張メトリクス設定、OpenSearch ServiceのS3ベクターエンジンサポートなど、多くの新機能が追加されました。また、CDK Mixinsの機能強化として、ECRのRepositoryAutoDeleteImagesやS3のBucketAutoDeleteObjectsなどのMixinがaws-cdk-libに昇格しています。
新機能
API Gateway: TLS 1.3 セキュリティポリシーのサポート (#36303)
API Gatewayのカスタムドメイン名でTLS 1.3セキュリティポリシーが利用可能になりました。ポスト量子暗号やFIPS準拠など、より高度なセキュリティ要件に対応できます。
リージョナル/プライベートエンドポイント向けポリシー:
import * as apigateway from 'aws-cdk-lib/aws-apigateway';
import * as acm from 'aws-cdk-lib/aws-certificatemanager';
// TLS 1.3セキュリティポリシーを使用したドメイン名
const domainName = new apigateway.DomainName(this, 'DomainName', {
domainName: 'api.example.com',
certificate: certificate,
// TLS 1.3セキュリティポリシーを指定
securityPolicy: apigateway.SecurityPolicy.TLS13_1_3_2025_09, // Pure TLS 1.3
// STRICTアクセスモードが必要
endpointAccessMode: apigateway.EndpointAccessMode.STRICT, // 拡張セキュリティポリシーに必須
});
新しいSecurityPolicyの値:
| ポリシー | 説明 | エンドポイントタイプ |
|---|---|---|
TLS13_1_3_2025_09 | Pure TLS 1.3 | REGIONAL |
TLS13_1_3_FIPS_2025_09 | FIPS準拠TLS 1.3 | REGIONAL |
TLS13_1_2_PQ_2025_09 | TLS 1.3 + 1.2(ポスト量子暗号) | REGIONAL |
TLS13_1_2_PFS_PQ_2025_09 | TLS 1.3 + 1.2(PFS + ポスト量子暗号) | REGIONAL |
TLS13_2025_EDGE | TLS 1.3 for Edge | EDGE |
TLS12_PFS_2025_EDGE | TLS 1.2(PFS)for Edge | EDGE |
TLS12_2018_EDGE | TLS 1.2 for Edge(レガシー) | EDGE |
エッジ最適化エンドポイントの例:
const edgeDomain = new apigateway.DomainName(this, 'EdgeDomain', {
domainName: 'edge-api.example.com',
certificate: certificate,
endpointType: apigateway.EndpointType.EDGE,
// エッジ向けTLS 1.3ポリシー
securityPolicy: apigateway.SecurityPolicy.TLS13_2025_EDGE, // TLS 1.3 for Edge
endpointAccessMode: apigateway.EndpointAccessMode.STRICT,
});
注意事項:
- 拡張セキュリティポリシーには
endpointAccessMode: STRICTが必須 - mTLS(相互TLS)は拡張セキュリティポリシーと併用不可
- リージョナル専用ポリシーはEDGEエンドポイントで使用不可(逆も同様)
AppSync: GraphQL API の拡張メトリクス設定 (#35328)
AppSync GraphQL APIで拡張メトリクス設定(Enhanced Metrics Config)が利用可能になりました。リゾルバー、データソース、オペレーションレベルの詳細なメトリクスを有効化できます。
import * as appsync from 'aws-cdk-lib/aws-appsync';
const api = new appsync.GraphqlApi(this, 'Api', {
name: 'MyApi',
definition: appsync.Definition.fromFile('schema.graphql'),
// 拡張メトリクス設定
enhancedMetricsConfig: {
// リゾルバーレベルのメトリクス動作
resolverLevelMetricsBehavior: appsync.ResolverLevelMetricsBehavior.PER_RESOLVER_METRICS,
// データソースレベルのメトリクス動作
dataSourceLevelMetricsBehavior: appsync.DataSourceLevelMetricsBehavior.PER_DATA_SOURCE_METRICS,
// オペレーションレベルのメトリクスを有効化
operationLevelMetricsEnabled: true, // true: 有効, false: 無効
},
});
EnhancedMetricsConfigのプロパティ:
| プロパティ | 型 | 説明 |
|---|---|---|
resolverLevelMetricsBehavior | ResolverLevelMetricsBehavior | リゾルバーメトリクスの収集方法 |
dataSourceLevelMetricsBehavior | DataSourceLevelMetricsBehavior | データソースメトリクスの収集方法 |
operationLevelMetricsEnabled | boolean | オペレーションレベルメトリクスの有効/無効 |
ResolverLevelMetricsBehaviorの値:
FULL_REQUEST_RESOLVER_METRICS: リクエスト全体のメトリクスPER_RESOLVER_METRICS: リゾルバーごとのメトリクス
DataSourceLevelMetricsBehaviorの値:
FULL_REQUEST_DATA_SOURCE_METRICS: リクエスト全体のメトリクスPER_DATA_SOURCE_METRICS: データソースごとのメトリクス
注意: operationLevelMetricsEnabledを有効にすると、dataSourceLevelMetricsBehaviorのデフォルトはPER_DATA_SOURCE_METRICSになります。
OpenSearch Service: S3 ベクターエンジンのサポート (#36382)
Amazon OpenSearch ServiceでS3をベクターエンジンとして使用できるようになりました。これにより、大規模なベクターインデックスをS3に保存し、コスト効率の良いベクター検索が可能になります。
import * as opensearch from 'aws-cdk-lib/aws-opensearchservice';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const domain = new opensearch.Domain(this, 'Domain', {
version: opensearch.EngineVersion.OPENSEARCH_2_19, // OpenSearch 2.19以降が必要
capacity: {
// OpenSearch Optimizedインスタンスが必要
dataNodeInstanceType: 'or1.medium.search', // or1 (OpenSearch Optimized) インスタンス
dataNodes: 2,
},
// S3ベクターエンジンを有効化
s3VectorsEngineEnabled: true, // true: S3ベクターエンジンを有効化
});
S3ベクターエンジンの要件:
- OpenSearchバージョン2.19以降
- OpenSearch Optimizedインスタンス(
or1.*) - リリースの最新パッチバージョン
利点:
- 大規模ベクターデータをS3に保存することでコスト削減
- ベクターインデックスのスケーラビリティ向上
- 永続的なベクターストレージ
ECR: RepositoryAutoDeleteImages Mixin (#37176)
ECRリポジトリのRepositoryAutoDeleteImages Mixinが追加されました。スタック削除時にリポジトリ内のすべてのイメージを自動的に削除できます。
import * as ecr from 'aws-cdk-lib/aws-ecr';
import { Mixins } from 'aws-cdk-lib';
// L2 Repositoryに適用
const repository = new ecr.Repository(this, 'Repository', {
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
// Mixinを使用して自動削除を有効化
Mixins.of(this).apply(new ecr.mixins.RepositoryAutoDeleteImages());
CfnRepositoryへの直接適用:
// L1 CfnRepositoryに適用
const cfnRepository = new ecr.CfnRepository(this, 'CfnRepository');
Mixins.of(this).apply(new ecr.mixins.RepositoryAutoDeleteImages());
特徴:
- CloudFormationネイティブの
emptyOnDeleteプロパティを使用 - カスタムリソースやLambda関数は不要(軽量)
- 既存の
autoDeleteImagesプロパティ(カスタムリソース使用)とは独立
S3: BucketAutoDeleteObjects Mixin が aws-cdk-lib に昇格 (#37161)
S3バケットのBucketAutoDeleteObjects Mixinが@aws-cdk/mixins-previewからaws-cdk-libに正式移行しました。
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as cdk from 'aws-cdk-lib';
import { Mixins } from 'aws-cdk-lib';
// CfnBucketに適用
const cfnBucket = new s3.CfnBucket(this, 'CfnBucket');
cfnBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
Mixins.of(this).apply(new s3.mixins.BucketAutoDeleteObjects());
// L2 Bucketに適用(既存のautoDeleteObjectsプロパティと同等の動作)
const bucket = new s3.Bucket(this, 'Bucket', {
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
Mixins.of(this).apply(new s3.mixins.BucketAutoDeleteObjects());
注意:
removalPolicy: DESTROYが設定されているバケットにのみ適用可能- L2の
autoDeleteObjectsプロパティは内部でこのMixinを使用するように変更 - 既存コードは変更なしで動作
S3/ECS サービス Mixin が aws-cdk-lib に移行 (#37151)
S3とECSのMixinが@aws-cdk/mixins-previewからaws-cdk-libに移行しました。
S3 Mixins:
import * as s3 from 'aws-cdk-lib/aws-s3';
import { Mixins } from 'aws-cdk-lib';
// バージョニングを有効化
Mixins.of(this).apply(new s3.mixins.BucketVersioning());
// パブリックアクセスをブロック
Mixins.of(this).apply(new s3.mixins.BucketBlockPublicAccess());
// バケットポリシーステートメントを追加
Mixins.of(this).apply(new s3.mixins.BucketPolicyStatements({
statements: [myPolicyStatement],
}));
ECS Mixins:
import * as ecs from 'aws-cdk-lib/aws-ecs';
import { Mixins } from 'aws-cdk-lib';
// クラスター設定を適用
Mixins.of(this).apply(new ecs.mixins.ClusterSettings({
containerInsights: true,
}));
Core: PropertyMergeStrategy の追加 (#37206)
PropertyMergeStrategyとIMergeStrategyがaws-cdk-lib/coreに追加されました。CFNプロパティオブジェクトのマージ動作をカスタマイズできます。
import { PropertyMergeStrategy } from 'aws-cdk-lib';
// 深いマージ(デフォルト)- ネストされたオブジェクトを再帰的にマージ
const combineStrategy = PropertyMergeStrategy.combine();
// 上書き - 既存の値を完全に置換
const overrideStrategy = PropertyMergeStrategy.override();
L1 CloudFormationリソース定義の更新 (#37173)
最新のAWS CloudFormationリソース仕様に基づいてL1コンストラクトが更新されました。
バグ修正
aws-cdk-lib: Asset のメモリ使用量を改善 (#37186)
Assetクラスのメモリ使用量が大幅に削減されました。多数のAssetインスタンスを持つ大規模アプリケーションでの影響が特に大きく、約60%のメモリ削減が見込まれます。
主な改善点:
Bucket.fromBucketAttributes()とKey.fromKeyArn()で毎回作成されていた匿名クラスを、共有可能なスタンドアロンクラスに変更grantsプロパティを遅延初期化に変更(Assetでは通常使用されないため)AssetStagingから不要になったfs.Statsプロパティ(約1.8KB)を削除
影響:
- 100,000個のAssetインスタンスを持つアプリケーションで約500MBのメモリ削減
- 合成時間の短縮
メタデータの512MB文字列制限を修正 (#34480)
大量のスタックを持つアプリケーションでmanifest.jsonが512MBの文字列制限を超える問題が修正されました。
修正内容:
- スタックのメタデータを別ファイルに分離
manifest.jsonのホットパスからメタデータを除外- 256スタック・約40,000コンストラクトのツリーで合成時間が約5秒短縮
OpenSearch Service: enableAutoSoftwareUpdate: false が反映されない問題を修正 (#37152)
enableAutoSoftwareUpdate: falseを設定してもCloudFormationテンプレートに反映されない問題が修正されました。
修正前の問題:
enableAutoSoftwareUpdateのtruthyチェックでfalseがfalsy値として扱われ、SoftwareUpdateOptionsがテンプレートから省略されていました。
修正後:
import * as opensearch from 'aws-cdk-lib/aws-opensearchservice';
const domain = new opensearch.Domain(this, 'Domain', {
version: opensearch.EngineVersion.OPENSEARCH_2_17,
// 自動ソフトウェアアップデートを明示的に無効化(修正後は正しく反映される)
enableAutoSoftwareUpdate: false, // falseが正しくテンプレートに出力される
});
S3: デフォルトトレイトファクトリで既存バケットポリシーを検出 (#37166)
ResourceWithPolicies.of(cfnBucket)?.addToResourcePolicy()を使用した際に、既存のバケットポリシーが検出されず重複するポリシーリソースが作成される問題が修正されました。
修正内容:
CfnBucketWithPolicyクラスが既存のバケットポリシーを検索してから新規作成するように変更- トークン解決と参照マッチングにより、様々な方法で参照されたバケットを正しく検出
破壊的変更
SSM: MaintenanceWindow の Id 属性が削除
L1リソースの更新により、AWS::SSM::MaintenanceWindowのId属性が削除されました。
影響:
CfnMaintenanceWindow.attrIdを使用していた場合、このプロパティが利用できなくなります
対応方法:
- 代替として
Fn::RefまたはCfnMaintenanceWindow.refを使用してMaintenanceWindow IDを取得できます
Alphaモジュール (2.242.0-alpha.0)
mixins-preview: CFNプロパティMixinでリソースオブジェクトを渡せるように (#37148)
CFNプロパティMixinのプロパティにL2コンストラクト参照を直接渡せるようになりました。ARNやIDを手動で解決する必要がなくなります。
import * as kms from 'aws-cdk-lib/aws-kms';
import { CfnS3BucketProps } from '@aws-cdk/mixins-preview';
const key = new kms.Key(this, 'Key');
// KMS KeyコンストラクトをARNではなく直接渡せる
const mixin = new CfnS3BucketProps({
bucketEncryption: {
serverSideEncryptionConfiguration: [{
serverSideEncryptionByDefault: {
sseAlgorithm: 'aws:kms',
// kms.Keyを直接渡せる(内部で自動的にARNに解決される)
kmsMasterKeyId: key, // 以前は key.keyArn が必要だった
},
}],
},
});
mixins-preview: すべてのイベントに対してEventBridgeパターンを生成 (#37081)
リソースに関連付けられていないEventBridgeイベントに対してもヘルパークラスが生成されるようになりました。
新しくサポートされたサービス:
- App Mesh
- AWS B2BI
- AWS Batch
- CloudFormation
- CodeDeploy
- CodeGuru Profiler
- CodePipeline
- DataSync
- AWS Deadline
- DevOps Guru
- DLM(Data Lifecycle Manager)
- ElastiCache
- Elastic Load Balancing
- EMR
- EventBridge
- FIS(Fault Injection Simulator)
- GameLift
- HealthLake
- Image Builder
- IVS(Interactive Video Service)
- Managed Blockchain
- QLDB
- RDS
- Security Hub
- SES
- SSM
- Synthetics
- X-Ray
mixins-preview: IMergeStrategy によるカスタムマージ戦略のサポート (#37170)
PropertyMergeStrategyがTypeScript enumからファクトリクラスに変更され、カスタムマージ戦略の実装が可能になりました。
import { PropertyMergeStrategy, IMergeStrategy, CfnS3BucketProps } from '@aws-cdk/mixins-preview';
// 組み込みのcombine戦略(深いマージ)
const mixin1 = new CfnS3BucketProps({
tags: [{ key: 'Env', value: 'Prod' }],
}, {
strategy: PropertyMergeStrategy.combine(), // ネストされたオブジェクトを再帰的にマージ
});
// 組み込みのoverride戦略(完全置換)
const mixin2 = new CfnS3BucketProps({
tags: [{ key: 'Env', value: 'Prod' }],
}, {
strategy: PropertyMergeStrategy.override(), // 既存の値を完全に置換
});
// カスタムマージ戦略の実装
class MyCustomStrategy implements IMergeStrategy {
apply(source: any, target: any): any {
// カスタムマージロジック
return { ...target, ...source };
}
}
破壊的変更(Alphaモジュール内):
PropertyMergeStrategy.MERGE→PropertyMergeStrategy.combine()PropertyMergeStrategy.OVERRIDE→PropertyMergeStrategy.override()CfnPropertyMixinOptions.strategyの型がPropertyMergeStrategyからIMergeStrategyに変更
まとめ
AWS CDK v2.242.0は、API GatewayのTLS 1.3サポート、AppSyncの拡張メトリクス、OpenSearchのS3ベクターエンジンなど、セキュリティとパフォーマンスに関する重要な機能強化が含まれるリリースです。
主なポイント:
- API Gateway TLS 1.3: ポスト量子暗号やFIPS準拠など高度なセキュリティポリシーに対応
- AppSync拡張メトリクス: リゾルバー、データソース、オペレーションレベルの詳細メトリクスを有効化可能
- OpenSearch S3ベクターエンジン: S3をベクターストレージとして使用し、コスト効率の良いベクター検索を実現
- Mixin機能強化: ECRとS3のMixinが
aws-cdk-libに正式移行 - パフォーマンス改善: Assetのメモリ使用量削減、メタデータの512MB制限対応
破壊的変更に注意:
AWS::SSM::MaintenanceWindowのId属性が削除されました。attrIdを使用していた場合はrefへの移行が必要です。