[アップデート] Lambda durable functions の AWS 公式 Kiro Power が追加されていたので使ってみた

[アップデート] Lambda durable functions の AWS 公式 Kiro Power が追加されていたので使ってみた

2026.03.14

いわさです。

Kiro IDE では Kiro Powers という機能を使うことで AI エージェントに事前定義したステアリングファイルや MCP ツールなどのセットを必要な時だけ使用することが出来るようになります。
先日のアップデートで Lambda durable functions の Power が追加されていました。

https://aws.amazon.com/about-aws/whats-new/2026/03/lambda-durable-kiro-power/

今回 Kiro Power を触る機会があり、まずは本アップデートを通して Kiro Power を体験してみます。

Power を使わない場合

Power を使わない場合の標準動作はこちらです。
一見要求どおりに動こうとしているように見えますが、よく見てみると Durable Lambda Functions の実装方法として Step Functions + Lambda などを提案してきています。

AF6CFA96-09E2-41EB-A273-D2896AF19999.png

コンテキストが少ないため期待どおりの応答を得ることができていません。

Power のインストール方法と使う場合の挙動

続いて Power をインストールしたときの挙動を確認してみましょう。
本日時点で Kiro Power は Kiro IDE でのみサポートされています。将来的には Kiro CLI やその他のツールでもサポートされる計画があるようです。
Kiro Power アイコンから「Build applications with Lambda durable functions」を選択します。

9441CD32-EE4F-46B8-8896-326FEA100908_1_105_c.jpeg

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

4F2BACD3-1F8B-432B-862D-1D3FAC159FCA_1_105_c.jpeg

Power のアクティベートですが、対象 Power のPOWER.mdに定義されたキーワードをトリガーにアクティベートが始まります。
今回の Power だと以下で定義されています。

https://github.com/aws/aws-durable-execution-docs/blob/main/aws-lambda-durable-functions-power/POWER.md

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

ステアリングファイルが読み込まれていますね。

41DE0EF6-C8F4-47E6-B73C-FF98CFEE0489.png

Power のリポジトリ上にステアリングファイル一式が公開されています。
基本的な実装ガイダンスをはじめ、テスト方法やトラブルシューティング、エラーハンドリング方法など定義されていました。なるほどね。

https://github.com/aws/aws-durable-execution-docs/tree/main/aws-lambda-durable-functions-power/steering

この指示で作成されたコードがこちらです。

template.yaml
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
handler.py
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 を作っておくと便利そうですね。

この記事をシェアする

FacebookHatena blogX

関連記事