概要
AWS CDK v2.209.0では、ECSのネイティブBlue/Greenデプロイメントサポート、Amazon Bedrock Inference ProfilesのL2コンストラクト、S3 TablesのL2サポートなど、重要な新機能が追加されました。これらの機能により、より安全なデプロイメント、AIモデルの効率的な利用、データレイクのテーブル管理が容易になります。
新機能
ECSネイティブBlue/Greenデプロイメントサポート
ECS L2コンストラクトでネイティブBlue/Greenデプロイメントがサポートされました。これにより、AWS CodeDeployを使用せずに、ECS自体の機能でより安全なデプロイメントが可能になります。
主な機能:
LoadBalancerの高度な設定オプション- デプロイメント戦略の指定(Rolling Update / Blue/Green)
- ベイクタイム(BakeTime)の設定
- ライフサイクルフック(LifecycleHooks)のサポート
- ServiceConnectのテストトラフィックルール
使用例:
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
const cluster = new ecs.Cluster(this, 'Cluster', {
vpc: vpc,
});
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef');
taskDefinition.addContainer('web', {
image: ecs.ContainerImage.fromRegistry('nginx'),
portMappings: [{ containerPort: 80 }],
});
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
deploymentConfiguration: {
// Blue/Greenデプロイメント戦略を指定
strategy: ecs.DeploymentStrategy.BLUE_GREEN,
// ベイクタイム: 新バージョンをテストする時間(分)
bakeTime: Duration.minutes(15),
// ライフサイクルフック: デプロイメント前後の処理
lifecycleHooks: {
beforeInstall: new ecs.DeploymentLifecycleHookTarget({
lambdaFunction: preDeployFunction,
timeout: Duration.minutes(5),
}),
afterAllowTestTraffic: new ecs.DeploymentLifecycleHookTarget({
lambdaFunction: postDeployFunction,
timeout: Duration.minutes(5),
}),
},
},
});
// ロードバランサーの高度な設定
service.registerLoadBalancerTargets({
containerName: 'web',
containerPort: 80,
newTargetGroupId: 'ECS',
listener: ecs.ListenerConfig.applicationListener(listener, {
protocol: elbv2.ApplicationProtocol.HTTP,
}),
// テストトラフィックの設定
advancedConfiguration: {
testTrafficRoute: {
listenerArns: [testListener.listenerArn],
},
},
});
Amazon Bedrock Inference Profiles (Alpha)
Amazon Bedrock Inference ProfilesのL2コンストラクトがAlphaモジュールとして追加されました。コスト追跡、モデル使用の最適化、クロスリージョン推論が可能になります。
主な機能:
- Application Inference Profiles: コスト追跡とモデル使用の監視
- Cross-Region Inference Profiles: 複数リージョンへのトラフィック分散
- Prompt Routers: インテリジェントなプロンプトルーティング
使用例:
import * as bedrock from '@aws-cdk/aws-bedrock-alpha';
// シングルリージョンのApplication Inference Profile
const singleRegionProfile = new bedrock.ApplicationInferenceProfile(this, 'SingleRegionProfile', {
inferenceProfileName: 'my-cost-tracking-profile',
description: 'Cost tracking for production workloads',
// ベースとなるモデルIDを指定
modelSource: bedrock.InferenceProfileModelSource.fromModel('anthropic.claude-v2'),
});
// マルチリージョンのApplication Inference Profile
const multiRegionProfile = new bedrock.ApplicationInferenceProfile(this, 'MultiRegionProfile', {
inferenceProfileName: 'my-multi-region-profile',
description: 'Multi-region inference for high availability',
// Cross-Region Inference Profileを使用
modelSource: bedrock.InferenceProfileModelSource.fromCrossRegionInferenceProfile(
bedrock.CrossRegionInferenceProfile.fromRegions(
this,
'CrossRegionProfile',
{
regions: ['us-east-1', 'us-west-2'], // 複数リージョンを指定
modelId: 'anthropic.claude-v2',
}
)
),
});
// Prompt Router: インテリジェントなルーティング
const promptRouter = new bedrock.PromptRouter(this, 'PromptRouter', {
name: 'intelligent-routing',
routingCriteria: {
// プロンプトの特性に基づいてルーティング
textLength: 'short', // short, medium, long
complexity: 'high', // low, medium, high
},
fallbackProfile: singleRegionProfile,
});
// IAM権限の付与
singleRegionProfile.grantProfileUsage(lambdaFunction);
S3 Tables L2コンストラクト (Alpha)
Amazon S3 TablesのNamespaceとTableリソースのL2コンストラクトがAlphaモジュールとして追加されました。データレイクのテーブル管理が容易になります。
主な機能:
Namespace: S3 Tablesの名前空間を定義Table: Icebergフォーマットのテーブルを定義- スキーマ定義のサポート
- コンパクション(圧縮)とスナップショット管理の設定
使用例:
import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as s3 from 'aws-cdk-lib/aws-s3';
// Table Bucketを作成(S3 Tables専用のバケット)
const tableBucket = new s3.Bucket(this, 'TableBucket');
// Namespaceを作成
const namespace = new s3tables.Namespace(this, 'ExampleNamespace', {
namespaceName: 'example-namespace-1', // 名前空間の名前
tableBucket: tableBucket, // 使用するS3バケット
});
// 基本的なTableを作成(スキーマなし)
const table = new s3tables.Table(this, 'ExampleTable', {
tableName: 'example_table', // テーブル名
namespace: namespace, // 所属する名前空間
openTableFormat: s3tables.OpenTableFormat.ICEBERG, // Icebergフォーマットを使用
withoutMetadata: true, // メタデータなしで作成
});
// スキーマを持つTableを作成
const tableWithSchema = new s3tables.Table(this, 'ExampleSchemaTable', {
tableName: 'example_table_with_schema',
namespace: namespace,
openTableFormat: s3tables.OpenTableFormat.ICEBERG,
// Icebergスキーマを定義
icebergMetadata: {
icebergSchema: {
schemaFieldList: [
{
name: 'id', // カラム名
type: 'int', // データ型
required: true, // 必須フィールド
},
{
name: 'name',
type: 'string', // 文字列型
},
{
name: 'created_at',
type: 'timestamp', // タイムスタンプ型
},
],
},
},
// コンパクション(圧縮)設定
compaction: {
status: s3tables.Status.ENABLED, // コンパクションを有効化
targetFileSizeMb: 128, // 目標ファイルサイズ(MB)
},
// スナップショット管理設定
snapshotManagement: {
status: s3tables.Status.ENABLED, // スナップショット管理を有効化
maxSnapshotAgeHours: 48, // スナップショットの最大保持時間(時間)
minSnapshotsToKeep: 5, // 最小保持スナップショット数
},
});
// 既存のNamespaceをインポート
const importedNamespace = s3tables.Namespace.fromNamespaceArn(
this,
'ImportedNamespace',
'arn:aws:s3tables:us-east-1:123456789012:bucket/my-bucket/namespace/my-namespace'
);
// 既存のTableをインポート
const importedTable = s3tables.Table.fromTableArn(
this,
'ImportedTable',
'arn:aws:s3tables:us-east-1:123456789012:bucket/my-bucket/namespace/my-namespace/table/my-table'
);
その他の機能追加
Feature Flagレポートの新フィールド追加
Feature Flagレポートに新しいフィールドが追加され、Feature Flagの状態をより詳細に把握できるようになりました。
Route53 ARecordのdeleteExistingプロパティの非推奨化
Route53のARecordコンストラクトのdeleteExistingプロパティが非推奨(deprecated)になりました。既存のレコードを削除する場合は、別の方法を使用することが推奨されます。
バグ修正
App Staging Synthesizerのカスタムブートストラップ修飾子の問題修正
カスタムブートストラップ修飾子がデプロイメントロール名に正しく渡されない問題が修正されました。
影響範囲: App Staging Synthesizerでカスタムブートストラップ修飾子を使用している場合、正しくロール名が生成されるようになります。
CodeBuild Windows Server Core 2022イメージのサポート改善
Windows Server Core 2022イメージでオンデマンドキャパシティがサポートされました。
影響範囲: Windows Server Core 2022を使用したCodeBuildプロジェクトが正常に動作します。
EKS Helmコマンドのセキュリティ改善
EKS(stable版とv2アルファ版)のHelmコマンドでshell=Trueの使用が削除され、コマンドインジェクションのリスクが低減されました。
影響範囲: EKSでHelmチャートを使用している場合、より安全に動作します。
RDS VPC Security Groupsのルックアップ問題修正
fromLookupメソッドでVPC Security Groupsが正しく取得できない問題が修正されました。
影響範囲: RDSインスタンスで既存のVPC Security Groupsをルックアップする場合、正常に動作します。
まとめ
AWS CDK v2.209.0は、ECSのネイティブBlue/Greenデプロイメント、Bedrock Inference Profiles、S3 TablesのL2コンストラクトなど、重要な新機能を提供します。これらの機能により、より安全なデプロイメント、AIモデルの効率的な利用、データレイクの管理が容易になります。特にAlphaモジュールとして追加されたBedrock Inference ProfilesとS3 Tablesは、今後のAIとデータ分析のワークロードに大きく貢献するでしょう。
また、セキュリティ関連のバグ修正も含まれているため、早めのアップグレードを推奨します。