Back to Releases
v2.207.0 2025年7月24日

AWS CDK v2.207.0 リリース解説

Bedrock Prompt Management、CloudWatch検索式対応、RDS Database Insights、CloudWatch Logs Transformer機能を含む大型アップデート

bedrockcloudwatchrdslogscoreautoscalings3-deployment

概要

AWS CDK v2.207.0では、Amazon BedrockのPrompt Management、CloudWatch GraphWidgetでの検索式サポート、RDS InstancesへのDatabase Insightsサポート、CloudWatch Logs Transformerなど、多数の新機能が追加されました。また、抑制可能なInfo注釈のためのaddInfoV2メソッドや、いくつかの重要なバグ修正も含まれています。

新機能

Amazon Bedrock Prompt Management (Alpha)

Amazon Bedrock向けに、プロンプト管理機能が包括的にサポートされました。プロンプトの作成、保存、バージョン管理が可能になり、AIワークフローを合理化し、アプリケーション間で一貫したプロンプト使用を確保できます。

主な機能:

  • Prompt Construct: 複数のバリアントをサポートする、プロンプト作成・管理のメインコンストラクト
  • 3種類のプロンプトバリアント:
    • TextPromptVariant: 変数置換をサポートするシンプルなテキストベースのプロンプト
    • ChatPromptVariant: システムメッセージ、メッセージ履歴、ツール設定をサポートする会話型プロンプト
    • AgentPromptVariant: Bedrock Agentsとの統合用プロンプト
  • プロンプトバージョニング: 不変のプロンプトスナップショットを作成するPromptVersionコンストラクト
  • ツール設定: チャットプロンプトでのツール選択と仕様のサポート
  • プロンプトルーティング: コスト最適化のためのインテリジェントなプロンプトルーティング統合

使用例:

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

// テキストプロンプトバリアントの作成
const textVariant = new bedrock.TextPromptVariant({
  variantName: 'simple-text',
  modelId: 'anthropic.claude-3-sonnet',
  promptText: 'あなたは{{role}}です。{{question}}に答えてください。',
  // 推論設定
  inferenceConfiguration: {
    maxTokens: 1000,        // 最大トークン数
    temperature: 0.7,       // 温度パラメータ(0.0-1.0)
    topP: 0.9,              // Top-Pサンプリング
  },
});

// チャットプロンプトバリアントの作成
const chatVariant = new bedrock.ChatPromptVariant({
  variantName: 'chat-assistant',
  modelId: 'anthropic.claude-3-sonnet',
  // システムメッセージの設定
  systemPrompt: [
    { text: 'あなたは親切なアシスタントです。' }
  ],
  // 会話履歴の設定
  messages: [
    {
      role: bedrock.ConversationRole.USER,
      content: [{ text: '{{user_question}}' }]
    }
  ],
  // ツール設定(オプション)
  toolConfiguration: {
    toolChoice: bedrock.ToolChoice.auto(),  // ツールの自動選択
    tools: [
      // ツールの仕様を定義
    ]
  },
  inferenceConfiguration: {
    maxTokens: 2000,
    temperature: 0.5,
  },
});

// プロンプトの作成
const prompt = new bedrock.Prompt(this, 'MyPrompt', {
  promptName: 'my-ai-prompt',
  description: 'カスタマーサポート用AIプロンプト',
  // デフォルトバリアントの指定
  defaultVariant: textVariant,
  // 複数のバリアントを登録可能
  variants: [textVariant, chatVariant],
});

// プロンプトバージョンの作成(不変のスナップショット)
const promptVersion = new bedrock.PromptVersion(this, 'PromptVersion', {
  prompt: prompt,
  description: 'v1.0リリース版',
});

// 読み取り権限の付与
prompt.grantGet(myLambdaFunction);

エージェントプロンプトバリアントの例:

// Bedrock Agents用のプロンプトバリアント
const agentVariant = new bedrock.AgentPromptVariant({
  variantName: 'agent-variant',
  modelId: 'anthropic.claude-3-sonnet',
  // エージェント用の指示
  promptText: 'あなたは{{agent_role}}として動作します。',
  inferenceConfiguration: {
    maxTokens: 1500,
    temperature: 0.3,      // エージェントにはより決定論的な応答を設定
  },
});

PR #34754

CloudWatch GraphWidgetで検索式をサポート

CloudWatchのGraphWidgetで検索式(Search Expression)がネイティブにサポートされました。従来はMathExpressionを経由する回避策が必要でしたが、新しいSearchExpressionクラスにより、直接的かつシンプルに検索式を使用できるようになりました。

使用例:

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

const dashboard = new cloudwatch.Dashboard(this, 'MyDashboard', {
  dashboardName: 'application-metrics',
});

// 検索式を使用してメトリクスを動的に検索
const searchExpression = new cloudwatch.SearchExpression({
  // CloudWatch検索式の構文
  expression: "SEARCH('{AWS/Lambda,FunctionName} MetricName=\"Duration\"', 'Average', 300)",
  // グラフの表示設定
  label: 'Lambda関数の平均実行時間',
  color: cloudwatch.Color.BLUE,
  period: cdk.Duration.minutes(5),   // 集計期間
});

// GraphWidgetに追加
dashboard.addWidgets(new cloudwatch.GraphWidget({
  title: 'Lambda関数パフォーマンス',
  // 検索式を直接指定
  left: [searchExpression],
  width: 12,
  height: 6,
}));

// 複数のメトリクスを組み合わせることも可能
dashboard.addWidgets(new cloudwatch.GraphWidget({
  title: 'EC2インスタンスCPU使用率',
  left: [
    new cloudwatch.SearchExpression({
      expression: "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average', 300)",
      label: 'CPU使用率',
    }),
  ],
  // 通常のメトリクスと混在も可能
  right: [
    new cloudwatch.Metric({
      namespace: 'AWS/EC2',
      metricName: 'NetworkIn',
      statistic: 'Sum',
    }),
  ],
}));

検索式を使用すると、ワイルドカードやディメンションフィルタを活用して、複数のリソースのメトリクスを動的にグラフ化できます。

PR #34933

コアモジュール: 抑制可能なInfo注釈 (addInfoV2)

AnnotationsクラスにaddInfoV2メソッドが追加されました。これは既存のaddWarningV2のInfo版で、CDK開発者が情報メッセージを抑制できるようにします。一度確認したInfoメッセージを今後のデプロイで非表示にすることができます。

使用例:

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

export class MyStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 抑制可能なInfo注釈を追加
    cdk.Annotations.of(this).addInfoV2(
      'my-info-id',                          // 一意のメッセージID
      'この機能は将来的に改善される予定です。'    // メッセージ内容
    );

    // 特定のコンストラクトに対して注釈を追加
    const bucket = new s3.Bucket(this, 'MyBucket');
    cdk.Annotations.of(bucket).addInfoV2(
      'bucket-info',
      'このバケットは開発環境用です。'
    );
  }
}

Infoメッセージの確認(抑制):

// cdk.jsonで設定
{
  "context": {
    "@aws-cdk/core:acknowledgedInfoMessages": [
      "my-info-id",      // このIDのInfoメッセージは表示されなくなる
      "bucket-info"
    ]
  }
}

または、コードで確認:

cdk.Annotations.of(this).acknowledgeInfo('my-info-id');

この機能により、既知の情報メッセージをクリーンに管理でき、本当に重要な新しいメッセージに注目できるようになります。

PR #34872

RDS: Database Insights for RDS Instances

RDS DatabaseInstanceに対してDatabase Insightsモードがサポートされました(以前はAurora Clusterのみサポート)。Database Insightsを有効にすることで、データベースのパフォーマンスメトリクスをCloudWatchで詳細に監視できます。

使用例:

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

// RDSインスタンスの作成
const instance = new rds.DatabaseInstance(this, 'Database', {
  engine: rds.DatabaseInstanceEngine.postgres({
    version: rds.PostgresEngineVersion.VER_16_1,
  }),
  vpc: vpc,
  instanceType: ec2.InstanceType.of(
    ec2.InstanceClass.T3,
    ec2.InstanceSize.MEDIUM
  ),
  // Database Insightsモードの有効化
  databaseInsightsMode: rds.DatabaseInsightsMode.ADVANCED,  // または BASIC
});

Database Insightsモードの種類:

  • DatabaseInsightsMode.BASIC: 基本的なパフォーマンスメトリクスを収集
  • DatabaseInsightsMode.ADVANCED: より詳細なパフォーマンスデータとクエリ分析を含む

この機能により、RDSインスタンスのパフォーマンス問題をより効果的に診断・最適化できます。

PR #34854

CloudWatch Logs: Transformerサポート

CloudWatch LogsにTransformer機能が追加されました。Transformerを使用すると、ログデータの解析、変換、フィルタリングを行い、ログの可読性向上やコスト削減が可能になります。

主な機能:

  • 5種類のプロセッサータイプ:
    • ParserProcessor: ログの解析(CSV、JSON、Syslog等)
    • VendedLogParser: ベンダー固有のログフォーマット解析
    • StringMutatorProcessor: 文字列操作(分割、削除、トリム等)
    • JsonMutatorProcessor: JSONデータの操作
    • DataConverterProcessor: データ型変換

使用例:

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

// ログトランスフォーマーの作成
const transformer = new logs.Transformer(this, 'MyTransformer', {
  transformerName: 'app-log-transformer',

  // トランスフォーマー設定(プロセッサーのリスト)
  transformerConfig: [
    // 1. CSVパーサー: カンマ区切りのログをパース
    logs.ProcessorFactory.createParserProcessor(
      logs.ParserProcessorType.CSV,
      {
        source: '/log',              // パース対象のフィールド
        delimiter: ',',              // 区切り文字
        columns: ['timestamp', 'level', 'message'],  // カラム名
      }
    ),

    // 2. 文字列操作: 不要なフィールドを削除
    logs.ProcessorFactory.createStringMutatorProcessor(
      logs.StringMutatorType.DELETE_KEYS,
      {
        keys: ['/log'],              // 元のログフィールドを削除
      }
    ),

    // 3. JSON操作: 新しいフィールドを追加
    logs.ProcessorFactory.createJsonMutatorProcessor(
      logs.JsonMutatorType.ADD_KEYS,
      {
        entries: {
          '/environment': 'production',   // 環境名を追加
          '/application': 'my-app',       // アプリケーション名を追加
        },
      }
    ),
  ],
});

// ロググループにTransformerを適用
const logGroup = new logs.LogGroup(this, 'MyLogGroup', {
  logGroupName: '/aws/lambda/my-function',
  retention: logs.RetentionDays.ONE_WEEK,
  // Transformerを指定
  transformer: transformer,
});

VendedLogParserの例(CloudFrontログの解析):

// CloudFrontログ専用のパーサー
const cloudFrontTransformer = new logs.Transformer(this, 'CloudFrontTransformer', {
  transformerName: 'cloudfront-log-parser',
  transformerConfig: [
    logs.ProcessorFactory.createVendedLogParser(
      logs.VendedLogType.CLOUDFRONT,     // CloudFront形式のログを自動解析
      {
        source: '/log',
      }
    ),
  ],
});

データ型変換の例:

const converterTransformer = new logs.Transformer(this, 'DataConverter', {
  transformerName: 'data-type-converter',
  transformerConfig: [
    // 文字列を数値に変換
    logs.ProcessorFactory.createDataConverterProcessor(
      logs.DataConverterType.STRING_TO_NUMBER,
      {
        source: '/response_time',          // 変換対象
        target: '/response_time_ms',       // 変換後の格納先
      }
    ),
  ],
});

Transformerを使用することで、ログの前処理を自動化し、ログストレージコストを削減しながら、より使いやすいログデータを取得できます。

PR #34996

CloudWatch Logs: ADCリージョンでのInfrequent Accessロググラスサポート

CloudWatch LogsのInfrequent Access(IA)ロググラスが、新しいADC(Application Data Center)リージョンでサポートされました。

PR #34999

コアモジュール: コンテキストキーに基づく複数の検証レポート書き込み

検証レポートをコンテキストキーに基づいて複数回書き込めるようになりました。これにより、複雑なデプロイシナリオでの検証レポート管理が向上します。

PR #34927

L1コンストラクトの更新

CloudFormationリソース定義が最新版に更新されました。

PR #35020

バグ修正

AutoScaling: Launch Templateへの移行時の検証オプション追加

Auto Scaling GroupをLaunch Configurationから Launch Templateに移行する際に、UpdatePolicyが指定されているかを検証するオプションが追加されました。これにより、より安全な移行が可能になります。

PR #34832

Core: Nested StackでのExclusiveフラグ付きアセットバンドリングの修正

Nested Stackでexclusiveフラグを使用したアセットバンドリングが正しく動作するように修正されました。

PR #30983

Kinesis Firehose: grantPrincipalの複数回呼び出し問題を修正

Kinesis Firehose Delivery StreamでgrantPrincipalを複数回呼び出せない問題が修正されました。

PR #34682

S3 Deployment: Source.dataでのクロススタック参照の問題を修正

S3 DeploymentでSource.dataを使用した際のクロススタック参照が壊れる問題が修正されました。独自の参照解決実装を削除し、CDKの標準的な合成ステージでの解決に統一されたため、クロススタック参照が正しく動作するようになりました。

PR #34916

Alphaモジュール

このリリースのAlphaモジュールバージョンは 2.207.0-alpha.0 です。

主なAlpha機能:

  • Bedrock Prompt Management: 上記の新機能セクションで説明した、Bedrock向けの包括的なプロンプト管理機能がAlphaモジュールとして提供されています

まとめ

AWS CDK v2.207.0は、AI/ML(Bedrock)、監視(CloudWatch)、データベース(RDS)、ログ管理(CloudWatch Logs)の各領域で重要な機能追加を行った大型リリースです。

特に注目すべき点:

  • Bedrock Prompt Management: AIアプリケーションのプロンプト管理が体系化され、バージョン管理や再利用が容易に
  • CloudWatch Search Expression: メトリクスの動的検索とグラフ化がシンプルに
  • RDS Database Insights: RDSインスタンスのパフォーマンス監視が強化
  • CloudWatch Logs Transformer: ログの前処理と最適化が可能に
  • 抑制可能なInfo注釈: CDK開発体験の向上

また、いくつかの重要なバグ修正により、Auto Scaling、S3 Deployment、Kinesis Firehoseなどの既存機能の安定性も向上しています。

特にAI/MLワークロードやログ処理の最適化を検討している方には、今回の新機能が大きな価値をもたらすでしょう。