概要
AWS CDK v2.189.0では、API Gateway v2にデュアルスタック(IPv4/IPv6)サポート、Amazon S3 TablesのL2コンストラクト、Amazon Nova Reel 1.1のサポート、CodePipelineのV2タイプサポートなどが追加されました。また、SubnetV2にmapPublicIpOnLaunchプロパティが実装され、CodePipelineとカスタムリソースのバグ修正も行われています。
新機能
API Gateway v2: デュアルスタックサポート
API Gateway v2(HTTP APIとWebSocket API)にデュアルスタック(IPv4/IPv6)サポートが追加されました。ipAddressTypeプロパティを使用して、APIのIPアドレスタイプを設定できます。
HTTP API でのデュアルスタック設定
import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
const httpApi = new apigatewayv2.HttpApi(this, 'MyDualStackHttpApi', {
apiName: 'my-dualstack-http-api',
// IPアドレスタイプを設定(デフォルト: IPV4)
ipAddressType: apigatewayv2.IpAddressType.DUAL_STACK, // IPv4とIPv6の両方をサポート
});
WebSocket API でのデュアルスタック設定
import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
const webSocketApi = new apigatewayv2.WebSocketApi(this, 'MyDualStackWebSocketApi', {
apiName: 'my-dualstack-websocket-api',
// IPアドレスタイプを設定(デフォルト: IPV4)
ipAddressType: apigatewayv2.IpAddressType.DUAL_STACK, // IPv4とIPv6の両方をサポート
});
利用可能なIpAddressTypeの値:
IPV4: IPv4のみ(デフォルト)DUAL_STACK: IPv4とIPv6の両方をサポート
この機能により、IPv6クライアントからのアクセスをサポートし、将来のIPv6移行に備えることができます。
参考: PR #34054
Amazon S3 Tables: 新しいL2コンストラクト(Alpha)
Amazon S3 Tablesは、Apache Icebergのサポートを組み込んだクラウドオブジェクトストアで、大規模なテーブルデータを効率的に保存・管理できます。このリリースでは、S3 TablesのL2コンストラクトがAlphaモジュールとして追加されました。
Table Bucketの作成
import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';
// Table Bucketを作成
const tableBucket = new s3tables.TableBucket(this, 'MyTableBucket', {
tableBucketName: 'my-table-bucket',
// オプション: 未参照ファイルの自動削除設定
unreferencedFileRemoval: {
status: 'Enabled', // 未参照ファイル削除を有効化
unreferencedDays: 7, // ファイルが未参照になってから削除するまでの日数
noncurrentDays: 30, // 非カレントバージョンを保持する日数
},
});
// リソースポリシーを追加
const policyStatement = new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ['s3tables:GetTableBucket', 's3tables:ListTables'],
principals: [new iam.ServicePrincipal('example.amazonaws.com')],
resources: ['*'],
});
tableBucket.addToResourcePolicy(policyStatement);
Table Bucket のGrant メソッド
Table Bucketには、IAM権限を簡単に付与するための便利なメソッドが用意されています:
import * as iam from 'aws-cdk-lib/aws-iam';
const role = new iam.Role(this, 'MyRole', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
});
// バケット全体への読み取り権限を付与
tableBucket.grantRead(role);
// バケット全体への書き込み権限を付与
tableBucket.grantWrite(role);
// バケット全体への読み書き権限を付与
tableBucket.grantReadWrite(role);
主な機能:
TableBucket: Apache Iceberg形式のテーブルデータを保存するバケットTableBucketPolicy: Table Bucketのリソースポリシーを管理unreferencedFileRemoval: 未参照ファイルの自動削除設定- Grant メソッド: IAM権限の簡単な付与
この機能により、大規模な分析ワークロードやデータレイクの構築が容易になります。
参考: PR #33599
Amazon Bedrock: Nova Reel 1.1 サポート
Amazon Bedrockに、動画生成モデル「Amazon Nova Reel 1.1」のサポートが追加されました。
import * as bedrock from 'aws-cdk-lib/aws-bedrock';
// Nova Reel 1.1 モデルを使用
const model = bedrock.FoundationModel.fromFoundationModelId(
this,
'NovaReelModel',
bedrock.FoundationModelIdentifier.AMAZON_NOVA_REEL_V1_1,
);
Amazon Nova Reel 1.1の特徴:
- 入力モダリティ: テキスト、画像
- 出力モダリティ: 動画
- 推論タイプ: オンデマンド
- 用途: テキストや画像から動画を生成
参考: PR #34070
CodePipeline: V2パイプラインタイプのサポート
CDK Pipelinesライブラリに、CodePipelineのV2パイプラインタイプのサポートが追加されました。V2パイプラインタイプは、より高速な実行とコスト削減を実現します。
import * as pipelines from 'aws-cdk-lib/pipelines';
import * as codepipeline from 'aws-cdk-lib/aws-codepipeline';
const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
synth: new pipelines.ShellStep('Synth', {
input: pipelines.CodePipelineSource.gitHub('owner/repo', 'main'),
commands: [
'npm ci',
'npm run build',
'npx cdk synth',
],
}),
// V2パイプラインタイプを指定(デフォルト: V1)
pipelineType: codepipeline.PipelineType.V2, // V2パイプラインタイプを使用
});
V2パイプラインタイプの利点:
- より高速なパイプライン実行
- コスト効率の向上
- 改善されたパフォーマンス
参考: PR #34005
CloudFormation リソース定義の更新
L1コンストラクト(CfnXxx)が最新のCloudFormationリソース定義に更新されました。
参考: PR #34064
Alpha モジュール
SubnetV2: mapPublicIpOnLaunch プロパティの実装
@aws-cdk/aws-ec2-alphaのSubnetV2に、mapPublicIpOnLaunchプロパティが追加されました。このプロパティを使用して、サブネット内で起動されたインスタンスにパブリックIPアドレスを自動割り当てするかどうかを制御できます。
import * as ec2 from '@aws-cdk/aws-ec2-alpha';
import * as cdk from 'aws-cdk-lib';
const vpc = new ec2.VpcV2(this, 'MyVpc', {
primaryAddressBlock: ec2.IpAddresses.ipv4('10.0.0.0/16'),
});
// パブリックIPを自動割り当てするサブネット
const publicSubnet = new ec2.SubnetV2(this, 'PublicSubnet', {
vpc,
availabilityZone: 'us-east-1a',
ipv4CidrBlock: new ec2.IpCidr('10.0.1.0/24'),
subnetType: ec2.SubnetType.PUBLIC,
// インスタンス起動時にパブリックIPを自動割り当て(デフォルト: undefined)
mapPublicIpOnLaunch: true, // パブリックIPを自動割り当て
});
// パブリックIPを自動割り当てしないサブネット
const privateSubnet = new ec2.SubnetV2(this, 'PrivateSubnet', {
vpc,
availabilityZone: 'us-east-1a',
ipv4CidrBlock: new ec2.IpCidr('10.0.2.0/24'),
subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
// パブリックIPを自動割り当てしない(デフォルト: undefined)
mapPublicIpOnLaunch: false, // パブリックIPを自動割り当てしない
});
プロパティの詳細:
mapPublicIpOnLaunch: true: サブネット内で起動されたインスタンスにパブリックIPv4アドレスを自動割り当てmapPublicIpOnLaunch: false: パブリックIPv4アドレスを自動割り当てしないmapPublicIpOnLaunch: undefined(デフォルト): AWSのデフォルト動作に従う
参考: PR #34057
Amplify: customRule の status フィールド欠落の修正
@aws-cdk/aws-amplify-alphaで、customRuleのstatusフィールドが欠落していたため、統合テストが再実行できない問題が修正されました。
参考: PR #33973
バグ修正
CodePipeline: クロスアカウントアクションの信頼ポリシー改善
クロスアカウントアクションにおいて、信頼ポリシーでアカウントルートプリンシパルではなくパイプラインロールを使用するように変更されました(フィーチャーフラグの下で有効)。これにより、セキュリティが向上し、最小権限の原則に従った設定が可能になります。
影響範囲:
- クロスアカウントでCodePipelineを使用している場合
- 新しい動作はフィーチャーフラグで制御されるため、既存のパイプラインへの影響はありません
参考: PR #34074
カスタムリソース: AssumeRole セッション名の無効文字対応
AwsCustomResourceで、AssumeRoleのセッション名に無効な文字が含まれる可能性がある問題が修正されました。これにより、カスタムリソースがより確実に動作するようになります。
影響範囲:
AwsCustomResourceを使用している場合- スタック名やリソース名に特殊文字が含まれる場合に発生していたエラーが解消されます
参考: PR #34016
まとめ
AWS CDK v2.189.0は、API Gateway v2のデュアルスタックサポート、Amazon S3 TablesのL2コンストラクト、Amazon Nova Reel 1.1のサポート、CodePipelineのV2タイプサポートなど、多くの新機能とバグ修正が含まれています。
特に注目すべき点は:
- API Gateway v2のデュアルスタック: IPv6クライアントからのアクセスをサポートし、将来のIPv6移行に備えられます
- Amazon S3 Tables: Apache Iceberg形式での大規模なテーブルデータ管理が可能になります
- CodePipeline V2タイプ: より高速で効率的なパイプライン実行を実現します
- SubnetV2の改善: パブリックIP自動割り当ての細かな制御が可能になります
これらの新機能を活用して、より効率的でスケーラブルなインフラストラクチャを構築しましょう。