概要
AWS CDK v2.214.0は、多数の新機能とバグ修正を含む大型アップデートです。特に、ACM証明書のエクスポート機能、DynamoDB Contributor Insightsモードの設定、RDS自動バックアップの保持機能など、11の新機能が追加されています。また、AlphaモジュールではBedrock GuardrailsのL2コンストラクトやS3 TablesのTablePolicyサポートが追加されています。
L1リソースの変更に関する注意事項
aws-ecs: AWS::ECS::ServiceのAvailabilityZoneRebalancingプロパティのデフォルト値が"ENABLED"から"DISABLED"に変更されました。この変更はCloudFormationリソーススキーマの実際の状態をより正確に反映するためのものです。
新機能
ACM: エクスポート可能な公開証明書のサポート
影響を受けるモジュール: @aws-cdk/aws-certificatemanager
ACM(AWS Certificate Manager)で、証明書の秘密鍵をエクスポート可能にする新機能がサポートされました。この機能により、他のベンダーから購入した証明書をACMで管理する証明書に置き換えることが容易になります。
追加されたプロパティ:
certificateExportEnabled: 証明書のエクスポートを有効化するかどうか(boolean)
コード例:
import * as acm from 'aws-cdk-lib/aws-certificatemanager';
import * as route53 from 'aws-cdk-lib/aws-route53';
const hostedZone = route53.HostedZone.fromLookup(this, 'HostedZone', {
domainName: 'example.com',
});
// エクスポート可能な公開証明書
const certificate = new acm.Certificate(this, 'Certificate', {
domainName: 'example.com',
subjectAlternativeNames: ['*.example.com'],
validation: acm.CertificateValidation.fromDns(hostedZone),
// エクスポート機能を有効化
certificateExportEnabled: true, // デフォルト: false
});
// プライベート証明書でもサポート
const privateCertificate = new acm.PrivateCertificate(this, 'PrivateCert', {
domainName: 'internal.example.com',
certificateAuthority: certificateAuthority,
certificateExportEnabled: true, // プライベート証明書でもエクスポート可能
});
関連リソース: PR #35079
CloudWatch: 円グラフでのラベル表示オプション
影響を受けるモジュール: @aws-cdk/aws-cloudwatch
CloudWatch Dashboardの円グラフウィジェットで、ラベルを表示するかどうかを制御できるようになりました。AWS コンソールでは以前から利用可能でしたが、CDKでもサポートされました。
追加されたプロパティ:
displayLabelsOnChart: 円グラフ上にラベルを表示するかどうか(boolean)
コード例:
import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
const dashboard = new cloudwatch.Dashboard(this, 'Dashboard', {
dashboardName: 'MyDashboard',
});
// Lambda関数のメトリクス
const invocationsMetric = new cloudwatch.Metric({
namespace: 'AWS/Lambda',
metricName: 'Invocations',
dimensionsMap: {
FunctionName: 'MyFunction',
},
statistic: 'Sum',
});
const errorsMetric = new cloudwatch.Metric({
namespace: 'AWS/Lambda',
metricName: 'Errors',
dimensionsMap: {
FunctionName: 'MyFunction',
},
statistic: 'Sum',
});
// ラベル表示を有効にした円グラフ
dashboard.addWidgets(
new cloudwatch.GraphWidget({
title: 'Lambda Metrics Pie Chart',
left: [invocationsMetric, errorsMetric],
view: cloudwatch.GraphWidgetView.PIE,
// 円グラフ上にラベルを表示(デフォルト: false)
displayLabelsOnChart: true,
})
);
関連リソース: PR #34745
Cognito: リフレッシュトークンローテーションのサポート
影響を受けるモジュール: @aws-cdk/aws-cognito
Cognitoユーザープールクライアントで、短命なリフレッシュトークンを使用するためのトークンローテーション機能がサポートされました。この機能により、セキュリティを向上させながら、トークンの有効期限切れによる影響を最小限に抑えることができます。
追加されたプロパティ:
refreshTokenRotationGracePeriod: リフレッシュトークンローテーションの猶予期間(Duration)
コード例:
import * as cognito from 'aws-cdk-lib/aws-cognito';
import { Duration } from 'aws-cdk-lib';
const userPool = new cognito.UserPool(this, 'UserPool', {
userPoolName: 'MyUserPool',
selfSignUpEnabled: true,
});
const userPoolClient = new cognito.UserPoolClient(this, 'UserPoolClient', {
userPool,
// OAuth設定
oAuth: {
flows: {
authorizationCodeGrant: true,
},
scopes: [cognito.OAuthScope.OPENID],
callbackUrls: ['https://example.com/callback'],
},
// リフレッシュトークンの設定
refreshTokenValidity: Duration.days(30), // リフレッシュトークンの有効期限
// リフレッシュトークンローテーションの猶予期間
// 古いトークンがまだ使用できる期間(新しいトークンとの重複期間)
refreshTokenRotationGracePeriod: Duration.hours(1), // デフォルト: 未設定(ローテーション無効)
});
動作の詳細:
refreshTokenRotationGracePeriodを設定すると、リフレッシュトークンを使用して新しいアクセストークンを取得する際に、新しいリフレッシュトークンも発行されます- 猶予期間内は古いリフレッシュトークンも使用できるため、複数のデバイスやクライアントでトークンローテーションによる影響を最小限に抑えられます
- 猶予期間を過ぎると、古いリフレッシュトークンは無効になります
関連リソース: PR #34360
Docker: DockerBuildOptionsでのnetworkパラメータのサポート
影響を受けるモジュール: @aws-cdk/core
Dockerビルド時にネットワークモードを指定できるようになりました。DockerRunOptionsでは以前からサポートされていましたが、DockerBuildOptionsでも利用可能になりました。
追加されたプロパティ:
network: Dockerビルド時のネットワークモード(string、例: “default”, “host”, “none”)
コード例:
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { DockerImage } from 'aws-cdk-lib';
// Lambda関数でカスタムDockerイメージをビルド
const fn = new lambda.Function(this, 'Function', {
runtime: lambda.Runtime.FROM_IMAGE,
handler: lambda.Handler.FROM_IMAGE,
code: lambda.Code.fromAssetImage('.', {
// Dockerビルドオプション
buildArgs: {
BASE_IMAGE: 'public.ecr.aws/lambda/python:3.13',
},
// ネットワークモードを指定(例: プライベートレジストリへのアクセス)
network: 'default', // オプション: "default", "host", "none" など
}),
});
// PythonレイヤーでのDocker build例
import { PythonLayerVersion } from '@aws-cdk/aws-lambda-python-alpha';
const layer = new PythonLayerVersion(this, 'Layer', {
entry: './lambda-layer',
compatibleRuntimes: [lambda.Runtime.PYTHON_3_13],
bundling: {
// Dockerビルド時のネットワーク設定
network: 'host', // ホストネットワークを使用
},
});
関連リソース: PR #34725
DynamoDB: ContributorInsightsModeの追加
影響を受けるモジュール: @aws-cdk/aws-dynamodb
DynamoDBテーブルおよびTableV2で、Contributor Insightsのモードを設定できるようになりました。Contributor Insightsは、最もアクセスされているキーやスロットリングされているリクエストを特定するのに役立つ機能です。
追加されたプロパティ:
contributorInsightsMode: Contributor Insightsのモード(ContributorInsightsMode.ENABLEDまたはContributorInsightsMode.DISABLED)
コード例:
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import { RemovalPolicy } from 'aws-cdk-lib';
// Table (V1) での例
const table = new dynamodb.Table(this, 'Table', {
partitionKey: {
name: 'id',
type: dynamodb.AttributeType.STRING,
},
sortKey: {
name: 'timestamp',
type: dynamodb.AttributeType.NUMBER,
},
// Contributor Insightsを有効化
contributorInsightsMode: dynamodb.ContributorInsightsMode.ENABLED, // デフォルト: DISABLED
removalPolicy: RemovalPolicy.DESTROY,
});
// GSI (Global Secondary Index) でも設定可能
table.addGlobalSecondaryIndex({
indexName: 'gsi1',
partitionKey: {
name: 'status',
type: dynamodb.AttributeType.STRING,
},
// GSIごとにContributor Insightsを設定
contributorInsightsMode: dynamodb.ContributorInsightsMode.ENABLED,
});
// TableV2 での例
const tableV2 = new dynamodb.TableV2(this, 'TableV2', {
partitionKey: {
name: 'pk',
type: dynamodb.AttributeType.STRING,
},
// テーブル全体のContributor Insights設定
contributorInsights: {
mode: dynamodb.ContributorInsightsMode.ENABLED,
},
globalSecondaryIndexes: [
{
indexName: 'gsi1',
partitionKey: {
name: 'gsi1pk',
type: dynamodb.AttributeType.STRING,
},
// GSIごとの設定
contributorInsights: {
mode: dynamodb.ContributorInsightsMode.ENABLED,
},
},
],
});
Contributor Insightsの利点:
- 最もアクセスされているパーティションキーを特定
- スロットリングされているリクエストの原因を分析
- テーブルのパフォーマンス最適化に役立つ
関連リソース: PR #35332
RDS: データベースクラスターの自動バックアップ保持
影響を受けるモジュール: @aws-cdk/aws-rds
RDS Aurora クラスターで、クラスターを削除する際に自動バックアップを保持できるようになりました。これにより、クラスター削除後もバックアップからデータを復元することが可能になります。
追加されたプロパティ:
deleteAutomatedBackups: クラスター削除時に自動バックアップも削除するかどうか(boolean)
コード例:
import * as rds from 'aws-cdk-lib/aws-rds';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = ec2.Vpc.fromLookup(this, 'VPC', {
vpcId: 'vpc-xxxxx',
});
const cluster = new rds.DatabaseCluster(this, 'Database', {
engine: rds.DatabaseClusterEngine.auroraMysql({
version: rds.AuroraMysqlEngineVersion.VER_3_09_0,
}),
vpc,
writer: rds.ClusterInstance.provisioned('writer', {
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.R6G,
ec2.InstanceSize.LARGE
),
}),
// 自動バックアップ設定
backup: {
retention: Duration.days(7), // バックアップ保持期間
},
// クラスター削除時の動作
deleteAutomatedBackups: false, // false: バックアップを保持、true: バックアップも削除(デフォルト)
});
注意事項:
deleteAutomatedBackups: falseに設定すると、クラスターを削除してもバックアップは保持されます- 保持されたバックアップから新しいクラスターを作成できます
- バックアップの保存にはコストがかかるため、不要になったバックアップは手動で削除してください
関連リソース: PR #35372
ECS: EBSボリューム初期化レート
影響を受けるモジュール: @aws-cdk/aws-ecs
ECS Fargateタスクで、サービス管理のEBSボリュームの初期化レートを設定できるようになりました。この機能は、EBSボリュームのプロビジョンド初期化レートをカスタマイズするために使用します。
追加されたプロパティ:
volumeInitializationRate: EBSボリュームの初期化レート(number、IOPS値)
コード例:
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Size } from 'aws-cdk-lib';
const vpc = ec2.Vpc.fromLookup(this, 'VPC', {
vpcId: 'vpc-xxxxx',
});
const cluster = new ecs.Cluster(this, 'Cluster', {
vpc,
});
// Fargateタスク定義
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
memoryLimitMiB: 2048,
cpu: 1024,
});
taskDefinition.addContainer('app', {
image: ecs.ContainerImage.fromRegistry('nginx:latest'),
memoryLimitMiB: 512,
});
// Fargateサービス
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
// サービス管理のEBSボリューム設定
volumeConfigurations: [
{
name: 'storage',
managedEBSVolume: {
size: Size.gibibytes(20), // ボリュームサイズ
volumeType: ec2.EbsDeviceVolumeType.GP3,
encrypted: true,
// ボリューム初期化レート(IOPS)
volumeInitializationRate: 3000, // デフォルト: 未設定(EBSタイプのデフォルト値)
iops: 3000, // プロビジョンドIOPS
throughput: 125, // スループット (MiB/s)
},
},
],
});
ユースケース:
- データベースやキャッシュなどの高IOPSワークロード
- 大量のデータを扱うアプリケーション
- 初期化時のパフォーマンスを最適化したい場合
関連リソース: PR #34962
EventBridge: アーカイブでのKMSキーのサポート
影響を受けるモジュール: @aws-cdk/aws-events
EventBridge Archiveで、カスタマーマネージドKMSキーを使用した暗号化がサポートされました。この機能は2025年3月にAWSで追加されましたが、CDKでもサポートされました。
追加されたプロパティ:
kmsKey: アーカイブの暗号化に使用するKMSキー(IKey)
コード例:
import * as events from 'aws-cdk-lib/aws-events';
import * as kms from 'aws-cdk-lib/aws-kms';
import { Duration } from 'aws-cdk-lib';
// イベントバス
const eventBus = new events.EventBus(this, 'EventBus', {
eventBusName: 'MyEventBus',
});
// カスタマーマネージドKMSキー
const key = new kms.Key(this, 'ArchiveKey', {
description: 'KMS key for EventBridge Archive encryption',
enableKeyRotation: true,
});
// KMSキーで暗号化されたアーカイブ
const archive = new events.Archive(this, 'Archive', {
eventPattern: {
source: ['my.application'],
detailType: ['order.placed'],
},
sourceEventBus: eventBus,
archiveName: 'OrderArchive',
// 保持期間
retention: Duration.days(365),
description: 'Archive for order events',
// カスタマーマネージドKMSキーを指定
kmsKey: key, // デフォルト: AWS管理キー
});
セキュリティのベストプラクティス:
- カスタマーマネージドKMSキーを使用することで、暗号化キーのライフサイクルを完全に制御できます
- キーローテーションを有効化してセキュリティを向上させることができます
- KMSキーポリシーで、誰がアーカイブにアクセスできるかを細かく制御できます
関連リソース: PR #35253
SNS: notExistsConditionメソッドの追加
影響を受けるモジュール: @aws-cdk/aws-sns
SNSサブスクリプションのフィルターポリシーで、特定のプロパティが存在しない場合の条件を設定できるようになりました。
追加されたメソッド:
SubscriptionFilter.notExistsCondition(): プロパティが存在しない場合の条件
コード例:
import * as sns from 'aws-cdk-lib/aws-sns';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import * as subscriptions from 'aws-cdk-lib/aws-sns-subscriptions';
const topic = new sns.Topic(this, 'Topic', {
topicName: 'OrderTopic',
});
const queue = new sqs.Queue(this, 'Queue', {
queueName: 'OrderQueue',
});
// プロパティの存在チェックを含むフィルターポリシー
topic.addSubscription(
new subscriptions.SqsSubscription(queue, {
filterPolicy: {
// 通常の条件: orderType が "standard" または "express" の場合
orderType: sns.SubscriptionFilter.stringFilter({
allowlist: ['standard', 'express'],
}),
// 新機能: discount プロパティが存在しない場合
discount: sns.SubscriptionFilter.notExistsCondition(),
},
})
);
// 別のキューで、discount が存在する場合のみ処理
const discountQueue = new sqs.Queue(this, 'DiscountQueue');
topic.addSubscription(
new subscriptions.SqsSubscription(discountQueue, {
filterPolicy: {
// discount プロパティが存在する場合
discount: sns.SubscriptionFilter.existsFilter(),
},
})
);
メッセージのフィルタリング例:
// このメッセージは最初のキューに配信される(discountプロパティが存在しない)
{
"orderType": "standard",
"customerId": "12345",
"amount": 100
}
// このメッセージは2番目のキューに配信される(discountプロパティが存在する)
{
"orderType": "express",
"customerId": "67890",
"amount": 200,
"discount": 10
}
関連リソース: PR #34712
L1リソースの更新
AWS CloudFormationリソース定義が更新されました(PR #35320、PR #35382)。詳細は各PRを参照してください。
Alphaモジュール
Bedrock: GuardrailsのL2コンストラクト
影響を受けるモジュール: @aws-cdk/aws-bedrock-alpha
Amazon Bedrock Guardrailsの包括的なL2コンストラクトが追加されました。Guardrailsは、基盤モデル(LLM)のレスポンスをフィルタリングし、有害なコンテンツや機密情報の漏洩を防ぐための機能です。
主な機能:
- コンテンツフィルター: 有害なコンテンツ、ヘイトスピーチ、性的コンテンツ、暴力的コンテンツのフィルタリング
- 単語フィルター: 特定の単語やフレーズのブロック
- PII(個人識別情報)フィルター: 機密情報の検出とマスキング
- トピックフィルター: 特定のトピックに関する質問の制限
- コンテキストグラウンディング: 提供されたコンテキストに基づいて回答を制限
コード例:
import * as bedrock from '@aws-cdk/aws-bedrock-alpha';
// 基本的なGuardrailの作成
const guardrail = new bedrock.Guardrail(this, 'MyGuardrail', {
name: 'my-guardrail',
description: 'Guardrail for customer-facing chatbot',
// コンテンツフィルター
contentFilters: [
{
type: bedrock.ContentFilterType.SEXUAL, // 性的コンテンツ
inputStrength: bedrock.FilterStrength.HIGH, // 入力の強度
outputStrength: bedrock.FilterStrength.HIGH, // 出力の強度
},
{
type: bedrock.ContentFilterType.VIOLENCE, // 暴力的コンテンツ
inputStrength: bedrock.FilterStrength.MEDIUM,
outputStrength: bedrock.FilterStrength.HIGH,
},
{
type: bedrock.ContentFilterType.HATE, // ヘイトスピーチ
inputStrength: bedrock.FilterStrength.HIGH,
outputStrength: bedrock.FilterStrength.HIGH,
},
],
// 単語フィルター
wordFilters: [
{
words: ['badword1', 'badword2'], // ブロックする単語
action: bedrock.WordFilterAction.BLOCK,
},
],
// PIIフィルター
piiFilters: [
{
type: bedrock.PiiType.EMAIL, // メールアドレス
action: bedrock.PiiAction.ANONYMIZE, // 匿名化
},
{
type: bedrock.PiiType.PHONE, // 電話番号
action: bedrock.PiiAction.BLOCK, // ブロック
},
],
});
// Bedrockエージェントと統合
import * as agents from '@aws-cdk/aws-bedrock-alpha';
const agent = new agents.Agent(this, 'MyAgent', {
name: 'customer-support-agent',
foundationModel: agents.BedrockFoundationModel.ANTHROPIC_CLAUDE_V2,
instruction: 'You are a helpful customer support agent.',
// Guardrailを適用
guardrail: guardrail,
});
関連リソース: PR #34765
EKS v2: Kubernetes 1.33のサポート
影響を受けるモジュール: @aws-cdk/aws-eks-v2-alpha
EKS v2 alpha モジュールで、Kubernetes 1.33がサポートされました。
関連リソース: PR #34713
S3 Tables: TablePolicyのL2サポート
影響を受けるモジュール: @aws-cdk/aws-s3tables-alpha
S3 Tablesで、テーブルレベルのIAMリソースポリシーを管理するためのTablePolicyコンストラクトと、便利なアクセス権限付与メソッドが追加されました。
新しいコンストラクト:
TablePolicy: テーブルのIAMポリシーを定義
新しいメソッド:
table.addToResourcePolicy(): テーブルのIAMポリシーにステートメントを追加table.grantRead(): 読み取り権限を付与table.grantWrite(): 書き込み権限を付与table.grantReadWrite(): 読み取りおよび書き込み権限を付与
コード例:
import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';
const tableBucket = new s3tables.TableBucket(this, 'TableBucket', {
tableBucketName: 'my-table-bucket',
});
const table = new s3tables.Table(this, 'MyTable', {
tableBucket,
tableName: 'customer-data',
columns: [
{ name: 'customerId', type: s3tables.DataType.STRING },
{ name: 'name', type: s3tables.DataType.STRING },
{ name: 'createdAt', type: s3tables.DataType.TIMESTAMP },
],
partitionKeys: ['customerId'],
});
// IAMユーザーに読み取り権限を付与
const user = iam.User.fromUserName(this, 'User', 'data-analyst');
table.grantRead(user); // s3tables:Get* 権限を付与
// IAMロールに書き込み権限を付与
const role = iam.Role.fromRoleName(this, 'Role', 'data-ingestion-role');
table.grantWrite(role); // s3tables:PutTableData, UpdateTableMetadataLocation, RenameTable
// 別のロールに読み取りと書き込み権限を付与
const adminRole = iam.Role.fromRoleName(this, 'AdminRole', 'admin-role');
table.grantReadWrite(adminRole); // s3tables:Get*, PutTableData, UpdateTableMetadataLocation, CreateTable
// カスタムポリシーステートメントを追加
table.addToResourcePolicy(
new iam.PolicyStatement({
actions: ['s3tables:DeleteTable'],
principals: [new iam.AccountPrincipal('123456789012')],
resources: [table.tableArn],
})
);
権限の詳細:
| メソッド | IAM アクション | 説明 |
|---|---|---|
grantRead | s3tables:Get* | テーブルからデータを読み取る権限 |
grantWrite | s3tables:PutTableDatas3tables:UpdateTableMetadataLocations3tables:RenameTable | テーブルにデータを書き込む権限 |
grantReadWrite | s3tables:Get*s3tables:PutTableDatas3tables:UpdateTableMetadataLocations3tables:CreateTable | テーブルの読み取りと書き込み権限 |
関連リソース: PR #35223
バグ修正
起動時間の最適化に関する修正
問題: v2.172.0で導入された遅延読み込み(lazy loading)により、小規模なプログラムでは起動時間が改善されましたが、大規模なプログラムでは逆に遅くなる問題がありました。
修正内容: 遅延読み込みのロジックが最適化され、大規模なCDKアプリケーションでもパフォーマンスが向上しました。
関連リソース: PR #35335
CloudWatch: AlarmRule.concatでの空オペランド処理
問題: AlarmRule.concat()メソッドで空の配列を渡すとエラーが発生していました。
修正内容: 空のオペランドを適切に処理し、エラーを回避できるようになりました。
関連リソース: PR #34757
ECS Patterns: カスタムセキュリティグループ使用時のopenListener設定
問題: ECSパターンでカスタムセキュリティグループを提供した場合でも、openListenerがデフォルトでtrueになっていました。
修正内容: カスタムセキュリティグループを指定した場合、openListenerは自動的にfalseに設定されるようになりました。
関連リソース: PR #35297
EKS: kubectlProviderでの適切なマネージドポリシーの使用
問題: EKSのkubectlProviderで、不適切なIAMマネージドポリシーが使用されていました。
修正内容: AmazonEC2ContainerRegistryReadOnlyからAmazonEC2ContainerRegistryPullOnlyに変更され、より適切な権限が付与されるようになりました。
関連リソース: PR #35248
Step Functions: Bedrock AgentサービスのIAMプレフィックスマッピング
問題: Step FunctionsからBedrock Agentを呼び出す際のIAMプレフィックスが不正確でした。
修正内容: bedrockagentサービスがbedrock IAMプレフィックスに正しくマッピングされるようになりました。
関連リソース: PR #35147
非推奨プロパティの削除
問題: 非推奨のプロパティがCfnコンストラクトに渡され続けていました。
修正内容: 非推奨のプロパティがCloudFormationテンプレートに含まれなくなりました。
関連リソース: PR #35080
S3 Deployment: CloudFront無効化エラーの修正
問題: S3デプロイメント後のCloudFront無効化処理で、間欠的にCreateInvalidationエラーや待機エラーが発生していました。
修正内容: エラーハンドリングとリトライロジックが改善され、無効化処理がより安定しました。
関連リソース: PR #34859
まとめ
AWS CDK v2.214.0は、11の新機能と複数のバグ修正を含む大型リリースです。特に以下の機能が注目されます:
- ACM証明書のエクスポート: 証明書の秘密鍵をエクスポート可能にし、他のベンダーからの移行を容易に
- DynamoDB Contributor Insights: テーブルのパフォーマンス分析を強化
- RDS自動バックアップ保持: クラスター削除後もバックアップを保持可能に
- EventBridge Archive KMS: カスタマーマネージドキーでアーカイブを暗号化
- Cognito トークンローテーション: リフレッシュトークンのセキュリティを向上
Alphaモジュールでは、Bedrock Guardrailsの包括的なL2コンストラクトと、S3 Tablesのアクセス制御機能が追加されています。
v2.214.0にアップグレードする際は、ECS AvailabilityZoneRebalancingプロパティのデフォルト値変更に注意してください。この変更により、既存のECSサービスの動作が影響を受ける可能性があります。