概要
AWS CDK v2.177.0では、Cognito Managed Loginのサポート、S3のオブジェクトレプリケーション機能、VPCv2へのBYOIP IPv6の追加など、重要な新機能が追加されました。また、複数のモジュール(Lambda、S3、RDS、API Gateway v2など)において、より型安全なValidationErrorを使用したエラー処理へと改善されました。Syntheticsでは新しいランタイム(Node.js Playwright 1.0とPython Selenium 4.1)がサポートされています。
新機能
Cognito Managed Login のサポート
Amazon Cognitoのユーザープールドメインで、Managed Login機能がサポートされるようになりました。Managed Loginは、Cognitoが提供するホスト型のログインUIで、カスタマイズ可能な認証フローを実現します。
import * as cognito from 'aws-cdk-lib/aws-cognito';
const userPool = new cognito.UserPool(this, 'UserPool', {
userPoolName: 'my-user-pool',
});
// Managed Loginを有効化
userPool.addDomain('UserPoolDomain', {
cognitoDomain: {
domainPrefix: 'my-awesome-app',
},
// Managed Login version 1.0を使用
managedLoginVersion: cognito.ManagedLoginVersion.V1_0,
});
ManagedLoginVersion列挙型により、Managed Loginのバージョンを明示的に指定できます。これにより、新しい認証UIとカスタマイズオプションが利用可能になります。
S3 オブジェクトレプリケーション
S3バケット間でのオブジェクトレプリケーションが、L2コンストラクトでサポートされるようになりました。これにより、リージョン間レプリケーション(CRR)やクロスアカウントレプリケーションが簡単に設定できます。
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as kms from 'aws-cdk-lib/aws-kms';
const destinationBucket = new s3.Bucket(this, 'DestinationBucket', {
bucketName: 'my-destination-bucket',
versioned: true, // レプリケーションにはバージョニングが必要
});
const replicationRole = new iam.Role(this, 'ReplicationRole', {
assumedBy: new iam.ServicePrincipal('s3.amazonaws.com'),
});
const sourceBucket = new s3.Bucket(this, 'SourceBucket', {
bucketName: 'my-source-bucket',
versioned: true, // レプリケーションにはバージョニングが必要
replicationRules: [
{
id: 'replication-rule-1',
priority: 1, // 必須: 複数ルールの優先順位
destination: {
bucket: destinationBucket,
account: '123456789012', // クロスアカウントレプリケーションの場合
accessControlTransition: true, // アクセス制御の移行を有効化
},
prefixFilter: 'documents/', // プレフィックスでフィルタリング
tagFilter: [
{ key: 'Environment', value: 'Production' },
],
deleteMarkerReplication: true, // 削除マーカーのレプリケーション
storageClass: s3.StorageClass.GLACIER, // ストレージクラスの指定
replicationTimeControl: true, // S3 Replication Time Control (RTC)を有効化
replicationTimeControlMetrics: true, // RTCメトリクスを有効化
},
],
});
// KMS暗号化を使用したレプリケーション
const kmsKey = new kms.Key(this, 'ReplicationKey', {
description: 'Key for replication encryption',
});
const encryptedBucket = new s3.Bucket(this, 'EncryptedSourceBucket', {
versioned: true,
replicationRules: [
{
id: 'encrypted-replication',
priority: 1,
destination: {
bucket: destinationBucket,
},
kmsKey: kmsKey, // KMSキーを使用した暗号化レプリケーション
},
],
});
この実装はV2レプリケーション設定を使用しており、以下の機能をサポートします:
- プレフィックスとタグによるフィルタリング
- S3 Replication Time Control (RTC)
- 削除マーカーのレプリケーション
- KMS暗号化のサポート
- クロスアカウントレプリケーション
VPCv2: BYOIP IPv6 のサポート
VPCv2で、BYOIP(Bring Your Own IP)を使用したIPv6アドレスの設定がサポートされました。これにより、AWSに持ち込んだIPv6アドレスプールを使用してVPCを構成できます。
import { VpcV2, SubnetV2, IpCidr } from '@aws-cdk/aws-ec2-alpha';
const vpc = new VpcV2(this, 'MyVpc', {
primaryAddressBlock: IpCidr.ipv4('10.0.0.0/16'),
secondaryAddressBlocks: [
// BYOIPを使用したIPv6アドレスブロック
IpCidr.ipv6ByoipPool({
poolId: 'ipv6pool-ec2-012345abcde12345', // IPv6プールID
cidrBlock: '2001:db8::/52', // BYOIPのCIDRブロック範囲
}),
],
});
// IPv6サブネットの作成
const subnet = new SubnetV2(this, 'MySubnet', {
vpc,
ipv4CidrBlock: new IpCidr('10.0.1.0/24'),
ipv6CidrBlock: new IpCidr('2001:db8:0:1::/64'),
availabilityZone: 'us-east-1a',
});
BYOIP IPv6を使用するには、事前にIPv6アドレス範囲をAWSに登録し、プールIDを取得する必要があります。詳細はAWSドキュメントを参照してください。
CLI: --untrust オプションの追加
cdk bootstrapコマンドに、信頼関係を削除する--untrustオプションが追加されました。これにより、ブートストラップロールから特定のアカウントIDを削除できます。
# アカウント123456789012の信頼関係を削除
cdk bootstrap --untrust 123456789012
# 複数のアカウントの信頼関係を削除
cdk bootstrap --untrust 123456789012,987654321098
この機能は、セキュリティ要件の変更や、以前は許可していたアカウントからのアクセスを取り消す必要がある場合に有用です。
Synthetics: 新しいランタイムのサポート
AWS CloudWatch Syntheticsで、新しいランタイムバージョンがサポートされました:
- Node.js Playwright 1.0: Playwrightを使用したブラウザ自動化テスト
- Python Selenium 4.1: Python Seleniumの最新バージョン
import * as synthetics from 'aws-cdk-lib/aws-synthetics';
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.Bucket(this, 'CanaryBucket');
// Node.js Playwright 1.0を使用したCanary
const playwrightCanary = new synthetics.Canary(this, 'PlaywrightCanary', {
canaryName: 'my-playwright-canary',
runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_1_0,
test: synthetics.Test.custom({
handler: 'index.handler',
code: synthetics.Code.fromAsset('canaries/playwright'),
}),
artifactsBucketLocation: {
bucket,
},
});
// Python Selenium 4.1を使用したCanary
const pythonCanary = new synthetics.Canary(this, 'PythonCanary', {
canaryName: 'my-python-canary',
runtime: synthetics.Runtime.SYNTHETICS_PYTHON_SELENIUM_4_1,
test: synthetics.Test.custom({
handler: 'canary.handler',
code: synthetics.Code.fromAsset('canaries/python'),
}),
artifactsBucketLocation: {
bucket,
},
});
これらの新しいランタイムにより、最新のブラウザ自動化ツールを使用したより高度な監視が可能になります。
Bedrock: Claude 2.xモデルの非推奨化
Amazon Bedrockで、以下のClaudeモデルが非推奨となりました:
- Claude 2.0
- Claude 2.1
- Claude Instant
これらのモデルを使用している場合は、Claude 3モデルファミリー(Haiku、Sonnet、Opus)への移行を検討してください。
CloudFront Origins: 404レスポンスのアクセスレベル設定
S3オリジンで404エラーが発生した場合のアクセスレベルをリスト形式で設定できるようになりました。これにより、エラー処理のカスタマイズが容易になります。
型付きエラー処理の改善
以下のモジュールで、従来の型なしエラーからValidationErrorへの移行が実施されました:
- API Gateway v2: バリデーションエラーの型安全性が向上
- API Gateway v2 Authorizers: オーソライザー設定のエラー処理改善
- Lambda: 関数設定のバリデーション改善
- S3: バケット設定のバリデーション改善
- RDS: データベースクラスター設定のバリデーション改善
- Route 53: DNSレコード設定のバリデーション改善
- SNS: トピック設定のバリデーション改善
- SQS: キュー設定のバリデーション改善
- SSM: パラメータ設定のバリデーション改善
- ELBv2: ロードバランサー設定のバリデーション改善
- Synthetics: Canary設定のバリデーション改善
これにより、エラーメッセージがより明確になり、デバッグが容易になりました。
バグ修正
バンドリング
- bundling: メタファイルとtsconfigのパスを引用符で囲むように修正。スペースを含むパスでのビルドエラーが解消されました。
CLI
- cli: 内部CLIライブラリのインポートを禁止。不正な使用を防ぎます。
- cli: トレース出力(-vv)が、ファイルアップロード時に役立たない問題を修正。
CloudFront
- cloudfront:
ResponseHeadersCorsBehavior.accessControlAllowMethodsにバリデーションを追加。
RDS
- rds:
DatabaseClusterプロパティで、すべての失敗したバリデーションが表示されない問題を修正。
SQS
- sqs:
Queueプロパティで、すべての失敗したバリデーションが表示されない問題を修正。
cx-api
- cx-api: 異なるライブラリ間でCloudAssemblyを検出できない問題を修正。
Alpha モジュール (2.177.0-alpha.0)
破壊的変更
Glue Alpha: L2コンストラクトの大規模リファクタリング
Glue Alphaモジュールが、RFC 0497に基づいて大規模にリファクタリングされました。この変更により、開発者はJobインスタンス化メソッドを更新し、適切なジョブタイプと言語を選択する必要があります。
影響:
- 既存のJobインスタンス化コードは更新が必要です
- 新しい静的定数値を使用してJob設定を定義します
- 詳細はRFCと更新されたREADMEを参照してください
Alphaモジュールの新機能
- amplify-alpha:
ValidationErrorの使用によるエラー処理の改善
Alphaモジュールのバグ修正
- custom-resource-handlers: IAM OIDC接続で未承認の接続を許可しない設定を追加(フィーチャーフラグの下)
まとめ
AWS CDK v2.177.0は、Cognito Managed Login、S3レプリケーション、VPCv2のBYOIP IPv6など、多くの重要な新機能を提供します。また、複数のモジュールでのValidationErrorへの移行により、エラー処理の型安全性が大幅に向上しました。Syntheticsの新しいランタイムサポートにより、最新のブラウザ自動化ツールを使用した監視も可能になっています。
Alphaモジュールでは、Glueコンストラクトの大規模なリファクタリングが行われており、該当モジュールを使用している場合はマイグレーションが必要です。
詳細な変更内容については、公式リリースノートをご確認ください。