概要
AWS CDK v2.211.0では、DynamoDB TableV2でMulti-region Strong Consistency(MRSC)がサポートされ、グローバルテーブルの強整合性オプションが利用可能になりました。また、EC2 VPCエンドポイントのクロスリージョン機能への対応、ECS Blue/Greenデプロイメントの完全なL2コンストラクトサポートが追加されています。
新機能
DynamoDB: TableV2でMRSC(Multi-region Strong Consistency)サポート
DynamoDB TableV2コンストラクトで、Multi-region Strong Consistency(MRSC)機能がサポートされました。この機能により、グローバルテーブルにおいて複数リージョン間で強整合性を保証することができます。
MRSCを有効にするには、TableV2の各レプリカ設定でmultiRegionStrongConsistencyプロパティを設定します。
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
const table = new dynamodb.TableV2(this, 'GlobalTable', {
partitionKey: {
name: 'id',
type: dynamodb.AttributeType.STRING
},
// プライマリリージョンの設定
multiRegionStrongConsistency: true, // MRSCを有効化
replicas: [
{
region: 'us-west-2',
multiRegionStrongConsistency: true, // レプリカでもMRSCを有効化
},
{
region: 'eu-west-1',
multiRegionStrongConsistency: true, // 複数リージョンで強整合性を保証
}
],
});
注意点:
- MRSCはグローバルテーブル(複数リージョンレプリカ)で使用可能です
- すべてのレプリカでMRSCを有効にする必要があります
- MRSCを有効にすると、書き込みレイテンシーが増加する可能性があります
- DynamoDB StreamsとMRSCは併用できません
参考: PR #34909
EC2: VPCエンドポイントでクロスリージョン接続をサポート
EC2 VPCエンドポイントにserviceRegionプロパティが追加され、異なるリージョンのVPCエンドポイントサービスに接続できるようになりました。これにより、クロスリージョンのVPCプライベートリンクが構築可能になります。
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'VPC');
// クロスリージョンのVPCエンドポイント接続
const endpoint = new ec2.InterfaceVpcEndpoint(this, 'CrossRegionEndpoint', {
vpc,
service: new ec2.InterfaceVpcEndpointService(
'com.amazonaws.vpce.us-west-2.vpce-svc-123456789abcdef01'
),
serviceRegion: 'us-west-2', // サービスのリージョンを明示的に指定
});
使用例:
- 異なるリージョンにあるSaaSサービスへのプライベート接続
- マルチリージョン構成でのプライベートネットワーク接続
- コンプライアンス要件を満たすためのデータ転送経路の確保
参考: PR #35025
ECS: Blue/GreenデプロイメントのL2サポート
ECSサービスで、ネイティブなBlue/Greenデプロイメントを完全にサポートするL2コンストラクトが追加されました。これにより、AWS CodeDeployを使用せずに、ALBまたはNLBを使用したBlue/Greenデプロイメントが可能になります。
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
import * as lambda from 'aws-cdk-lib/aws-lambda';
// ALBとターゲットグループの作成
const alb = new elbv2.ApplicationLoadBalancer(this, 'ALB', {
vpc,
internetFacing: true,
});
const blueTargetGroup = new elbv2.ApplicationTargetGroup(this, 'BlueTargetGroup', {
vpc,
port: 80,
targetType: elbv2.TargetType.IP,
});
const greenTargetGroup = new elbv2.ApplicationTargetGroup(this, 'GreenTargetGroup', {
vpc,
port: 80,
targetType: elbv2.TargetType.IP,
});
// ALBリスナーの設定
const listener = alb.addListener('Listener', {
port: 80,
defaultTargetGroups: [blueTargetGroup],
});
// ライフサイクルフックの設定(オプション)
const preTrafficHook = new lambda.Function(this, 'PreTrafficHook', {
runtime: lambda.Runtime.PYTHON_3_12,
handler: 'index.handler',
code: lambda.Code.fromInline(`
def handler(event, context):
# デプロイ前のテストロジック
return {'statusCode': 200}
`),
});
// Blue/Greenデプロイメント設定
const alternateTargetConfig = new ecs.AlternateTargetConfiguration({
containerName: 'app',
containerPort: 80,
listener,
greenTargetGroup,
deploymentLifecycleHooks: {
preTrafficHook: new ecs.DeploymentLifecycleHookTarget(preTrafficHook),
},
});
// ECSサービスの作成
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
desiredCount: 2,
});
// Blue/Greenデプロイメント用のターゲット接続
service.attachToApplicationTargetGroup(blueTargetGroup);
service.addAlternateTargetGroup(alternateTargetConfig);
主な機能:
AlternateTargetConfiguration: Blue/Greenデプロイメントの代替ターゲットグループを設定DeploymentLifecycleHookTarget: Lambda関数をデプロイメントフックとして設定可能preTrafficHook: トラフィック切り替え前に実行されるフックpostTrafficHook: トラフィック切り替え後に実行されるフック
- ALBとNLBの両方をサポート
参考: PR #35179
バグ修正
DynamoDB: TableV2のレプリカ暗号化でkeyIdを使用
DynamoDB TableV2で、カスタマーマネージド KMSキーを使用した暗号化設定時に、CloudFormationのドリフト検出が誤検知を報告する問題が修正されました。
問題の詳細:
- CDKが生成するCloudFormationテンプレートではKMSキーのARN(
Fn::GetAtt)を使用していました - DynamoDB内部ではキーIDのみが保存されるため、ドリフト検出で不一致が報告されていました
修正内容:
KMSMasterKeyIdプロパティでkeyArnの代わりにkeyIdを使用するように変更- CloudFormation仕様に準拠した
Ref形式でキーIDを生成
この修正により、既存のデプロイメントとの互換性を維持しつつ、ドリフト検出の誤検知が解消されます。
参考: PR #35144
破壊的変更
CloudFormation: L1リソース定義の更新
CloudFormationのL1リソース定義が更新され、以下の変更が含まれています:
-
AWS::OpsWorksCM::Server: OpsWorksCMサービスの非推奨化に伴い、
CfnServerリソースが作成不可になりました。既存のリソースは影響を受けませんが、新規作成はできません。 -
AWS::IoTFleetwise::CfnCampaign: 以下のプロパティがイミュータブル(変更時にリソース置換が発生)に変更されました:
DataDestinationConfigsSignalsToCollectSignalsToFetch
これらのプロパティを変更すると、リソースが再作成されます。本番環境で使用している場合は、変更の影響を慎重に評価してください。
参考: PR #35138
Alphaモジュール
このリリースには、Alphaモジュール(v2.211.0-alpha.0)の更新も含まれています。Alphaモジュールは実験的な機能であり、安定版ではありません。使用する際は、将来的に破壊的変更が発生する可能性があることに注意してください。
Alphaモジュールの詳細については、リリースノートの該当セクションを参照してください。
まとめ
AWS CDK v2.211.0は、DynamoDB、EC2、ECSの3つの主要サービスに重要な機能拡張をもたらすリリースです。特にDynamoDB TableV2のMRSCサポートは、グローバルアプリケーションの設計において新たな選択肢を提供します。ECSのBlue/Greenデプロイメント対応により、本番環境でのデプロイメント戦略がより柔軟になります。
破壊的変更は限定的ですが、OpsWorksCMとIoT FleetWiseを使用している場合は注意が必要です。アップグレード前に変更内容を確認し、必要に応じてテスト環境で動作を検証することをお勧めします。