概要
このリリースでは、CloudWatch の PromQL Alarm L2 コンストラクト、スタック間参照の新しい「weak」モード、DynamoDB Streams へのリソースポリシーサポートなど、多くの重要な新機能が追加されました。また、L1 CloudFormation リソース定義の更新に伴い、一部の属性が削除される破壊的変更が含まれています。
リリース: v2.254.0
破壊的変更
L1 CloudFormation リソース定義の更新 (#37826)
L1 リソースが CloudFormation リソーススキーマから自動生成される際に、以下の属性が削除されました:
- aws-elasticache:
AWS::ElastiCache::CacheClusterのId属性が削除 - aws-sagemaker:
AWS::SageMaker::ModelのId属性が削除 - aws-vpclattice:
AWS::VpcLattice::AuthPolicyのState属性の enum 値がACTIVE|INACTIVEからActive|Inactiveに変更
移行方法:
- これらの属性を参照しているコードがある場合は、代替の方法(
Refや他の属性)を使用するように修正してください。
新機能
CloudWatch PromQL Alarm L2 コンストラクト (#37793)
この機能でできること:
- PromQL インスタントクエリに基づいて CloudWatch アラームを作成できます。CloudWatch OTLP エンドポイントを通じて取り込まれたメトリクスを監視し、標準のアラームとは異なる期間ベースの状態遷移(pending/recovery periods)を使用します。
使用例:
import { PromQLAlarm } from 'aws-cdk-lib/aws-cloudwatch';
import * as cdk from 'aws-cdk-lib';
const alarm = new PromQLAlarm(this, 'MyPromQLAlarm', {
// PromQL インスタントクエリ
query: 'sum(rate(http_requests_total[5m]))',
// アラーム状態に遷移するまでの待機時間
pendingPeriod: cdk.Duration.minutes(5),
// OK 状態に戻るまでの待機時間
recoveryPeriod: cdk.Duration.minutes(10),
// クエリの評価間隔
evaluationInterval: cdk.Duration.minutes(1),
// アラームの説明
alarmDescription: 'HTTP リクエストレートが高すぎます',
});
// アラームアクションの追加も可能
alarm.addAlarmAction(new SnsAction(topic));
ポイント:
- PromQL アラームは CloudWatch OTLP エンドポイントで取り込まれたメトリクス専用です
pendingPeriodとrecoveryPeriodは標準アラームの評価期間/データポイント モデルとは異なります
スタック間参照の weak モード(クロスリージョン) (#37800)
この機能でできること:
Fn::GetStackOutputを使用した weak 参照により、プロデューサースタックをコンシューマースタックとは独立して削除できるようになります。SSM ベースの strong 参照に比べて追加インフラが不要でシンプルです。
使用例:
cdk.json でコンテキストキーを設定:
{
"context": {
"@aws-cdk/core:crossStackReferenceStrength": "weak"
}
}
設定オプション:
"strong"(デフォルト): SSM 経由の ExportWriter/ExportReader — プロデューサーはコンシューマーが存在する間削除不可"weak":Fn::GetStackOutput— シンプルだがプロデューサーを独立して削除可能"both": 移行用 — SSM と Output の両方を維持
ポイント:
- クロスアカウント参照の場合、プロデューサースタックに IAM ロールとポリシーが自動作成されます
"both"モードは既存の strong から weak への移行パスとして使用できます
スタック間参照の weak モード(同一環境) (#37824)
この機能でできること:
- 同一アカウント・同一リージョン内のスタック間でも weak 参照が使用可能になりました。これまではクロスリージョンのみでしたが、同一環境でも
Fn::GetStackOutputを使用した参照が可能です。
使用例:
// ProducerStack
const bucket = new s3.Bucket(this, 'SharedBucket');
this.exportValue(bucket.bucketArn);
// ConsumerStack(cdk.json で weak モードを設定)
// bucket.bucketArn を参照すると Fn::GetStackOutput で解決される
PropertyMergeStrategy の配列マージ戦略 (#37841)
この機能でできること:
PropertyMergeStrategy.combine()でプロパティを結合する際に、配列の結合方法を指定できるようになりました。タグ、ルール、その他のリストタイプのプロパティを柔軟にマージできます。
使用例:
import { PropertyMergeStrategy, ArrayMergeStrategy } from 'aws-cdk-lib/core';
// 配列を末尾に追加
PropertyMergeStrategy.combine({
arrays: ArrayMergeStrategy.append(),
});
// 配列を先頭に追加
PropertyMergeStrategy.combine({
arrays: ArrayMergeStrategy.prepend(),
});
// インデックスで置換
PropertyMergeStrategy.combine({
arrays: ArrayMergeStrategy.replaceByIndex(),
});
// キーで置換(オブジェクト配列用)
PropertyMergeStrategy.combine({
arrays: ArrayMergeStrategy.replaceByKey('id'),
});
利用可能な戦略:
replace(デフォルト): 配列全体を置換append: ソース要素をターゲットの後に追加prepend: ソース要素をターゲットの前に追加replaceByIndex: 先頭から位置で要素を上書きreplaceByKey(key): 共通キーフィールドでオブジェクトをマッチング
バリデーションプラグイン違反の抑制 (#37808)
この機能でできること:
- バリデーションプラグイン(CfnGuard など)が報告する違反を、
Validations.of().acknowledge()を使用して抑制できるようになりました。
使用例:
import { Validations } from 'aws-cdk-lib/core';
Validations.of(myBucket).acknowledge({
id: 'CfnGuardValidator::S3_BUCKET_VERSIONING',
reason: '組織レベルのポリシーで対応済み',
});
ポイント:
- ルール ID は
<pluginName>::<ruleName>形式で指定 - 重大度が
fatalの違反は抑制できません
DynamoDB Streams リソースポリシー (#37254)
この機能でできること:
- DynamoDB TableV2 の Streams に対してリソースベースポリシーを設定できるようになりました。
使用例:
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import * as iam from 'aws-cdk-lib/aws-iam';
// プロパティで指定
const table = new dynamodb.TableV2(this, 'MyTable', {
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
dynamoStream: dynamodb.StreamViewType.NEW_AND_OLD_IMAGES,
// Streams に対するリソースポリシー
streamResourcePolicy: new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: ['dynamodb:GetRecords', 'dynamodb:GetShardIterator'],
principals: [new iam.AccountPrincipal('123456789012')],
resources: ['*'],
}),
],
}),
});
// または命令的に追加
table.addToStreamResourcePolicy(
new iam.PolicyStatement({
actions: ['dynamodb:DescribeStream'],
principals: [new iam.ServicePrincipal('lambda.amazonaws.com')],
resources: ['*'],
})
);
Lambda SQS provisionedPollerConfig サポート (#37550)
この機能でできること:
- SQS イベントソースに対して
provisionedPollerConfigを設定し、ポーラーの最小・最大数を制御できるようになりました。
使用例:
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as eventsources from 'aws-cdk-lib/aws-lambda-event-sources';
fn.addEventSource(new eventsources.SqsEventSource(queue, {
provisionedPollerConfig: {
// SQS の場合: 2-200(デフォルト: 2)
minimumPollers: 5,
// SQS の場合: 2-2000(デフォルト: 200)
maximumPollers: 50,
},
}));
ポイント:
- SQS の有効範囲: minimum 2-200、maximum 2-2000
- MSK/Kafka/MQ の有効範囲: minimum 1-200、maximum 1-2000
SES コンフィギュレーションセットの自動メール検証 (#36679)
この機能でできること:
- SES のコンフィギュレーションセットで自動メール検証を設定できるようになりました。無効なメールアドレスへの送信を自動的に抑制します。
使用例:
import * as ses from 'aws-cdk-lib/aws-ses';
// HIGH 信頼度で自動検証を有効化
new ses.ConfigurationSet(this, 'ConfigSet', {
confidenceVerdictThreshold: ses.ConfidenceVerdictThreshold.HIGH,
});
// MEDIUM 信頼度
new ses.ConfigurationSet(this, 'ConfigSetMedium', {
confidenceVerdictThreshold: ses.ConfidenceVerdictThreshold.MEDIUM,
});
// AWS 管理の閾値
new ses.ConfigurationSet(this, 'ConfigSetManaged', {
confidenceVerdictThreshold: ses.ConfidenceVerdictThreshold.MANAGED,
});
// 明示的に無効化
new ses.ConfigurationSet(this, 'ConfigSetDisabled', {
confidenceVerdictThreshold: ses.ConfidenceVerdictThreshold.DISABLED,
});
利用可能な閾値:
DISABLED: 機能を無効化MEDIUM: 中程度の信頼度HIGH: 高い信頼度MANAGED: AWS 管理の閾値
バグ修正
ファイルフィンガープリントが約33%高速化 (#37802)
- アセットのフィンガープリント計算時に同じファイルを重複して
statしていた問題を修正 - 特定のディレクトリで約19秒から約13秒に改善
クロスリージョン参照で「exports cannot be updated」エラー (#37790)
- クロスリージョン参照使用時に発生していたエラーを修正
RDS ClusterInstance の promotionTier 下限バリデーション追加 (#37519)
promotionTierが負の値を許容していた問題を修正- 0-15 の範囲チェックが正しく動作するように
S3 BucketDeployment で空の sources がエラーになる問題 (#37786)
sources: []を指定した場合にデプロイが失敗する問題を修正
@aws-cdk/cloud-assembly-api のバンドルされた jsonschema の問題 (#37774)
- バンドルされた jsonschema が ELSPROBLEMS を引き起こす問題を修正
Alpha モジュール (2.254.0-alpha.0)
Bedrock AgentCore: Evaluator と OnlineEvaluationConfig のタグサポート (#37804)
この機能でできること:
EvaluatorおよびOnlineEvaluationConfigL2 コンストラクトでタグを設定できるようになりました。
使用例:
import * as agentcore from '@aws-cdk/aws-bedrock-agentcore-alpha';
new agentcore.Evaluator(this, 'MyEvaluator', {
// その他のプロパティ...
tags: {
Environment: 'Production',
Team: 'ML',
},
});
Bedrock AgentCore: Identity L2 コンストラクト (#37610)
この機能でできること:
- Token Vault の認証情報プロバイダー(ApiKeyCredentialProvider、OAuth2CredentialProvider、WorkloadIdentity)用の新しい L2 コンストラクトが追加されました。
使用例:
import * as agentcore from '@aws-cdk/aws-bedrock-agentcore-alpha';
import * as cdk from 'aws-cdk-lib';
// API キー認証プロバイダー
const apiKeyProvider = new agentcore.ApiKeyCredentialProvider(this, 'ApiKeyProvider', {
apiKeyCredentialProviderName: 'my-api-key-provider',
apiKey: cdk.SecretValue.secretsManager('my-api-key-secret'),
});
// OAuth2 認証プロバイダー(GitHub 用)
const oauthProvider = agentcore.OAuth2CredentialProvider.usingGithub(this, 'OAuthProvider', {
oAuth2CredentialProviderName: 'my-oauth-provider',
clientId: 'github-client-id',
clientSecret: cdk.SecretValue.secretsManager('github-client-secret'),
});
// Workload Identity
const workloadIdentity = new agentcore.WorkloadIdentity(this, 'WorkloadIdentity', {
workloadIdentityName: 'my-workload-identity',
});
// Gateway ターゲットで認証プロバイダーを使用
gateway.addOpenApiTarget('ApiTarget', {
gatewayTargetName: 'my-api-target',
apiSchema: openApiSchema,
credentialProviderConfigurations: [
agentcore.GatewayCredentialProvider.fromApiKeyIdentity(apiKeyProvider),
],
});
MediaPackageV2: CloudFront との OAC 統合 (#37701)
この機能でできること:
- CloudFront と MediaPackageV2 の間で Origin Access Control (OAC) を使用した統合が簡単に設定できるようになりました。
使用例:
import * as mediapackagev2 from '@aws-cdk/aws-mediapackagev2-alpha';
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
// MediaPackageV2 エンドポイントを CloudFront オリジンとして使用
const origin = new mediapackagev2.MediaPackageV2Origin(endpoint, {
// OAC が自動的に設定される
});
new cloudfront.Distribution(this, 'Distribution', {
defaultBehavior: { origin },
});
Bedrock AgentCore: Cedar ポリシーのバグ修正 (#37782)
isIn()メソッドが Cedar のセットリテラルを誤って文字列リテラルとしてクォートしていた問題を修正
カスタムリソースハンドラー: パラメータ既存時のデプロイ失敗 (#37852)
- SSM パラメータが既に存在する場合にデプロイが失敗する問題を修正
putParameter呼び出しにOverwrite: trueを追加
まとめ
v2.254.0 は PromQL Alarm、weak cross-stack references、DynamoDB Streams ポリシーなど多くの機能追加に加え、L1 リソースの属性削除という破壊的変更を含む重要なリリースです。Alpha モジュールでは Bedrock AgentCore の Identity コンストラクトや MediaPackageV2 の CloudFront 統合が追加されました。