Contents
Kiro の概要と AWS における位置付け
Kiro は「仕様駆動開発(Spec‑Driven Development)」を核にした AI エージェント型 IDE です。ユーザーは intent と schema を先に定義し、Kiro が Lambda ハンドラや Step Functions のコード・インフラ設定まで自動生成します。AWS のサーバーレスサービス(Lambda、SAM、Step Functions、S3)と深く統合されているため、エージェントの設計からデプロイまでを一貫して管理できる点が最大の強みです。
- 公式サイト: https://kiro.dev
- GitHub(CLI・プラグイン): https://github.com/kiro-ai/cli
- AWS 公式ブログ(2024 年 3 月掲載): https://aws.amazon.com/jp/blogs/news/kiro-agent-development-with-spec-driven/
このセクションでは、Kiro が AWS の各サービスとどのように連携し、開発効率を向上させるかを概観します。
仕様駆動がもたらすメリット
Kiro は意図(intent)とスロット(schema)を YAML で宣言するだけで、以下を自動生成します。
- Lambda ハンドラ – 言語別テンプレートに基づく実装コード。
- SAM テンプレート –
sam build/sam deployに必要な CloudFormation 定義。 - Step Functions ワークフロー(オプション) – 長時間タスクやリトライロジックを宣言的に記述。
これにより、開発者はビジネスロジックの設計に集中でき、インフラ構築の手間が大幅に削減されます。
前提条件と環境セットアップ
本章では Kiro を利用するために必要な AWS アカウント・IAM 権限・開発ツールのインストール手順を段階的に示します。各ステップの冒頭に簡単な導入文を入れ、作業漏れが起きないよう配慮しています。
1. AWS アカウントと IAM ロールの準備
AWS の利用には有効なアカウントが必須です。まだお持ちでない場合は https://aws.amazon.com/jp/ から作成してください。Kiro が生成するリソース(Lambda、S3、Step Functions)にアクセスできるよう、次のポリシーを組み合わせた IAM ロールを作成します。
| ポリシー名 | 主な権限 |
|---|---|
AWSLambdaFullAccess |
Lambda 関数の作成・更新 |
AmazonS3FullAccess |
バケット操作(PutObject, GetObject) |
AWSStepFunctionsFullAccess |
ステートマシンの定義・実行 |
CloudWatchLogsFullAccess |
ログ出力とメトリクス取得 |
手順: IAM コンソール → ロール > ロールを作成 → 上記ポリシーをアタッチ → 任意の名前で保存。デプロイ時は
--role-arnオプションで指定します。
2. 必要ツールのインストール
以下の表に示すコマンドで macOS と Linux の両環境に対応したインストール手順をまとめました。各ツールはバージョン確認コマンドで正常にインストールされたことを確認してください。
| ツール | macOS インストール例 | Linux インストール例 |
|---|---|---|
| AWS CLI v2 | brew install awscli |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" → unzip awscliv2.zip && sudo ./aws/install |
| SAM CLI | brew install aws-sam-cli |
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html を参照 |
| Node.js (≥18) & npm | brew install node@20 |
curl -fsSL https://fnm.vercel.app/install | bash && fnm install 20 |
| Python 3.11 + pip | brew install python@3.11 |
sudo apt-get update && sudo apt-get install -y python3.11 python3.11-venv |
| VSCode 拡張「Kiro」 | VSCode → Marketplace 検索 Kiro → インストール | 同左 |
3. Kiro CLI(プレビュー版)と VSCode 拡張の取得
Kiro は npm と pip のいずれかでインストールできます。公式ドキュメントに記載された最新版を取得してください。
|
1 2 3 4 5 6 |
# npm(Node 環境) npm install -g kiro-cli@latest # pip(Python 環境) pip install kiro==0.9.0 |
インストール後は次のコマンドでバージョンが表示されれば完了です。
|
1 2 |
kiro --version # 例: kiro version 0.9.0 |
VSCode の拡張機能も有効化すると、YAML ファイルに対するシンタックスハイライトとインテリセンスが利用できます。
エージェント開発フロー(仕様駆動開発)
この章では プロジェクト作成 → intent/ schema 定義 → 自動生成コードの検証 という流れを具体的に示します。各サブセクションは「何をするか」の短い導入文で始め、手順が分かりやすくなるよう配慮しています。
3.1 プロジェクト作成と manifest の定義
kiro init コマンドで雛形ディレクトリを生成し、プロジェクト全体のメタ情報を manifest.yml に記述します。manifest は SAM テンプレート生成の元になるため、ランタイム・リージョンは必ず正しく設定してください。
|
1 2 3 |
mkdir my-kiro-agent && cd $_ kiro init |
manifest.yml(抜粋)
|
1 2 3 4 5 6 7 8 |
name: file-assistant runtime: python3.11 # 対応言語は Python, Node.js, Java など aws_region: ap-northeast-1 # デプロイ先リージョン description: S3 へファイルをアップロードし、結果を返すエージェント permissions: - AWSLambdaFullAccess - AmazonS3FullAccess |
この設定だけで sam build / sam deploy が自動的に連携します。
3.2 intent と schema の設計
ユーザーが実行したい操作を intent、その入力項目を schema(スロット)として YAML に記述します。Kiro はこの情報から型安全なハンドラとバリデーションロジックを生成します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# intents/upload_file.yaml intent: UploadFile description: ユーザーがローカルファイルを S3 に保存したい slots: - name: file_path type: string required: true - name: bucket_name type: string required: true responses: - "ファイルを {bucket_name} にアップロードしました。" |
kiro generate を実行すると、対応するハンドラが src/upload_file_handler.py として作成されます。
|
1 2 3 4 5 |
def handler(event, context): file_path = event["slots"]["file_path"] bucket = event["slots"]["bucket_name"] # 自動生成された S3 アップロードロジック(必要に応じてカスタマイズ可) |
3.3 バリデーションとテストコードの自動生成
kiro validate は manifest と intent の整合性をチェックし、エラーがあれば CI パイプラインで失敗させることができます。続いて kiro test init により単体テスト用スケルトンが作成されます。
|
1 2 3 |
kiro validate # 仕様チェック(CI 推奨) kiro test init # tests ディレクトリと雛形を生成 |
tests/test_upload_file.py(抜粋)
|
1 2 3 4 5 |
def test_intent_schema(): from intents.upload_file import UploadFileIntent intent = UploadFileIntent(file_path="/tmp/a.txt", bucket_name="my-bucket") assert intent.is_valid() |
CI に組み込むだけで、仕様変更時の回帰テストが自動的に走ります。
長時間タスクと外部サービス連携例
エージェントは単一 Lambda では処理しきれないケース(画像解析や機械学習バッチなど)があります。ここでは S3 → Lambda → Step Functions の典型フローを示します。
4.1 S3 へのファイルアップロード
intent で受け取ったローカルパスは、生成されたハンドラ内で boto3 を用いて即座に指定バケットへ転送できます。S3 は大容量・高耐久のデータ共有手段として最適です。
|
1 2 3 4 5 6 7 8 9 |
import boto3, os s3 = boto3.client("s3") def upload_to_s3(local_path: str, bucket: str) -> str: key = os.path.basename(local_path) s3.upload_file(local_path, bucket, key) return f"s3://{bucket}/{key}" |
4.2 別 Lambda 関数の非同期呼び出し
アップロード完了後に重い処理(例:画像解析)を別関数で実行します。InvocationType="Event" にすることで非同期実行が可能です。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import json, boto3 lambda_client = boto3.client("lambda") def invoke_analysis(s3_uri: str): payload = {"s3_uri": s3_uri} lambda_client.invoke( FunctionName="image-analysis", InvocationType="Event", # 非同期実行 Payload=json.dumps(payload) ) |
4.3 Step Functions によるオーケストレーション
manifest.yml に workflow: true を追加すると、Kiro がステートマシン定義を自動生成します。リトライやエラーハンドリングも宣言的に記述でき、長時間タスクでも安定運用が可能です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# manifest.yml の一部 workflow: true states: - name: UploadFile type: Task resource: arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:upload_file_handler - name: AnalyzeImage type: Task resource: arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:image-analysis catch: - errors: ["States.ALL"] resultPath: "$.error" next: Failure |
sam build && sam deploy 後に CloudFormation テンプレートの一部としてデプロイされ、Step Functions コンソールでフローを可視化できます。
CI/CD パイプライン構築と運用ベストプラクティス
本章では GitHub Actions と AWS CodePipeline を組み合わせた自動ビルド・テスト・デプロイの例を示し、障害検知のポイントも解説します。
5.1 GitHub Actions によるビルド&テスト
以下のワークフローはプッシュ時に仕様バリデーション、ユニットテスト、SAM ビルドまでを自動実行します。kiro validate --strict を使用することでスキーマ違反を厳格にチェックできます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# .github/workflows/ci.yml name: CI on: push: branches: [ main ] jobs: build-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.11" - name: Install dependencies run: | pip install -r requirements.txt pip install kiro==0.9.0 aws-sam-cli - name: Validate Kiro spec run: kiro validate --strict - name: Run unit tests run: pytest tests/ - name: SAM Build run: sam build --use-container |
5.2 CodePipeline による自動デプロイ
GitHub Actions が生成したアーティファクト(template.yaml とコード)を S3 に保存し、CodePipeline がそれを取得して CloudFormation スタックとしてデプロイします。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# buildspec.yml(CodeBuild 用) version: 0.2 phases: install: runtime-versions: python: 3.11 commands: - pip install kiro==0.9.0 aws-sam-cli build: commands: - sam build --use-container artifacts: files: - '**/*' |
パイプライン構成(概要)
- Source – GitHub リポジトリから最新コードを取得。
- Build – CodeBuild コンテナで
sam buildを実行し、CloudFormation テンプレート (template.yaml) と Lambda アーティファクトを生成。 - Deploy – CloudFormation スタックとしてデプロイ。ロールは前述の IAM ロールを使用。
5.3 トラブルシューティングとモニタリング
| 項目 | 確認ポイント |
|---|---|
| ログ | Lambda の print / console.log が CloudWatch Logs に出力されているか。Kiro が付与する requestId で検索できることを確認。 |
| メトリクス | Step Functions の実行時間・失敗率を CloudWatch Dashboard に可視化し、閾値超過時は SNS アラートを設定。 |
| IAM エラー | AccessDenied が出た場合はロールに AWSLambdaBasicExecutionRole が含まれているか再確認。 |
| バリデーション失敗 | CI で kiro validate --strict が失敗したら、intent のスキーマ変更が原因の可能性あり。 |
ベストプラクティス
- コードレビュー時に manifest と intent を必ず確認し、不要な権限は削除する。
- ステージング環境を別スタックで運用し、本番デプロイ前にフルテストを実施。
ライセンス・利用条件
Kiro はオープンソース MIT ライセンスのもとで配布されています(LICENSE ファイル参照)。MIT ライセンスは以下の条件を満たす限り、商用・非商用問わず自由に使用・改変・再配布が可能です。
- ソフトウェアおよび付属ドキュメントに著作権表示とライセンス条項を残すこと。
- 保証は一切なく、利用者の責任で使用すること(「現状有姿」)。
CLI (kiro-cli) と VSCode 拡張は同じ MIT ライセンスです。ただし、AWS のサーバーレスサービス自体は AWS の利用規約に従う必要があります。商用プロジェクトで使用する際は、IAM ポリシーの最小権限化と コスト管理(Lambda 実行時間・Step Functions 状態遷移) を必ず考慮してください。
まとめ
- Kiro は仕様駆動開発を核に、AWS のサーバーレスサービスとシームレスに連携できる IDE です。
- IAM ロールやツールのインストール手順を正しく踏めば、
kiro init→manifest.yml→intent/ schema→ 自動生成コードというフローが数分で完了します。 - 長時間タスクは Step Functions でオーケストレーションし、CI/CD は GitHub Actions と CodePipeline の組み合わせで自動化できます。
- MIT ライセンスの下で自由に利用できるため、社内プロジェクトから SaaS 製品まで幅広く適用可能です。
ぜひ本稿を参考に、Kiro を活用したサーバーレス AI エージェント開発に挑戦してみてください。