概要
AWS CDK v2.232.0では、Lambda Durable Functionsのサポートが追加され、長時間実行される関数の実装が容易になりました。また、Bedrock AgentCoreでコンテナイメージをURI文字列から直接参照できる新しいメソッドが追加されました。
新機能
Lambda: Durable Functions のサポート (#36282)
Lambda Durable Functionsは、永続的な状態を持つ長時間実行関数を実現する新機能です。CDK v2.232.0では、FunctionコンストラクトにdurableConfigプロパティが追加されました。
主要な設定オプション
executionTimeout (必須):
- 型:
Duration - Durable Functionの実行タイムアウト時間
- 1秒から31,622,400秒(366日)の範囲で設定可能
retentionPeriod (オプション):
- 型:
Duration - 実行が完了した後、履歴を保持する日数
- 1日から90日の範囲で設定可能
- 注意: 日数は整数で指定する必要があり、小数を含むDurationを指定するとランタイムまたはデプロイエラーが発生します
- デフォルト: 14日
使用例
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { Duration } from 'aws-cdk-lib';
const durableFunction = new lambda.Function(this, 'MyDurableFunction', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'),
// Durable Functions の設定
durableConfig: {
// 最大実行時間: 7日間(必須)
executionTimeout: Duration.days(7),
// 履歴の保持期間: 30日間(オプション、デフォルトは14日)
retentionPeriod: Duration.days(30),
},
});
IAM権限の変更
Durable Functionsを有効にすると、Lambda関数のIAMロールに自動的にアタッチされるマネージドポリシーがAWSLambdaBasicExecutionRoleからAWSLambdaBasicDurableExecutionRolePolicyに変更されます。
新しいポリシーには、既存の権限に加えて以下のアクションが含まれます:
lambda:CheckpointDurableExecution- 実行状態のチェックポイント作成lambda:GetDurableExecutionState- 実行状態の取得
適用シーン
- データ処理パイプラインの長時間実行ジョブ
- 複雑なワークフローの実装
- リトライ可能な状態を持つバッチ処理
- 段階的に進行するビジネスプロセス
詳細はLambda Durable Functions公式ドキュメントを参照してください。
Bedrock AgentCore: fromImageUri メソッドの追加 (#36263)
AgentRuntimeArtifactクラスに新しい静的メソッドfromImageUri()が追加されました。これにより、コンテナイメージをURI文字列から直接参照できるようになりました。
追加された背景
従来は、ECRリポジトリコンストラクト(fromEcrRepository)やローカルDockerアセット(fromAsset)を使用する必要があり、以下のケースで不便でした:
- CloudFormationパラメータやスタック出力からコンテナURIを受け取る場合
- 外部レジストリ(Docker Hub、プライベートレジストリ)のイメージを参照する場合
- クロススタック・クロスアカウントのイメージ参照
使用例
import { AgentRuntimeArtifact } from '@aws-cdk/aws-bedrock-agentcore-alpha';
import { CfnParameter } from 'aws-cdk-lib';
// 直接URIを指定
const artifact = AgentRuntimeArtifact.fromImageUri(
'public.ecr.aws/my-registry/my-agent:latest'
);
// CloudFormationトークンやパラメータも使用可能
const imageUri = new CfnParameter(this, 'ImageUri', {
type: 'String',
description: 'Agent container image URI',
});
const artifactFromParam = AgentRuntimeArtifact.fromImageUri(
imageUri.valueAsString // CloudFormationパラメータから取得
);
// クロスアカウントのECRイメージ参照
const crossAccountArtifact = AgentRuntimeArtifact.fromImageUri(
'123456789012.dkr.ecr.us-east-1.amazonaws.com/my-agent:v1.0.0'
);
重要な注意点
fromImageUri()メソッドは、IAM権限を自動的に付与しません- プライベートECRリポジトリからイメージをプルする場合は、手動でIAM権限を設定する必要があります
- CloudFormationトークンや式をサポートしています
これにより、fromEcrRepository()、fromAsset()、fromS3()に続く第4のデプロイオプションとして利用できます。
CloudFormation リソース定義の更新
L1コンストラクトがCloudFormationの最新リソース定義に更新されました (#36299, #36277)。
バグ修正
Core: Jestでの一時ファイルクリーンアップ問題の修正 (#36238)
#36043で導入された一時ディレクトリのクリーンアップ機能が、Jestを使用したテストで動作しない問題が修正されました。
問題の原因
Jestは標準のNode.js exitイベントを抑制するため、クリーンアップ処理が実行されませんでした。
解決方法
新しい公開静的関数が追加され、Jestのテストから手動で呼び出せるようになりました:
import { CloudAssembly } from 'aws-cdk-lib/cx-api';
afterAll(CloudAssembly.cleanupTemporaryDirectories);
便利なヘルパースクリプト
すべてのJestテストに自動的にクリーンアップハンドラを注入するスクリプトも提供されています:
jest --setupFilesAfterEnv aws-cdk-lib/testhelpers/jest-autoclean
このPRのリリース後、すべてのCLI initテンプレートに上記の設定が追加される予定です。
この修正により、#802の長年の問題が解決されました。
Alphaモジュール (2.232.0-alpha.0)
Bedrock AgentCore Alpha: 静的コンストラクトIDの使用によるバグ修正 (#36241)
AgentRuntimeArtifact.fromAsset()がディレクトリパスのMD5ハッシュをコンストラクトIDに追加していたため、Dockerイメージのディレクトリ内容が変更されるたびにCDKパイプラインが自己変更(self-mutate)する問題が修正されました。
変更内容:
- コンストラクトIDを
AgentRuntimeArtifact${hash}から静的なAgentRuntimeArtifactに変更 - 他のDockerイメージの扱いと一貫性のある動作に修正
この修正により、イメージの内容が変更されてもパイプラインの不要な変更が発生しなくなります (#35968)。
Mixins Preview: サービスエクスポートの整合性修正 (#36201)
mixins-previewパッケージのサービスエクスポートがaws-cdk-libと異なっていた問題を修正。エクスポートの整合性が改善されました (#36210)。
Mixins Preview: ConstructSelectorインターフェースの型安全性向上 (#36266)
ConstructSelectorインターフェースを強く型付けするよう改善され、型安全性が向上しました。
まとめ
AWS CDK v2.232.0では、Lambda Durable Functionsという重要な新機能のサポートが追加され、長時間実行されるステートフルな処理を実装しやすくなりました。また、Bedrock AgentCoreでは柔軟なコンテナイメージ参照が可能になり、より多様なデプロイシナリオに対応できるようになりました。
Jestユーザーにとっては、一時ファイルのクリーンアップ問題が解決され、より快適なテスト環境が提供されるようになりました。
今後のCDKアップデートでも、これらの機能をぜひ活用してください。