概要
AWS CDK v2.223.0 は、VPC ルーティングに Cloud WAN Core Network のサポートを追加し、S3 デプロイメントでセキュリティグループを指定できるようにする新機能が含まれています。また、DynamoDB と EventBridge の L1 リソースに破壊的変更があるため、アップグレード時には注意が必要です。
新機能
EC2: Cloud WAN Core Network ルートのサポート
AWS Cloud WAN Core Network を経由するルートを VPC ルートテーブルに追加できるようになりました。Cloud WAN は、グローバルネットワークを構築および管理するための中心的なダッシュボードを提供するサービスです。
主な変更点
RouterTypeenum にCORE_NETWORKが追加されました- VPC ルートテーブルで Core Network をターゲットとして指定可能になりました
使用例
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Stack } from 'aws-cdk-lib';
const vpc = new ec2.Vpc(this, 'MyVpc');
// Cloud WAN Core Network を経由するルートを追加
vpc.publicSubnets[0].addRoute('CoreNetworkRoute', {
routerId: 'core-network-12345678', // Core Network の ID
routerType: ec2.RouterType.CORE_NETWORK, // Core Network をルーターとして指定
destinationCidrBlock: '10.1.0.0/16', // 送信先 CIDR ブロック
});
このルートを追加することで、VPC から Cloud WAN Core Network を経由して他のネットワークにトラフィックをルーティングできるようになります。
関連リンク
- PR: #35008
S3デプロイメント: セキュリティグループのサポート
BucketDeployment コンストラクトで、デプロイ用の Lambda 関数にカスタムセキュリティグループを指定できるようになりました。これにより、より細かいネットワークセキュリティ制御が可能になります。
主な変更点
BucketDeploymentPropsにsecurityGroupsプロパティ(オプション)が追加されました- VPC 内で動作する BucketDeployment に対して、特定のセキュリティグループを割り当てられるようになりました
- 後方互換性を維持しており、既存のコードには影響ありません
使用例
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'MyVpc');
const bucket = new s3.Bucket(this, 'MyBucket');
// カスタムセキュリティグループを作成
const deploymentSecurityGroup = new ec2.SecurityGroup(this, 'DeploymentSG', {
vpc,
description: 'Security group for S3 deployment Lambda',
allowAllOutbound: true, // S3 へのアクセスを許可
});
// 必要に応じてイングレス/エグレスルールを追加
deploymentSecurityGroup.addEgressRule(
ec2.Peer.anyIpv4(),
ec2.Port.tcp(443),
'Allow HTTPS outbound for S3 access'
);
// セキュリティグループを指定して BucketDeployment を作成
new s3deploy.BucketDeployment(this, 'DeployWebsite', {
sources: [s3deploy.Source.asset('./website-dist')],
destinationBucket: bucket,
vpc, // VPC を指定(必須)
vpcSubnets: { // デプロイ先のサブネット
subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
},
securityGroups: [deploymentSecurityGroup], // カスタムセキュリティグループを指定
});
ユースケース
- コンプライアンス要件により、特定のエグレスルールのみを許可する必要がある場合
- VPC エンドポイント経由でのみ S3 にアクセスさせたい場合
- 社内ネットワークポリシーに準拠したセキュリティ設定が必要な場合
- EFS マウントポイントへのアクセスなど、追加のネットワークリソースにアクセスする必要がある場合
関連リンク
バグ修正
StepFunctions: DistributedMap の ResultWriter でクエリ言語を正しく選択
修正内容
DistributedMap で ResultWriter を使用する際、ステートマシン全体が JSONPath を使用していても、ResultWriter で JSONata を使用する場合にテンプレートが正しく生成されない問題が修正されました。
この修正により、JSONPath から JSONata への段階的な移行が容易になります。以前は、ResultWriter で JSONata を使用するためにはステートマシン全体を JSONata に切り替える必要がありましたが、現在は部分的に JSONata を使用できるようになりました。
影響範囲
DistributedMapのResultWriterで JSONata を使用している場合- ステートマシン全体のクエリ言語と、DistributedMap のクエリ言語が異なる場合
使用例
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
import * as s3 from 'aws-cdk-lib/aws-s3';
// ステートマシン全体は JSONPath を使用
const stateMachine = new sfn.StateMachine(this, 'StateMachine', {
definitionBody: sfn.DefinitionBody.fromChainable(
// DistributedMap の ResultWriter で JSONata を使用可能
new sfn.DistributedMap(this, 'Map', {
itemsPath: sfn.JsonPath.stringAt('$.items'),
resultWriter: {
bucket: new s3.Bucket(this, 'ResultBucket'),
prefix: 'results',
},
// JSONata のクエリ言語を指定
queryLanguage: sfn.QueryLanguage.JSONATA,
}).itemProcessor(
new sfn.Pass(this, 'ProcessItem')
)
),
});
この修正前は、上記のコードで生成される CloudFormation テンプレートが正しくない場合がありましたが、現在は正しく生成されるようになりました。
関連リンク
Events: onEvent 関数のオプション引数の修正
EventBridge の onEvent 関数が、すべてのオプションを Rule リソースに正しく渡すように修正されました。
関連リンク
- PR: #35829
L1リソースの更新
CloudFormation のリソース定義が最新の状態に更新されました。
関連リンク
- PR: #35926
破壊的変更
L1 リソースの CloudFormation スキーマ更新による変更
L1 リソースは CloudFormation のパブリックリソーススキーマから自動生成されており、CloudFormation の実際の状態を正確に反映するように構築されています。このリリースでは、以下のプロパティと属性が削除されました。
DynamoDB の変更
AWS::DynamoDB::GlobalTable
GlobalTableSettingsReplicationModeプロパティが削除されましたGlobalTableSourceArnプロパティが削除されました
AWS::DynamoDB::Table
GlobalTableSettingsReplicationModeプロパティが削除されました
これらのプロパティは CloudFormation のスキーマから削除されたため、CDK の L1 リソースからも削除されました。
影響と対応
L1 リソース(CfnGlobalTable や CfnTable)でこれらのプロパティを使用している場合は、コードの修正が必要です。ただし、L2 コンストラクト(Table など)を使用している場合は影響ありません。
// 変更前(動作しなくなります)
const cfnGlobalTable = new dynamodb.CfnGlobalTable(this, 'GlobalTable', {
// ...
globalTableSettingsReplicationMode: 'FULL', // このプロパティは削除されました
});
// 変更後: このプロパティを削除してください
const cfnGlobalTable = new dynamodb.CfnGlobalTable(this, 'GlobalTable', {
// 他のプロパティのみを指定
attributeDefinitions: [/*...*/],
keySchema: [/*...*/],
replicas: [/*...*/],
});
EventBridge の変更
AWS::Events::EventBusPolicy
Id属性が削除されました
影響と対応
CfnEventBusPolicy の attrId を参照している場合は、コードの修正が必要です。
// 変更前(動作しなくなります)
const policy = new events.CfnEventBusPolicy(this, 'Policy', {
// ...
});
const policyId = policy.attrId; // この属性は削除されました
// 変更後: Id 属性の参照を削除してください
const policy = new events.CfnEventBusPolicy(this, 'Policy', {
// ...
});
// attrId は使用できません
Alphaモジュール
このリリースには、Alphaモジュール(2.223.0-alpha.0)に関する変更内容の詳細は記載されていません。Alphaモジュールを使用している場合は、リリースノートを確認してください。
まとめ
AWS CDK v2.223.0 は、以下の重要な変更を含むリリースです:
新機能
- EC2 で Cloud WAN Core Network ルートをサポート
- S3 デプロイメントでセキュリティグループを指定可能に
バグ修正
- StepFunctions の DistributedMap で ResultWriter のクエリ言語選択を修正
- EventBridge の onEvent 関数のオプション引数の処理を修正
破壊的変更
- DynamoDB の L1 リソースから
GlobalTableSettingsReplicationModeとGlobalTableSourceArnプロパティが削除 - EventBridge の L1 リソースから
Id属性が削除
L1 リソース(Cfn* クラス)を直接使用している場合は、破壊的変更の影響を受ける可能性があるため、アップグレード前にコードの確認が必要です。L2 コンストラクトを使用している場合は、通常影響ありません。
新機能を活用することで、より柔軟なネットワーク構成とセキュリティ設定が可能になります。