Back to Releases
v2.205.0 2025年7月15日

AWS CDK v2.205.0 リリース解説

Kinesis Firehose のタイムゾーン設定、CodeBuild のキャッシュ共有、RDS Aurora の fromLookup メソッドなど、複数の新機能を追加

kinesisfirehosecodebuildcloudwatchec2eventsrdssyntheticslambdapipelinestags

概要

AWS CDK v2.205.0 は、複数のモジュールにわたる新機能とバグ修正を含むリリースです。主な変更点として、Kinesis Firehose での S3 配信先のカスタムタイムゾーン設定サポート、CodeBuild プロジェクト間でのキャッシュ共有機能、RDS Aurora クラスタの fromLookup メソッドの追加、CloudWatch ダッシュボードでのクエリ言語指定などが含まれます。

新機能

Kinesis Firehose: S3 配信先のカスタムタイムゾーン設定

モジュール: @aws-cdk/aws-kinesisfirehose

Amazon Data Firehose で S3 オブジェクトプレフィックスに使用されるタイムスタンプのタイムゾーンを設定できるようになりました。これにより、ログやデータを地域のタイムゾーンに合わせて整理できます。

新しいプロパティ:

  • timeZone (string, optional): S3 オブジェクトプレフィックスのタイムスタンプに適用するタイムゾーン(例: “America/New_York”, “Asia/Tokyo”)

コード例:

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

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

const deliveryStream = new firehose.DeliveryStream(this, 'Delivery Stream', {
  destinations: [new destinations.S3Bucket(bucket, {
    dataOutputPrefix: 'logs/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/',
    errorOutputPrefix: 'error-logs/!{firehose:error-output-type}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/',
    // カスタムタイムゾーンを設定(例: 東京時間)
    timeZone: 'Asia/Tokyo',  // デフォルト: UTC
  })],
});

参考リンク: Amazon Data Firehose タイムスタンプの名前空間

PR: #34738


CodeBuild: プロジェクト間でのキャッシュ共有

モジュール: @aws-cdk/aws-codebuild

CodeBuild プロジェクト間で S3 キャッシュを共有できるようになりました。cacheNamespace を使用することで、複数のプロジェクトが同じビルドキャッシュを利用し、ビルド時間を短縮できます。

新しいプロパティ:

  • cacheNamespace (string, optional): キャッシュの名前空間。同じ名前空間を持つプロジェクト間でキャッシュが共有されます

コード例:

import * as codebuild from 'aws-cdk-lib/aws-codebuild';
import * as s3 from 'aws-cdk-lib/aws-s3';

const cacheBucket = new s3.Bucket(this, 'CacheBucket');

// プロジェクト1: 共有キャッシュを使用
const project1 = new codebuild.Project(this, 'Project1', {
  source: codebuild.Source.gitHub({
    owner: 'owner',
    repo: 'repo1',
  }),
  cache: codebuild.Cache.bucket(cacheBucket, {
    // 共有キャッシュの名前空間を設定
    cacheNamespace: 'shared-cache',  // 同じ名前空間を使用するプロジェクト間でキャッシュが共有される
  }),
});

// プロジェクト2: 同じキャッシュ名前空間を使用して、プロジェクト1とキャッシュを共有
const project2 = new codebuild.Project(this, 'Project2', {
  source: codebuild.Source.gitHub({
    owner: 'owner',
    repo: 'repo2',
  }),
  cache: codebuild.Cache.bucket(cacheBucket, {
    cacheNamespace: 'shared-cache',  // プロジェクト1と同じ名前空間
  }),
});

参考リンク: CodeBuild S3 キャッシュの共有

PR: #34257


CloudWatch Dashboards: クエリ言語の指定

モジュール: @aws-cdk/aws-cloudwatch

CloudWatch ダッシュボードのログクエリウィジェットで、クエリ言語(CloudWatch Logs Insights、OpenSearch PPL など)を明示的に指定できるようになりました。

新しいプロパティ:

  • queryLanguage (LogQueryLanguage, optional): ログクエリに使用する言語
    • LogQueryLanguage.CWLI: CloudWatch Logs Insights(デフォルト)
    • LogQueryLanguage.PPL: OpenSearch Pipe Processing Language

コード例:

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

const logGroup = logs.LogGroup.fromLogGroupName(this, 'LogGroup', '/aws/lambda/my-function');

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

// CloudWatch Logs Insights クエリを使用(デフォルト)
dashboard.addWidgets(new cloudwatch.LogQueryWidget({
  logGroupNames: [logGroup.logGroupName],
  queryLines: [
    'fields @timestamp, @message',
    'filter @message like /ERROR/',
    'sort @timestamp desc',
  ],
  // queryLanguage を明示的に指定(省略可能、デフォルトは CWLI)
  queryLanguage: cloudwatch.LogQueryLanguage.CWLI,
}));

// OpenSearch PPL クエリを使用
dashboard.addWidgets(new cloudwatch.LogQueryWidget({
  logGroupNames: [logGroup.logGroupName],
  queryLines: [
    'source = \'/aws/lambda/my-function\'',
    '| where @message like "ERROR"',
    '| sort @timestamp desc',
  ],
  // OpenSearch PPL を指定
  queryLanguage: cloudwatch.LogQueryLanguage.PPL,
}));

参考リンク: Amazon CloudWatch と Amazon OpenSearch Service の統合分析

PR: #34547


EC2: C8gn インスタンスクラスの追加

モジュール: @aws-cdk/aws-ec2

AWS Graviton4 プロセッサを搭載した C8gn インスタンスクラスがサポートされました。C8gn インスタンスは、ネットワーク集約型ワークロードに最適化されています。

新しいインスタンスタイプ:

  • InstanceClass.C8GN: C8gn インスタンスクラス
  • サポートされるサイズ: MEDIUM, LARGE, XLARGE, XLARGE2, XLARGE4, XLARGE8, XLARGE12, XLARGE16, XLARGE24, XLARGE48, METAL_24XL, METAL_48XL

コード例:

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

const vpc = new ec2.Vpc(this, 'VPC');

// C8gn インスタンスを使用
const instance = new ec2.Instance(this, 'Instance', {
  vpc,
  // C8gn.xlarge インスタンスタイプ(Graviton4 プロセッサ搭載)
  instanceType: ec2.InstanceType.of(
    ec2.InstanceClass.C8GN,  // 新しいインスタンスクラス
    ec2.InstanceSize.XLARGE
  ),
  machineImage: ec2.MachineImage.latestAmazonLinux2023({
    cpuType: ec2.AmazonLinuxCpuType.ARM_64,  // ARM64 アーキテクチャ
  }),
});

参考リンク: Amazon EC2 C8gn インスタンス発表

PR: #34866


EventBridge: API Destination の arnForPolicy 属性

モジュール: @aws-cdk/aws-events

EventBridge API Destination で、IAM ポリシーに使用するための ARN(arnForPolicy)が取得できるようになりました。この ARN を使用することで、より細かい権限管理が可能になります。

新しいプロパティ:

  • apiDestinationArnForPolicy (string): IAM ポリシーで使用するための API Destination ARN

コード例:

import * as events from 'aws-cdk-lib/aws-events';
import * as iam from 'aws-cdk-lib/aws-iam';

// API Destination の作成
const connection = new events.Connection(this, 'Connection', {
  authorization: events.Authorization.basic('username', SecretValue.unsafePlainText('password')),
});

const destination = new events.ApiDestination(this, 'Destination', {
  connection,
  endpoint: 'https://api.example.com/webhook',
});

// IAM ポリシーで arnForPolicy を使用
const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.ServicePrincipal('events.amazonaws.com'),
});

role.addToPolicy(new iam.PolicyStatement({
  actions: ['events:InvokeApiDestination'],
  // IAM ポリシー用の ARN を使用
  resources: [destination.apiDestinationArnForPolicy],  // より細かい権限管理が可能
}));

// 既存の API Destination を参照する場合
const importedDestination = events.ApiDestination.fromApiDestinationAttributes(
  this,
  'ImportedDestination',
  {
    apiDestinationArn: 'arn:aws:events:us-east-1:123456789012:api-destination/my-destination',
    // arnForPolicy も指定可能
    apiDestinationArnForPolicy: 'arn:aws:events:us-east-1:123456789012:api-destination/my-destination/*',
  }
);

PR: #34315


RDS: Aurora クラスタの fromLookup メソッド

モジュール: @aws-cdk/aws-rds

RDS DatabaseInstance に既にある fromLookup メソッドが、Aurora DatabaseCluster にも追加されました。これにより、既存の Aurora クラスタを識別子で検索して参照できます。

新しいメソッド:

  • DatabaseCluster.fromLookup(): クラスタ識別子を使用して既存の Aurora クラスタを検索

コード例:

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

// 既存の Aurora クラスタを識別子で検索
const cluster = rds.DatabaseCluster.fromLookup(this, 'Cluster', {
  // クラスタ識別子を指定
  clusterIdentifier: 'my-aurora-cluster',
});

// 接続情報を取得して使用
const vpc = ec2.Vpc.fromLookup(this, 'VPC', {
  vpcId: cluster.vpc.vpcId,
});

// クラスタのエンドポイント情報にアクセス
console.log(cluster.clusterEndpoint.hostname);
console.log(cluster.clusterEndpoint.port);
console.log(cluster.clusterReadEndpoint.hostname);

// セキュリティグループの設定
cluster.connections.allowDefaultPortFromAnyIpv4('Allow database access');

注意事項:

  • fromLookup は CDK のコンテキストキャッシュを使用します
  • デプロイ時に実際のクラスタ情報を取得します
  • 取得した情報は cdk.context.json にキャッシュされます

PR: #34849


Synthetics: Canary の自動リトライ設定

モジュール: @aws-cdk/aws-synthetics

CloudWatch Synthetics Canary で、失敗時の自動リトライ回数を設定できるようになりました。これにより、一時的な障害による誤検知を減らすことができます。

新しいプロパティ:

  • maxRetries (number, optional): Canary 実行が失敗した場合の最大リトライ回数(0-2、デフォルト: 0)

コード例:

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

const canary = new synthetics.Canary(this, 'MyCanary', {
  schedule: synthetics.Schedule.rate(Duration.minutes(5)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
  // Canary 失敗時の自動リトライを設定
  maxRetries: 2,  // 最大2回までリトライ(デフォルト: 0、最大: 2)
});

使用例:

  • maxRetries: 0: リトライなし(デフォルト)
  • maxRetries: 1: 1回リトライ(合計2回実行)
  • maxRetries: 2: 2回リトライ(合計3回実行)

PR: #34541


Synthetics: タグの自動レプリケーション

モジュール: @aws-cdk/aws-synthetics

CloudWatch Synthetics Canary に付与したタグを、Canary が作成する Lambda 関数に自動的にレプリケートできるようになりました。

新しいプロパティ:

  • resourcesToReplicateTags (ResourceToTag[], optional): タグをレプリケートするリソースのリスト
    • ResourceToTag.LAMBDA_FUNCTION: Lambda 関数にタグをコピー

コード例:

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

const canary = new synthetics.Canary(this, 'MyCanary', {
  schedule: synthetics.Schedule.rate(Duration.minutes(5)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
  // Lambda 関数にタグを自動レプリケート
  resourcesToReplicateTags: [
    synthetics.ResourceToTag.LAMBDA_FUNCTION,  // Lambda 関数にタグをコピー
  ],
});

// Canary にタグを追加(これらのタグが Lambda 関数にもコピーされる)
cdk.Tags.of(canary).add('Environment', 'Production');
cdk.Tags.of(canary).add('Team', 'DevOps');
cdk.Tags.of(canary).add('CostCenter', 'Engineering');

メリット:

  • タグ管理の簡素化: Canary にタグを追加するだけで、自動的に Lambda 関数にもタグが付与されます
  • コスト配分の改善: タグベースのコスト配分が容易になります
  • コンプライアンス: 組織のタグ付けポリシーを簡単に遵守できます

PR: #34830


Core: Cloud Assembly への機能フラグ情報の記録

モジュール: @aws-cdk/core

Cloud Assembly に機能フラグ(feature flags)の情報が記録されるようになりました。これにより、デプロイ時にどの機能フラグが使用されたかを追跡できます。

PR: #34919


バグ修正

Lambda: addToRolePolicy でのトークン解決の修正

モジュール: @aws-cdk/aws-lambda

Lambda 関数の addToRolePolicy メソッドで、トークンの解決に関する問題が修正されました。これにより、動的な値を含むポリシーステートメントが正しく処理されるようになりました。

PR: #34904


Pipelines: 同一ハッシュで異なる配信先のアセットの公開

モジュール: @aws-cdk/pipelines

CDK Pipelines で、同じハッシュを持つが異なる配信先に配置されるアセットが、それぞれ個別に公開されるように修正されました。

PR: #34790


Tags: スタックレベルでの excludeResourceTypes の修正(機能フラグ)

モジュール: @aws-cdk/core

スタックレベルで適用されたタグの excludeResourceTypes オプションが正しく動作しない問題が修正されました。この修正は機能フラグで保護されています。

PR: #31443


L1 リソースの変更

CloudFormation のリソース定義が更新され、以下の L1 リソースに破壊的な変更が含まれています:

削除された属性

以下のリソースから Id 属性が削除されました:

  • aws-cdk-lib.aws_ec2.CfnTrafficMirrorFilterRule: Id 属性を削除
  • aws-cdk-lib.aws_kinesis.CfnStreamConsumer: Id 属性を削除
  • aws-cdk-lib.aws_neptune.CfnDBInstance: Id 属性を削除

これらの属性は、CloudFormation の実際の仕様により正確に反映させるために削除されました。L1 リソースを直接使用している場合は、影響を受ける可能性があります。


Alpha モジュール

v2.205.0-alpha.0 では、特に変更はありません。


まとめ

AWS CDK v2.205.0 は、多くの新機能とバグ修正を含む充実したリリースです。特に以下の機能が注目に値します:

  • Kinesis Firehose: S3 配信先でのタイムゾーン設定により、地域に応じたデータ整理が可能に
  • CodeBuild: キャッシュ共有機能により、複数プロジェクト間でのビルド効率が向上
  • RDS: Aurora クラスタの fromLookup により、既存クラスタの参照が容易に
  • CloudWatch: ログクエリウィジェットで複数のクエリ言語をサポート
  • Synthetics: Canary の自動リトライとタグレプリケーションにより、運用性が向上
  • EC2: C8gn インスタンス(Graviton4 搭載)のサポート

L1 リソースの一部の属性が削除されているため、L1 リソースを直接使用している場合は影響を確認してください。