Back to Releases
v2.221.0 2025年10月24日

AWS CDK v2.221.0 リリース解説

Amazon Bedrock AgentCore の新しいL2コンストラクト、ECR イメージタグの可変性除外フィルタ、Kinesis Firehose のレコードフォーマット変換などが追加されました。

bedrockecrecskinesisfirehosemsk

概要

AWS CDK v2.221.0 では、Amazon Bedrock AgentCore の包括的なL2コンストラクトが追加され、ブラウザツール、コードインタープリター、およびランタイム環境の構築が容易になりました。また、ECR、ECS、Kinesis Firehose などの主要サービスに対する機能強化とバグ修正が含まれています。


新機能

Amazon Bedrock AgentCore - 1Pツールのサポート

PR #35577

新しい alpha パッケージ @aws-cdk/aws-bedrock-agentcore-alpha が追加され、Amazon Bedrock AgentCore のブラウザツールとコードインタープリターのL2コンストラクトが利用可能になりました。

Browser ツール

import * as agentcore from '@aws-cdk/aws-bedrock-agentcore-alpha';
import * as s3 from 'aws-cdk-lib/aws-s3';

const bucket = new s3.Bucket(this, 'BrowserArtifactBucket');

const browserTool = new agentcore.BrowserTool(this, 'BrowserTool', {
  // ブラウザセッションのアーティファクトを保存するS3バケット
  artifactBucket: bucket,

  // ネットワーク設定(オプション)
  networkConfiguration: {
    vpc,                           // ブラウザツールを実行するVPC
    subnets: {
      subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS
    },
    securityGroups: [securityGroup],
  },

  // ブラウザ設定(オプション)
  browserSettings: {
    waitTimeoutSeconds: 30,        // ページロード待機時間(デフォルト: 30秒)
    maxHistorySize: 5000,          // ブラウジング履歴の最大サイズ
  },
});

Code Interpreter ツール

const codeInterpreter = new agentcore.CodeInterpreterTool(this, 'CodeInterpreter', {
  // コード実行結果を保存するS3バケット
  artifactBucket: bucket,

  // 実行環境設定(オプション)
  executionSettings: {
    timeout: cdk.Duration.minutes(5),  // タイムアウト時間(デフォルト: 5分)
    memorySize: 2048,                   // メモリサイズ(MB、デフォルト: 1024)
  },

  // ネットワーク設定(オプション)
  networkConfiguration: {
    vpc,
    subnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
  },
});

これらのツールは、Bedrock Agent と統合して、Webブラウジングやコード実行などの高度なタスクを実行できるようにします。

Amazon Bedrock AgentCore - ランタイムコンストラクト

PR #35623

Bedrock AgentCore のランタイム環境を構築するためのL2コンストラクトが追加されました。

Runtime コンストラクト

import * as ecr_assets from 'aws-cdk-lib/aws-ecr-assets';

// Dockerイメージからランタイムアーティファクトを作成
const artifact = agentcore.RuntimeArtifact.fromDockerBuild(
  './path/to/dockerfile',
  {
    file: 'Dockerfile',
    platform: ecr_assets.Platform.LINUX_AMD64,
  }
);

const runtime = new agentcore.Runtime(this, 'AgentRuntime', {
  // ランタイムアーティファクト
  artifact,

  // ネットワーク設定
  networkConfiguration: {
    vpc,
    subnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
  },

  // 認証設定(オプション)
  authorizerConfiguration: {
    authorizerType: 'IAM',           // 認証タイプ: IAM または NONE
  },

  // 環境変数(オプション)
  environmentVariables: {
    'ENV_VAR_NAME': 'value',
  },
});

RuntimeEndpoint コンストラクト

const endpoint = new agentcore.RuntimeEndpoint(this, 'RuntimeEndpoint', {
  // ランタイムへの参照
  runtime,

  // エンドポイント設定
  endpointName: 'my-agent-endpoint',

  // 認証設定(オプション)
  authorizerConfiguration: {
    authorizerType: 'IAM',
  },
});

// エンドポイントURLを出力
new cdk.CfnOutput(this, 'EndpointUrl', {
  value: endpoint.endpointUrl,
});

これらのコンストラクトにより、カスタムエージェントランタイムの構築とデプロイが簡素化されます。

ECR - イメージタグ可変性の除外フィルタ

PR #35246

ECR リポジトリで特定のタグパターンをイメージタグの可変性設定から除外できるようになりました。これにより、本番環境用タグ(prod-*など)は不変に保ちながら、開発用タグは上書き可能にするといった柔軟な運用が可能になります。

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

const repository = new ecr.Repository(this, 'MyRepository', {
  // イメージタグを不変に設定
  imageTagMutability: ecr.TagMutability.IMMUTABLE,

  // 特定のパターンを除外して可変にする
  imageTagMutabilityExclusionFilters: [
    // ワイルドカードパターンで開発用タグを除外(可変にする)
    ecr.ImageTagMutabilityExclusionFilter.wildcard('dev-*'),
    ecr.ImageTagMutabilityExclusionFilter.wildcard('test-*'),
    ecr.ImageTagMutabilityExclusionFilter.wildcard('staging-*'),
  ],
});

ユースケース:

  • 本番環境タグ(prod-*, v1.0.0)は不変に保ち、開発環境タグ(dev-*, test-*)は上書き可能にする
  • latest タグのみ可変にし、他のすべてのタグを不変にする
  • CI/CD パイプラインで一時的なタグを上書き可能にする

ECS - ManagedInstancesCapacityProvider の IConnectable 実装

PR #35745

ManagedInstancesCapacityProviderIConnectable インターフェースを実装し、セキュリティグループの管理が容易になりました。

import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';

const cluster = new ecs.Cluster(this, 'Cluster', {
  vpc,
});

const capacityProvider = new ecs.ManagedInstancesCapacityProvider(
  this,
  'CapacityProvider',
  {
    cluster,
    machineImage: ecs.EcsOptimizedImage.amazonLinux2023(),
    instanceType: new ec2.InstanceType('t3.medium'),
  }
);

// IConnectable を使用してセキュリティグループを管理
capacityProvider.connections.allowFrom(
  ec2.Peer.ipv4('10.0.0.0/8'),
  ec2.Port.tcp(443),
  'Allow HTTPS from private network'
);

// Application Load Balancer からのトラフィックを許可
capacityProvider.connections.allowFrom(
  alb,
  ec2.Port.tcp(8080),
  'Allow traffic from ALB'
);

この変更により、ECS インスタンスのネットワークアクセス制御が一貫した API で管理できるようになりました。

Kinesis Firehose - レコードフォーマット変換のサポート

PR #35410

Kinesis Firehose で AWS Glue テーブルスキーマを使用したレコードフォーマット変換がサポートされました。JSON データを Parquet や ORC などの列指向フォーマットに変換できます。

import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
import * as destinations from 'aws-cdk-lib/aws-kinesisfirehose-destinations';
import * as glue from 'aws-cdk-lib/aws-glue';
import * as s3 from 'aws-cdk-lib/aws-s3';

declare const glueDatabase: glue.CfnDatabase;
const bucket = new s3.Bucket(this, 'DestinationBucket');

// Glue テーブルスキーマを定義
const schemaTable = new glue.CfnTable(this, 'SchemaTable', {
  databaseName: glueDatabase.ref,
  catalogId: this.account,
  tableInput: {
    name: 'my_schema',
    storageDescriptor: {
      columns: [
        { name: 'user_id', type: 'string' },
        { name: 'timestamp', type: 'bigint' },
        { name: 'event_type', type: 'string' },
      ],
      // ... その他の設定
    },
  },
});

const deliveryStream = new firehose.DeliveryStream(this, 'DeliveryStream', {
  destination: new destinations.S3Bucket(bucket, {
    // レコードフォーマット変換を設定
    dataFormatConversion: {
      // Glue テーブルからスキーマを取得
      schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),

      // 入力フォーマット: OpenX JSON
      inputFormat: new firehose.OpenXJsonInputFormat({
        lowercaseColumnNames: true,           // カラム名を小文字に変換(デフォルト: true)
        convertDotsInJsonKeysToUnderscores: false,  // ドットをアンダースコアに変換
        columnToJsonKeyMappings: {            // カラム名とJSONキーのマッピング
          'user_id': 'userId',
          'event_type': 'eventType',
        },
      }),

      // 出力フォーマット: Parquet
      outputFormat: new firehose.ParquetOutputFormat({
        compression: firehose.ParquetCompression.SNAPPY,  // 圧縮形式(デフォルト: SNAPPY)
        blockSize: cdk.Size.mebibytes(256),              // ブロックサイズ(デフォルト: 256 MiB)
        pageSize: cdk.Size.mebibytes(1),                 // ページサイズ(デフォルト: 1 MiB)
        enableDictionaryCompression: true,                // ディクショナリ圧縮を有効化
        writerVersion: firehose.ParquetWriterVersion.V1,  // Parquet Writer バージョン
      }),
    },
  }),
});

Hive JSON 入力フォーマットの例:

const inputFormat = new firehose.HiveJsonInputFormat({
  // Joda Time パターンでタイムスタンプをパース
  timestampParsers: [
    firehose.TimestampParser.fromFormatString('yyyy-MM-dd'),
    firehose.TimestampParser.fromFormatString('yyyy-MM-dd HH:mm:ss'),
  ],
});

ORC 出力フォーマットの例:

const outputFormat = new firehose.OrcOutputFormat({
  formatVersion: firehose.OrcFormatVersion.V0_12,       // ORC フォーマットバージョン
  compression: firehose.OrcCompression.ZLIB,            // 圧縮形式(デフォルト: ZLIB)
  blockSize: cdk.Size.mebibytes(256),                   // ブロックサイズ
  bloomFilterColumns: ['user_id', 'event_type'],        // Bloom Filter 対象カラム
  bloomFilterFalsePositiveProbability: 0.05,            // Bloom Filter 偽陽性率(デフォルト: 0.05)
  dictionaryKeyThreshold: 0.0,                          // ディクショナリキー閾値
  enablePadding: false,                                 // パディング有効化
  paddingTolerance: 0.0,                                // パディング許容度
  rowIndexStride: 10000,                                // 行インデックス間隔(デフォルト: 10000)
  stripeSize: cdk.Size.mebibytes(64),                   // ストライプサイズ(デフォルト: 64 MiB)
});

この機能により、S3 に保存されるデータを効率的な列指向フォーマットに変換し、Athena や Redshift Spectrum でのクエリパフォーマンスを向上させることができます。


Alphaモジュール

MSK - Kafka 4.1 のサポート

PR #35759

@aws-cdk/aws-msk-alpha パッケージで Apache Kafka バージョン 4.1 がサポートされました。

import * as msk from '@aws-cdk/aws-msk-alpha';

const cluster = new msk.Cluster(this, 'Cluster', {
  clusterName: 'myCluster',
  kafkaVersion: msk.KafkaVersion.V4_1,  // Kafka 4.1 を使用
  vpc,
});

Kafka 4.1 には、パフォーマンスの改善、セキュリティの強化、新機能が含まれています。


バグ修正

ECS Patterns - ALB 更新時のターゲットグループ競合を解決

PR #35508

ECS パターンで Application Load Balancer の internetFacing または loadBalancerName を更新する際に発生していたターゲットグループの競合エラーが修正されました。この修正は新しいフィーチャーフラグの下で有効になります。

修正内容:

  • ALB のプロパティを変更する際、ターゲットグループが正しく更新されるようになりました
  • フィーチャーフラグ @aws-cdk/aws-ecs-patterns:removeDefaultLoadBalancerNames で制御されます

Lambda - ESM モジュールシステムでのエントリファイル検出

PR #35797

ESM(ECMAScript Modules)を使用しているプロジェクトで、Lambda 関数のエントリファイルが正しく検出されない問題が修正されました。

影響範囲:

  • package.json"type": "module" を指定しているプロジェクト
  • Node.js Lambda 関数のバンドリング処理

Lambda Runtime - 最新ランタイムのフォールバックを Node 22.x に変更

PR #35764

Lambda の最新 Node.js ランタイムとして使用されるフォールバックバージョンが Node 22.x に変更されました。

OpenSearch Service - i8g ノードの EBS 検証を追加

PR #35668

OpenSearch Service の i8g インスタンスタイプで、EBS が不要であるにもかかわらず EBS 設定をしているとエラーが発生していた問題が修正されました。

修正内容:

  • i8g インスタンスタイプ(インスタンスストレージを持つ)で EBS 設定が指定された場合に適切な検証エラーを表示

S3 Deployment - Source.data() での空文字列の処理

PR #35824

Source.data() で空文字列を渡した際に発生していたエラーが修正されました。

Step Functions Tasks - apiEndpoint での組み込み関数のサポート

PR #32139

Step Functions Tasks で apiEndpoint パラメータに CloudFormation の組み込み関数(Intrinsic Functions)を渡せるようになりました。この機能は新しいフィーチャーフラグの下で有効になります。

使用例:

import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';
import * as cdk from 'aws-cdk-lib';

new tasks.CallAwsService(this, 'CallService', {
  service: 'lambda',
  action: 'invoke',
  parameters: {
    FunctionName: 'myFunction',
  },
  // 組み込み関数を使用して動的に API エンドポイントを指定
  apiEndpoint: cdk.Fn.importValue('ApiEndpointExport'),
});

フィーチャーフラグ: @aws-cdk/aws-stepfunctions-tasks:enableApiEndpointIntrinsicFunctions

ElastiCache Alpha - Redis 7 サーバーレスキャッシュのインポート

PR #35629

@aws-cdk/aws-elasticache-alpha パッケージで、Redis 7 サーバーレスキャッシュを既存のリソースからインポートできない問題が修正されました。


破壊的変更

L1 CloudFormation リソース定義の更新

PR #35816

L1 リソースが最新の CloudFormation スキーマに更新され、一部のプロパティと属性に互換性のない変更が含まれています:

AWS DataZone:

  • AWS::DataZone::ProjectProfile: Id プロパティが削除されました

AWS CloudWatch Logs:

  • AWS::Logs::DeliveryDestination: DeliveryDestinationType 属性が削除されました

Amazon S3:

  • AWS::S3::AccessGrantsLocation: IamRoleArn プロパティが必須になりました
  • AWS::S3::AccessGrantsLocation: LocationScope プロパティが必須になりました

AWS Service Catalog:

  • AWS::ServiceCatalog::TagOptionAssociation: Id 属性が削除されました

影響を受けるユーザー: L1 リソース(CfnXxx クラス)を直接使用し、上記のプロパティや属性を参照している場合は、コードの更新が必要です。

対応方法:

  • 削除されたプロパティや属性への参照を削除
  • 新しく必須になったプロパティに値を設定

まとめ

AWS CDK v2.221.0 は、Amazon Bedrock AgentCore の包括的なL2コンストラクトの追加により、生成 AI アプリケーションの構築が大幅に簡素化されました。ブラウザツール、コードインタープリター、カスタムランタイムのデプロイが、タイプセーフで簡潔な API で実現できるようになりました。

また、ECR のイメージタグ管理の柔軟性向上、Kinesis Firehose のデータ変換機能のサポート、および多数のバグ修正により、より堅牢で使いやすいインフラストラクチャコード環境が提供されています。

L1 リソースの破壊的変更については、該当するリソースを使用している場合は移行対応が必要です。通常、L2 コンストラクトを使用している場合は影響を受けません。

詳細については、公式リリースノートをご覧ください。