概要
AWS CDK v2.233.0では、EventBridgeターゲットで標準SQSキューに対するmessageGroupIdのサポートが追加されました。また、CodeBuildでmacOS 15ランナーがサポートされ、Route 53ではフェイルオーバールーティングポリシーがL2コンストラクトレベルで利用できるようになりました。さらに、EC2でACMとACM-PCAのVPCエンドポイントが追加され、Route53-PatternsではCloudFront Distributionへの移行がフィーチャーフラグで可能になっています。
新機能
EventBridge Targets: 標準SQSキューでmessageGroupIdをサポート (#36068)
EventBridgeが標準(非FIFO)SQSキューに対してmessageGroupIdパラメータをサポートするようになりました。これまでCDKではクライアント側で検証エラーが発生していましたが、バックエンドサービスの変更により、標準キューでもメッセージグルーピングが利用可能になりました。
使用例
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';
import * as sqs from 'aws-cdk-lib/aws-sqs';
// 標準SQSキュー(非FIFOキュー)
const standardQueue = new sqs.Queue(this, 'StandardQueue');
const rule = new events.Rule(this, 'Rule', {
eventPattern: {
source: ['my.application'],
},
});
// 標準キューでもmessageGroupIdが使用可能に
rule.addTarget(new targets.SqsQueue(standardQueue, {
messageGroupId: 'order-processing', // メッセージグルーピングを有効化
}));
変更内容
SqsQueueコンストラクタで標準キューに対するmessageGroupIdの検証エラーを削除- JSDocを更新し、FIFOキューと標準キューの両方で利用可能であることを明記
- テストを更新し、エラーではなく正常なCloudFormation合成を検証
これにより、標準SQSキューでもメッセージグルーピング機能を活用できるようになり、順序保証が不要だがグルーピングが必要なユースケースに対応できます。
CodeBuild: macOS 15ランナーのサポート (#35836)
CodeBuildでmacOS 15(ARM64ベース)のビルド環境がサポートされました。MacBuildImage.BASE_15を使用することで、最新のmacOS環境でビルドを実行できます。
使用例
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
const project = new codebuild.Project(this, 'MacOSProject', {
// macOS 15のビルドイメージを指定
environment: {
buildImage: codebuild.MacBuildImage.BASE_15, // macOS 15 (ARM64)
},
buildSpec: codebuild.BuildSpec.fromObject({
version: '0.2',
phases: {
build: {
commands: [
'xcodebuild -version',
'swift --version',
],
},
},
}),
});
// macOS Fleetと組み合わせて使用
const fleet = codebuild.Fleet.fromFleetArn(
this,
'ImportedFleet',
'arn:aws:codebuild:us-east-1:123456789012:fleet/my-macos-fleet:uuid'
);
const projectWithFleet = new codebuild.Project(this, 'MacOSFleetProject', {
environment: {
buildImage: codebuild.MacBuildImage.BASE_15, // macOS 15を指定
fleet, // macOS Fleetを使用
},
buildSpec: codebuild.BuildSpec.fromObject({
version: '0.2',
phases: {
build: {
commands: ['echo "Building on macOS 15"'],
},
},
}),
});
既存のmacOS 14との比較
MacBuildImage.BASE_14: macOS 14 (ARM64)MacBuildImage.BASE_15: macOS 15 (ARM64) - 新規追加
macOS 15では最新のXcodeとSwiftツールチェーンが利用可能です。詳細はCodeBuildの利用可能なランタイムを参照してください。
Route 53: フェイルオーバールーティングポリシーのL2サポート (#35909)
Route 53のフェイルオーバールーティングポリシーがL2コンストラクトで利用できるようになりました。これまでL1のCfnRecordSetでのみ利用可能でしたが、RecordSetで直接設定できます。
使用例
import * as route53 from 'aws-cdk-lib/aws-route53';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const zone = route53.HostedZone.fromLookup(this, 'Zone', {
domainName: 'example.com',
});
// ヘルスチェックの作成
const healthCheck = new route53.CfnHealthCheck(this, 'HealthCheck', {
healthCheckConfig: {
type: 'HTTPS',
resourcePath: '/health',
fullyQualifiedDomainName: 'primary.example.com',
},
});
// プライマリレコードセット
new route53.ARecord(this, 'PrimaryRecord', {
zone,
recordName: 'app',
target: route53.RecordTarget.fromIpAddresses('1.2.3.4'),
failover: route53.Failover.PRIMARY, // プライマリとして設定
healthCheck: route53.HealthCheck.fromHealthCheckId(
this,
'PrimaryHealthCheck',
healthCheck.attrHealthCheckId
),
});
// セカンダリレコードセット
new route53.ARecord(this, 'SecondaryRecord', {
zone,
recordName: 'app',
target: route53.RecordTarget.fromIpAddresses('5.6.7.8'),
failover: route53.Failover.SECONDARY, // セカンダリとして設定
});
// エイリアスレコードでのフェイルオーバー
const alb1 = elbv2.ApplicationLoadBalancer.fromLookup(this, 'ALB1', {
loadBalancerArn: 'arn:aws:elasticloadbalancing:...',
});
const alb2 = elbv2.ApplicationLoadBalancer.fromLookup(this, 'ALB2', {
loadBalancerArn: 'arn:aws:elasticloadbalancing:...',
});
new route53.ARecord(this, 'PrimaryAliasRecord', {
zone,
recordName: 'api',
target: route53.RecordTarget.fromAlias(
new route53targets.LoadBalancerTarget(alb1)
),
failover: route53.Failover.PRIMARY, // プライマリALB
healthCheck: route53.HealthCheck.fromHealthCheckId(
this,
'ALB1HealthCheck',
healthCheck.attrHealthCheckId
),
});
new route53.ARecord(this, 'SecondaryAliasRecord', {
zone,
recordName: 'api',
target: route53.RecordTarget.fromAlias(
new route53targets.LoadBalancerTarget(alb2)
),
failover: route53.Failover.SECONDARY, // セカンダリALB
});
自動検証機能
CDKは以下の検証を自動的に実行します:
- 他のルーティングポリシーとの競合:
failoverをregion、weight、geoLocation、multiValueAnswer、cidrRoutingConfigと同時に指定するとエラー - プライマリレコードのヘルスチェック: プライマリレコードに
healthCheckが設定されていない場合は警告(推奨設定) - エイリアスレコードの設定: エイリアスレコードで
EvaluateTargetHealthがtrueでない場合は警告
自動setIdentifierの生成
フェイルオーバールーティングでは、レコードセットに一意の識別子が自動的に付与されます:
- プライマリ:
FAILOVER_PRIMARY_ID_で始まる識別子 - セカンダリ:
FAILOVER_SECONDARY_ID_で始まる識別子
この機能により、高可用性DNSセットアップが簡単に構築できます。詳細はRoute 53フェイルオーバールーティングを参照してください。
EC2: ACMとACM-PCAのVPCエンドポイントを追加 (#35890)
AWS Certificate Manager (ACM) および ACM Private CA (ACM-PCA) のインターフェースVPCエンドポイントがサポートされました。これまでacm-pcaのみでしたが、以下のエンドポイントが追加されました:
acm- ACMのVPCエンドポイントacm-fips- ACM FIPSエンドポイントacm-pca-fips- ACM-PCA FIPSエンドポイント
使用例
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'MyVpc', {
maxAzs: 2,
});
// ACMのVPCエンドポイント
vpc.addInterfaceEndpoint('AcmEndpoint', {
service: ec2.InterfaceVpcEndpointAwsService.ACM, // ACMエンドポイント
});
// ACM FIPS対応エンドポイント
vpc.addInterfaceEndpoint('AcmFipsEndpoint', {
service: ec2.InterfaceVpcEndpointAwsService.ACM_FIPS, // FIPS準拠エンドポイント
});
// ACM-PCA(既存)
vpc.addInterfaceEndpoint('AcmPcaEndpoint', {
service: ec2.InterfaceVpcEndpointAwsService.ACM_PCA,
});
// ACM-PCA FIPS対応エンドポイント
vpc.addInterfaceEndpoint('AcmPcaFipsEndpoint', {
service: ec2.InterfaceVpcEndpointAwsService.ACM_PCA_FIPS, // FIPS準拠エンドポイント
});
利用シーン
- VPCから外部インターネット接続なしでACMとACM-PCAにアクセス
- FIPS準拠が必要な環境でのセキュアな証明書管理
- プライベートサブネットからの証明書発行・管理
Route53-Patterns: HttpsRedirectでDistributionを使用(フィーチャーフラグ) (#34312)
HttpsRedirectパターンが、非推奨のCloudFrontWebDistributionから新しいDistributionコンストラクトに移行しました。この変更はフィーチャーフラグ@aws-cdk/aws-route53-patterns:useDistributionForHttpsRedirectで有効化できます。
変更内容
CloudFrontWebDistributionからDistributionへの移行- 非推奨の
ForwardedValuesをCachePolicyIdに置き換え - セキュリティ強化(S3バケット暗号化の改善)
使用例
// cdk.jsonに以下を追加
{
"context": {
"@aws-cdk/aws-route53-patterns:useDistributionForHttpsRedirect": true
}
}
import * as route53 from 'aws-cdk-lib/aws-route53';
import * as route53patterns from 'aws-cdk-lib/aws-route53-patterns';
const zone = route53.HostedZone.fromLookup(this, 'Zone', {
domainName: 'example.com',
});
// HTTPSリダイレクトの設定
new route53patterns.HttpsRedirect(this, 'Redirect', {
recordNames: ['www.example.com'],
targetDomain: 'example.com',
zone,
// フィーチャーフラグが有効な場合、新しいDistributionが使用される
});
この変更により、最新のCloudFrontベストプラクティスに従った構成が実現されます。既存のスタックには影響せず、新しいスタックでフィーチャーフラグを有効にすることで適用されます。
CloudFormation リソース定義の更新
L1コンストラクトがCloudFormationの最新リソース定義に更新されました (#36390, #36367, #36326)。
バグ修正
aws-cdk-lib: Grant ファクトリメソッドを公開 (#36317)
Grantファクトリメソッドが公開されました。これにより、カスタムGrant実装がより簡単になります。
CloudTrail: Organization Trailで組織IDが未設定時のS3バケット権限を修正 (#30778)
Organization TrailでorganizationIdが設定されていない場合、S3バケットに不要な権限が付与される問題が修正されました (#30490)。
Custom Resources: ウェイターステートマシンのリトライ失敗問題を修正 (#35988)
カスタムリソースのウェイターステートマシンがリトライ時にExecutionAlreadyExistsエラーで失敗する問題が修正されました (#35957)。
ECS: インスタンスロールのcanContainersAccessInstanceRole削除に関する修正 (#36362)
ECSインスタンスロールのcanContainersAccessInstanceRoleプロパティ削除に伴う修正が行われました。
Pipelines: CodeBuildのfleetとcertificateプロパティの伝播を修正 (#35673)
CDK Pipelinesで、CodeBuildのfleetとcertificateプロパティが正しく伝播されない問題が修正されました (#35664)。
region-info: スタンドアロン使用時のモジュールエラーを修正 (#36414)
@aws-cdk/region-infoをスタンドアロンで使用した際にCannot find module 'aws-cdk-lib/core/lib/errors'エラーが発生する問題が修正されました (#36399)。
その他
- CI: spec updaterワークフローの修正 (#36364)
- CI: PRのheadをチェックアウトするように修正 (#36311)
ResourceEnvironmentの再エクスポートがエイリアスでない問題を修正 (#36370)
破壊的変更
L1リソースの変更
CloudFormationリソーススキーマの更新に伴い、以下のL1リソースに破壊的変更があります:
aws-ec2:
AWS::EC2::EC2FleetのDefaultTargetCapacityTypeプロパティがイミュータブル(変更不可)になりましたAWS::EC2::EC2FleetのTargetCapacityUnitTypeプロパティがイミュータブル(変更不可)になりました
これらのプロパティは、CloudFormationの実際の動作をより正確に反映するための変更です。既存のスタックでこれらのプロパティを変更しようとするとエラーになる可能性があります。
Alphaモジュール (2.233.0-alpha.0)
Bedrock AgentCore Alpha: lifecycleConfiguration のデフォルト値強制を修正 (#36379)
ランタイムコンストラクトが、ユーザーが明示的に指定していない場合でもlifecycleConfigurationにデフォルト値を自動的に含めていた問題が修正されました (#36376)。
破壊的変更: ランタイムコンストラクトは、明示的に指定されていない限り、デフォルト値を持つlifecycleConfigurationを自動的に含めなくなります。
ElastiCache Alpha: NoPasswordUser のドキュメント矛盾を修正 (#35920)
NoPasswordUserPropsのドキュメントが修正され、実装との矛盾が解消されました (#35847)。
Mixins Preview: デリバリーソースとデスティネーション作成の改善 (#36314)
mixins-previewパッケージのデリバリーソースとデリバリーデスティネーションの作成処理が改善されました。
まとめ
AWS CDK v2.233.0では、EventBridgeとSQSの連携強化、CodeBuildでの最新macOSサポート、Route 53のフェイルオーバールーティングのL2対応など、多岐にわたる改善が行われました。
特に、Route 53のフェイルオーバールーティングポリシーがL2で直接利用できるようになったことで、高可用性DNSセットアップの構築が大幅に簡素化されています。また、EventBridgeの標準SQSキューでのメッセージグルーピングサポートにより、より柔軟なイベント駆動アーキテクチャが実現できるようになりました。
EC2のACM関連VPCエンドポイント追加により、セキュアな証明書管理の選択肢も広がっています。CodeBuildのmacOS 15サポートにより、最新のApple開発環境でのビルドも可能になりました。
破壊的変更については、EC2 FleetのプロパティがCloudFormationの実際の動作に合わせて変更されていますので、該当する場合は注意が必要です。Alphaモジュールでも複数の破壊的変更が含まれていますので、利用している場合はリリースノートを確認してください。