![[アップデート] Lambda durable functions の AWS 公式 Kiro Power が追加されていたので使ってみた](https://images.ctfassets.net/ct0aopd36mqt/4uTbTE9O9jUJCOs80dZ0Ao/e2da592b5eaaad0f5993d6ff64a12467/aws-kiro.png?w=3840&fm=webp)
[アップデート] Lambda durable functions の AWS 公式 Kiro Power が追加されていたので使ってみた
いわさです。
Kiro IDE では Kiro Powers という機能を使うことで AI エージェントに事前定義したステアリングファイルや MCP ツールなどのセットを必要な時だけ使用することが出来るようになります。
先日のアップデートで Lambda durable functions の Power が追加されていました。
今回 Kiro Power を触る機会があり、まずは本アップデートを通して Kiro Power を体験してみます。
Power を使わない場合
Power を使わない場合の標準動作はこちらです。
一見要求どおりに動こうとしているように見えますが、よく見てみると Durable Lambda Functions の実装方法として Step Functions + Lambda などを提案してきています。

コンテキストが少ないため期待どおりの応答を得ることができていません。
Power のインストール方法と使う場合の挙動
続いて Power をインストールしたときの挙動を確認してみましょう。
本日時点で Kiro Power は Kiro IDE でのみサポートされています。将来的には Kiro CLI やその他のツールでもサポートされる計画があるようです。
Kiro Power アイコンから「Build applications with Lambda durable functions」を選択します。

先ほどと同じようにほぼ同じプロンプトを入力してみます。
Kiro のレスポンスを見てみるとaws-lambda-durable-functionsの Power をアクティベートしていることが確認できます。

Power のアクティベートですが、対象 Power のPOWER.mdに定義されたキーワードをトリガーにアクティベートが始まります。
今回の Power だと以下で定義されています。
通常の MCP サーバーの場合であればセッション開始時に静的にロードされてコンテキストが消費されるのですが、Power の場合はこのアクティベートのタイミングで初めて MCP サーバーやステアリングファイルが読み込まれます。
そのため必要なタイミングになって初めてコンテキストウィンドウを消費するという特性があります。
ステアリングファイルが読み込まれていますね。

Power のリポジトリ上にステアリングファイル一式が公開されています。
基本的な実装ガイダンスをはじめ、テスト方法やトラブルシューティング、エラーハンドリング方法など定義されていました。なるほどね。
この指示で作成されたコードがこちらです。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Durable Lambda Function - Parallel Calculation Workflow
Globals:
Function:
Timeout: 900
MemorySize: 512
Runtime: python3.13
Resources:
CalculationFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: parallel-calculation-function
Handler: handler.handler
CodeUri: ./src
DurableConfig:
ExecutionTimeout: 3600
RetentionPeriodInDays: 7
Policies:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
AutoPublishAlias: prod
Environment:
Variables:
LOG_LEVEL: INFO
Outputs:
FunctionArn:
Description: Function ARN
Value: !GetAtt CalculationFunction.Arn
AliasArn:
Description: Function Alias ARN
Value: !Ref CalculationFunction.Alias
from aws_durable_execution_sdk_python import durable_execution, DurableContext, durable_step, StepContext
from aws_durable_execution_sdk_python.config import MapConfig
from typing import Dict, List
@durable_step
def calculate_square(step_ctx: StepContext, number: int) -> int:
"""数字の二乗を計算"""
return number * number
@durable_step
def calculate_cube(step_ctx: StepContext, number: int) -> int:
"""数字の三乗を計算"""
return number * number * number
@durable_execution
def handler(event: Dict, context: DurableContext) -> Dict:
"""
並列計算ワークフロー
入力例:
{
"numbers": [1, 2, 3, 4, 5],
"operation": "square" # または "cube"
}
"""
numbers = event.get('numbers', [1, 2, 3, 4, 5])
operation = event.get('operation', 'square')
context.logger.info(f"Starting parallel calculation for {len(numbers)} numbers")
# 計算関数を選択
if operation == 'cube':
def process_number(ctx: DurableContext, num: int, index: int, items: List[int]):
return ctx.step(calculate_cube(num), name=f'calculate-cube-{index}')
else:
def process_number(ctx: DurableContext, num: int, index: int, items: List[int]):
return ctx.step(calculate_square(num), name=f'calculate-square-{index}')
# 並列実行(最大3つ同時)
results = context.map(
inputs=numbers,
func=process_number,
name='parallel-calculations',
config=MapConfig(max_concurrency=3)
)
# エラーチェック
results.throw_if_error()
# 結果を取得
calculated_values = results.get_results()
context.logger.info(f"Completed {results.success_count} calculations")
return {
'success': True,
'operation': operation,
'input': numbers,
'results': calculated_values,
'total_count': results.total_count,
'success_count': results.success_count
}
指示どおりの構成で作成されています。コード上も期待どおりでaws_durable_execution_sdk_pythonが使われて DurableContext の並列実行機能(map)が使われていることが確認できました。
さいごに
本日は Lambda durable functions の AWS 公式 Kiro Power が追加されていたので使ってみました。
AWS 公式でいくつか提供されているので、何か操作したい時はプレーンな状態で指示するよりも Power を使ったほうがより良い構成で作成出来そうです。
本日時点で Kiro IDE でのみサポートされているので利用シーンが少し限定されてしまいますが、色々なユースケースごとにカスタム Power を作っておくと便利そうですね。







