Back to Releases
v2.233.0 2025年12月18日

AWS CDK v2.233.0 リリース解説

EventBridgeの標準SQSキューへのmessageGroupIdサポート、CodeBuild macOS 15ランナーのサポート、Route 53フェイルオーバールーティングポリシーのL2対応など、多数の新機能が追加されました。

eventscodebuildroute53ec2cloudtrailcustom-resourcesecspipelines

概要

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は以下の検証を自動的に実行します:

  • 他のルーティングポリシーとの競合: failoverregionweightgeoLocationmultiValueAnswercidrRoutingConfigと同時に指定するとエラー
  • プライマリレコードのヘルスチェック: プライマリレコードにhealthCheckが設定されていない場合は警告(推奨設定)
  • エイリアスレコードの設定: エイリアスレコードでEvaluateTargetHealthtrueでない場合は警告

自動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への移行
  • 非推奨のForwardedValuesCachePolicyIdに置き換え
  • セキュリティ強化(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のfleetcertificateプロパティが正しく伝播されない問題が修正されました (#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::EC2FleetDefaultTargetCapacityTypeプロパティがイミュータブル(変更不可)になりました
  • AWS::EC2::EC2FleetTargetCapacityUnitTypeプロパティがイミュータブル(変更不可)になりました

これらのプロパティは、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モジュールでも複数の破壊的変更が含まれていますので、利用している場合はリリースノートを確認してください。