Back to Releases
AWS CDK 2026年4月2日

AWS CDK v2.247.0 リリース解説

ALBのJWT検証アクション、API Gateway V2 LambdaオーソライザーのIAMロール指定、Batchジョブ定義のスキップ登録解除に対応。Alpha版ではMediaPackage V2のL2コンストラクトが新規追加されました。

概要

AWS CDK v2.247.0 では、Application Load Balancer の JWT 検証アクション、API Gateway V2 Lambda オーソライザーへの IAM ロール指定、AWS Batch の ジョブ定義登録解除のスキップ など、日常的な構成の柔軟性を高める機能が追加されました。Alpha モジュールでは AWS Elemental MediaPackage V2 の L2 コンストラクト が新たに登場しています。加えて L1 リソース定義の更新に伴う破壊的変更と、プロトタイプ汚染に関するセキュリティ修正が含まれます。

新機能

ALB: Application Load Balancer の JWT 検証アクション (#36099)

ALB のリスナーアクションとして、JWT(JSON Web Token)の検証を行う ListenerAction.authenticateJwt() が追加されました。IdP が発行した JWT を ALB 側で検証し、バックエンドターゲットへのリクエスト転送可否を制御できます。

AuthenticateJwtOptions の主要プロパティ:

プロパティ説明
nextListenerAction検証成功後に実行する次のアクション(forward 等)
issuerstringJWT の発行者 URL(HTTPS 必須、最大 256 文字)
jwksEndpointstringJWT 検証用の公開鍵を返す JWKS エンドポイント URL(HTTPS 必須、最大 256 文字)

使用例:

import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';

declare const listener: elbv2.ApplicationListener;
declare const targetGroup: elbv2.ApplicationTargetGroup;

listener.addAction('JwtAuthAction', {
  action: elbv2.ListenerAction.authenticateJwt({
    // JWT の発行者(HTTPS 必須)
    issuer: 'https://issuer.example.com',
    // JWKS(公開鍵セット)エンドポイント(HTTPS 必須)
    jwksEndpoint: 'https://issuer.example.com/jwks',
    // 検証成功時に続けて実行するアクション
    next: elbv2.ListenerAction.forward([targetGroup]),
  }),
});

なお、本 PR では最小構成から先に提供するため、additionalClaims 引数は未対応(今後の拡張予定)となっています。

API Gateway V2: Lambda オーソライザーの IAM ロール指定 (#35706)

HTTP API 用の Lambda オーソライザー(HttpLambdaAuthorizer)で、API Gateway が Lambda を呼び出す際に使用する IAM ロール を指定できるようになりました(REQUEST オーソライザーのみ対応)。

HttpLambdaAuthorizerProps に追加されたプロパティ:

プロパティ説明デフォルト
roleiam.IRoleRefAPI Gateway サービスがオーソライザー関数を呼び出す際に引き受ける IAM ロール。REQUEST オーソライザーでのみサポートロール指定なし(リソースベースのパーミッションを自動付与)

従来は lambda:InvokeFunction のリソースベースのパーミッションを関数側に自動付与していましたが、role を指定するとそのパーミッション付与はスキップされ、指定されたロールが呼び出しに使われます。

使用例:

import * as iam from 'aws-cdk-lib/aws-iam';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { HttpLambdaAuthorizer } from 'aws-cdk-lib/aws-apigatewayv2-authorizers';

declare const authHandler: lambda.IFunction;

// API Gateway が引き受けるロール
const invokeRole = new iam.Role(this, 'AuthorizerInvokeRole', {
  assumedBy: new iam.ServicePrincipal('apigateway.amazonaws.com'),
});
authHandler.grantInvoke(invokeRole);

const authorizer = new HttpLambdaAuthorizer('Authorizer', authHandler, {
  // 新機能: API Gateway がオーソライザー関数を呼ぶ際のロール
  // 指定した場合、Lambda 側へのリソースベースのパーミッション付与は行われない
  role: invokeRole,
});

Batch: ジョブ定義更新時の登録解除スキップ (#36011)

AWS Batch の JobDefinition に、CloudFormation の ResourceRetentionPolicy.SkipDeregisterOnUpdate をマッピングする skipDeregisterOnUpdate プロパティが追加されました。更新時に旧リビジョンを登録解除せず残したい場合に有用です。

追加されたプロパティ:

プロパティ説明デフォルト
skipDeregisterOnUpdatebooleantrue の場合、ジョブ定義更新時に旧リビジョンを登録解除(deregister)しないundefined(AWS Batch のデフォルト動作 = false

使用例(EcsJobDefinition 等、全ての JobDefinition 派生で利用可能):

import * as batch from 'aws-cdk-lib/aws-batch';

declare const container: batch.EcsContainerDefinition;

new batch.EcsJobDefinition(this, 'EcsJobDefinition', {
  container,
  // 新機能: 更新時に旧リビジョンの登録解除をスキップ
  // true にすると以前のリビジョンは Active のまま残り、実行中のジョブを保護しやすい
  skipDeregisterOnUpdate: true,
});

L1 CloudFormation リソース定義の更新 (#37410)

最新の CloudFormation Resource Schema に合わせて L1 コンストラクトが自動更新されています。本リリースには後述の 破壊的変更 に該当する変更が含まれます。

Alpha モジュール (2.247.0-alpha.0)

MediaPackage V2: 新しい L2 コンストラクト (#37279)

AWS Elemental MediaPackage V2 の L2 コンストラクトが新たに @aws-cdk/aws-mediapackagev2-alpha として追加されました。ChannelGroup / Channel / OriginEndpoint / ChannelPolicy / OriginEndpointPolicy を宣言的に構築できます。

主なコンストラクト:

コンストラクト役割
ChannelGroupチャネルとオリジンエンドポイントを束ねるトップレベルリソース
Channelコンテンツストリームの入口(HLS / CMAF をサポート)
OriginEndpoint配信用のマニフェスト(HLS / DASH / LL-HLS など)を公開する
ChannelPolicyChannel に対するリソースポリシー
OriginEndpointPolicyOriginEndpoint に対するリソースポリシー

基本的な使用例:

import {
  ChannelGroup,
  Channel,
  OriginEndpoint,
  InputConfiguration,
  Segment,
  Manifest,
  HeadersCMSD,
} from '@aws-cdk/aws-mediapackagev2-alpha';

// チャネルグループ: チャネルとエンドポイントのトップレベルコンテナ
const group = new ChannelGroup(this, 'MyChannelGroup', {
  channelGroupName: 'my-test-channel-group', // チャネルグループ名
});

// チャネル: 配信への入口
const channel = new Channel(this, 'MyChannel', {
  channelGroup: group,
  channelName: 'my-test-channel',
  // 入力設定(CMAF または HLS)
  input: InputConfiguration.cmaf({
    // MQCS(Media Quality Confidence Score)ベースの入力切替(CMAF のみ)
    inputSwitchConfiguration: {
      mqcsInputSwitching: true,
    },
    // 出力に付与する CMSD ヘッダー
    outputHeaders: [HeadersCMSD.MQCS],
  }),
});

// オリジンエンドポイント: 再生クライアントへの配信ポイント
new OriginEndpoint(this, 'MyOriginEndpoint', {
  channel,
  originEndpointName: 'my-test-endpoint',
  // セグメント設定(CMAF / TS など)
  segment: Segment.cmaf(),
  // マニフェスト(HLS / LL-HLS / DASH などを複数指定可能)
  manifests: [
    Manifest.hls({
      manifestName: 'index',
    }),
  ],
});

ファクトリメソッドによる簡潔な記述:

ChannelGroup#addChannel()Channel#addOriginEndpoint() によって、親子関係を明示的に指定せずに宣言できます。

const group = new ChannelGroup(this, 'MyChannelGroup', {
  channelGroupName: 'my-channel-group',
});

// 親 ChannelGroup からチャネルを追加
const channel = group.addChannel('MyChannel', {
  channelName: 'my-channel',
  input: InputConfiguration.cmaf(),
});

// 親 Channel からオリジンエンドポイントを追加
channel.addOriginEndpoint('MyEndpoint', {
  originEndpointName: 'my-endpoint',
  segment: Segment.cmaf(),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});

既存リソースのインポート:

属性または ARN からのインポートが可能です。クロスリージョンの場合は region を指定できます。

// 名前からインポート(同一リージョン想定)
const importedGroup = ChannelGroup.fromChannelGroupAttributes(this, 'ImportedGroup', {
  channelGroupName: 'MyChannelGroup',
});

// ARN からインポート(名前・リージョンは ARN から抽出)
const importedGroupFromArn = ChannelGroup.fromChannelGroupArn(
  this,
  'ImportedGroupFromArn',
  'arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/MyChannelGroup',
);

// クロスリージョン参照
const crossRegionGroup = ChannelGroup.fromChannelGroupAttributes(this, 'CrossRegionGroup', {
  channelGroupName: 'MyChannelGroup',
  region: 'us-west-2',
});

リソースポリシーの付与:

Channel#addToResourcePolicy() / OriginEndpoint#addToResourcePolicy() で簡潔に記述できます。初回呼び出し時にポリシーが自動作成されます。

import { PolicyStatement, Effect, ArnPrincipal } from 'aws-cdk-lib/aws-iam';

declare const channel: Channel;
channel.addToResourcePolicy(new PolicyStatement({
  sid: 'AllowMediaLiveRoleToAccessEmpChannel',
  principals: [new ArnPrincipal('arn:aws:iam::123456789012:role/MediaLiveAccessRole')],
  effect: Effect.ALLOW,
  actions: ['mediapackagev2:PutObject'],
  resources: [channel.channelArn],
}));

バグ修正

aws-cdk-lib: 圧縮されたスタックトレースで名前空間付きパッケージ名が隠れる問題を修正 (#37413)

スタックトレースを読みやすくするために実施している短縮処理に、2 つの不具合がありました。

  • 名前空間付きパッケージ名(例: @aws-cdk/aws-lambda-python-alpha)の先頭要素しか認識されない
  • ユーザーコードを含まないほど短い場合に、表示が意味不明になる

修正前の表示:

    ...aws-cdk-lib, @aws-cdk...

修正後の表示:

    ...aws-cdk-lib, @aws-cdk/aws-lambda-python-alpha...
    (no user code in 10 frames, use --stack-trace-limit to capture more)

利用側でのコード変更は不要で、Alpha モジュールを使っているアプリケーションのデバッグ体験が改善されます。深いスタックを追いたい場合は、従来どおり NODE_OPTIONS="--stack-trace-limit=100" のようにフレーム数を増やしてください。

セキュリティ: 2 つの API でのプロトタイプ汚染防止 (#37453)

以下 2 つの API においてプロトタイプ汚染(prototype pollution)の可能性があったため、それを防ぐ対策とテストが追加されました。

  • Fact.register()
  • cfnResource.addOverride()

CDK の値は信頼できないソースから流入しないため現実的な攻撃ではありませんが、脆弱性レポート対応コストを減らす予防的な修正です。利用側のコード変更は不要です。

セキュリティ: brace-expansion を 5.0.3 → 5.0.5 に更新 (CVE-2026-33750) (#37379)

依存ライブラリ brace-expansion の脆弱性 CVE-2026-33750 に対応するため、バージョンを 5.0.5 に更新しました。利用側の変更は不要です。

破壊的変更

L1 リソース定義は公開されている CloudFormation Resource Schema から自動生成されており、時折実態に合わせた互換性のない変更が含まれます。本リリースには以下が含まれます。

サービスリソース変更内容
aws-bedrockagentcoreAWS::BedrockAgentCore::OnlineEvaluationConfigExecutionStatus 属性が削除
aws-appstreamAWS::AppStream::ImageBuilderName プロパティが immutable(不変)に変更
aws-eksAWS::EKS::Capabilityvended log type EKS_CAPABILITY_ACK_S3_LOGS が削除

移行時の注意:

  • CfnOnlineEvaluationConfig.attrExecutionStatus を参照しているコードがあれば削除してください。
  • CfnImageBuildername を Stack 更新で変更すると、置き換え(replace)が発生します。命名は初回デプロイ時に確定させるか、論理 ID を分ける運用に変更してください。
  • EKS_CAPABILITY_ACK_S3_LOGS を vended log の出力タイプとして指定していた場合は、別のサポートされているログタイプ(例: EKS_CAPABILITY_ARGOCD_APPLICATION_LOGS, EKS_CAPABILITY_KRO_LOGS)への切り替えを検討してください。

まとめ

AWS CDK v2.247.0 は、ALB の JWT 検証API Gateway V2 Lambda オーソライザーのロール指定Batch のジョブ定義登録解除スキップ といった運用面の改善と、MediaPackage V2 L2 コンストラクトの新規追加(Alpha)が目玉のリリースです。

主なポイント:

  • ALB JWT 検証: ListenerAction.authenticateJwt() で IdP 連携を ALB で完結
  • API GW V2 Lambda オーソライザー: 呼び出し用 IAM ロールを指定可能に(REQUEST のみ)
  • Batch: skipDeregisterOnUpdate で更新時の旧リビジョンを残せるように
  • Alpha: MediaPackage V2 L2: 配信基盤を CDK で宣言的に構築可能に
  • L1 破壊的変更あり: bedrockagentcore / appstream / eks に該当利用がないか確認を

アップグレード時の注意:

  • AWS::EKS::Capability の vended log で EKS_CAPABILITY_ACK_S3_LOGS を使用していないか確認
  • CfnOnlineEvaluationConfig.attrExecutionStatus の参照削除
  • CfnImageBuilder.name が immutable になった点に注意(更新で置き換えが発生)