🪤

Kiro CLI を使ってみたら AWSエンジニアには必須級であると思った。

に公開

ポート株式会社 サービス開発部 Advent Calendar 2025 1日目 です。

Kiro CLI とは

ざっくり言うと、「ターミナルで動く Amazon 製の AIエージェント」です。
以前の Amazon Q Developer CLI の後継で、より強化された版という認識で良いと思います。

https://aws.amazon.com/jp/blogs/news/introducing-kiro-cli/

私は、SREエンジニアとして、AWSを中心とした業務を担当しています。
普段の業務ので、「手間がかかって面倒」と思うことは頻繁にあります。
それをAIを使って効率化できるのであれば、ぜひそれを使ってみたいと思っていました。

そこで今回登場した、Kiro CLI は、そういったことを解決してくれると期待し、
早速使ってみることにしました。

Kiro CLI を使えるようにする

以下の方法で install します

https://kiro.dev/docs/cli/

バージョンなどが出力されればOK

$ kiro-cli --version                            
kiro-cli 1.20.1

以下を参考に認証を行います。(今回はGitHubでやりました)
https://kiro.dev/docs/cli/installation/

$ kiro-cli login
✓ Signed in with GitHub (use "kiro-cli logout" to logout)

kiro-cli で起動ができます。

$ kiro-cli      
⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀     ⢀⣴⣶⣶⣦⡀⠀⠀⠀⢀⣴⣶⣦⣄⡀⠀⠀⢀⣴⣶⣶⣦⡀⠀⠀⢀⣴⣶⣶⣶⣶⣶⣶⣶⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣶⣶⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢰⣿⠋⠁⠈⠙⣿⡆⠀⢀⣾⡿⠁⠀⠈⢻⡆⢰⣿⠋⠁⠈⠙⣿⡆⢰⣿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣦⠀⠀⠀⠀⣴⡿⠟⠋⠁⠀⠀⠀⠈⠙⠻⢿⣦⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⣇⣴⡿⠋⠀⠀⠀⢀⣼⠇⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢠⣤⣤⣤⣤⣄⠀⠀⠀⠀⣿⡆⠀⠀⣼⡟⠀⠀⠀⠀⣀⣀⣀⠀⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⡿⠋⠀⠀⠀⢀⣾⡿⠁⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢸⣿⠉⠉⠉⣿⡇⠀⠀⠀⣿⡇⠀⣼⡟⠀⠀⠀⣰⡿⠟⠛⠻⢿⣆⠀⠀⠀⢻⣧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠙⠁⠀⠀⢀⣼⡟⠁⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢸⣿⣶⣶⡶⠋⠀⠀⠀⠀⣿⠇⢰⣿⠀⠀⠀⢰⣿⠀⠀⠀⠀⠀⣿⡆⠀⠀⠀⣿⡆
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣼⠟⠀⢸⣿⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⡇
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠀⣠⡀⠀⠀⠹⣷⡄⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣤⣄⠀⠀⠀⠀⠹⣿⡅⠀⠀⠸⣿⠀⠀⠀⠸⣿⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⣿⠇
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣾⡟⣷⡀⠀⠀⠘⣿⣆⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣿⡟⣷⡀⠀⠀⠀⠘⣿⣆⠀⠀⢻⣧⠀⠀⠀⠹⣷⣦⣤⣤⣾⠏⠀⠀⠀⣼⡟
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⡇⠹⣷⡀⠀⠀⠈⢻⡇⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣿⡇⠹⣷⡀⠀⠀⠀⠈⢻⡇⠀⠀⢻⣧⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⠀⣼⡟
⠀⠀⠀⠀⠀⠀⠀    ⠸⣿⣄⡀⢀⣠⣿⠇⠀⠙⣷⡀⠀⢀⣼⠇⠀⠸⣿⣄⡀⢀⣠⣿⠇⠸⣿⣄⡀⢀⣠⣿⠇⠀⠙⣷⡀⠀⠀⢀⣼⠇⠀⠀⠀⠻⣷⣦⣄⡀⠀⠀⠀⢀⣠⣴⣾⠟
⠀⠀⠀⠀⠀⠀⠀    ⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠀⠀⠈⠙⠻⠿⠿⠿⠿⠟⠋⠁


Jump into building with Kiro:

1. Ask a question or describe a task
2. Use /context add <file> to provide Kiro with additional info
3. Connect to external tools with by using /mcp

Use /help for more information and happy coding!

Model: Auto (/model to change) | Plan: KIRO FREE (/usage for more detail)

これで Kiro CLI を使えるようになりました。

ここからは、Kiro CLI で私がやってみたかったことを試してみたいと思います。

AWSの情報や CLI の取得

よく業務で、

RDSのエンドポイント取得するCLIをスクリプトに組み込みたい

といったように bash スクリプト内で、AWS CLI を使いたい場面がよくあります。
その際、正確なコマンドを書くために、公式ドキュメント開いて都度調べないといけない手間がありました。

例えば、「RDSのライターインスタンスのエンドポイントを抽出するCLIを書きたい」という場合だと、

  • 「まず、 rds — AWS CLI 2.32.3 Command Reference を調べて…」
  • 「さらにその中の、describe-db-instances を開いて…」
  • 「そこから、引数はこれとこれが必要で…」
  • 「--queryで抽出するには〜、えーっとこう書いて…💦」

もう調べるといった作業が非常に非常に手間でした。

そこで、Kiro CLI を使って
以下のプロンプトを入力してみました。

> プロファイル名 example でアクセスできる ap-northeast-1 ライターインスタンスのエンドポイントは?

> ap-northeast-1リージョンのRDSライターインスタンスのエンドポイントを確認します。
Running aws cli command (using tool: aws):

Service name: rds
Operation name: describe-db-clusters
Parameters: 
Profile name: example
Region: ap-northeast-1
Label: Get RDS cluster endpoints in ap-northeast-1
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t

 - Completed in 2.645s

> ap-northeast-1リージョンには2つのクラスターがあります。ライターエンドポイントは以下の通りです:

1. example-cluster
   - ライターエンドポイント: example-cluster.cluster-example.ap-northeast-1.rds.amazonaws.com
   - ライターインスタンス: example-snapshot

2. example-main-cluster
   - ライターエンドポイント: example-main-cluster.cluster-example.ap-northeast-1.rds.amazonaws.com
   - ライターインスタンス: example-main

といったように、瞬時に出してくれました。

さらに、
続けて、CLI 書いてと頼んでみると…

自分が一番知りたかったコマンドを出してくれました…(すごくいい)

aws rds describe-db-instances --region ap-northeast-1 --profile プロファイル名 \
  --query 'DBInstances[*].[DBInstanceIdentifier,Endpoint.Address]' --output table

後述しますが、AWSの認証は、現在利用しているシェルに依存しているので、
現在のシェルでAWS認証がされていれば、そのまま使えます。

コンテキスト追加

Agent 機能も利用できるので、
/context add . でリポジトリを追加できます。

> /context add 追加したいリポジトリパス

例えば、
→「WAFのルールに条件を追加したい」「この Terraform を module 化したい」みたいな依頼ができます。

例えば、自分がいつも使っているリポジトリの WAF の Terraform を読み込ませるようにしてみます。

> WAFのルール内容を説明してください。

Reading directory: /Users/リポジトリ名/ディレクトリ (using tool: read, max depth: 2)
 ✓ Successfully read directory /Users/リポジトリ名/ディレクトリ (108 entries)
 - Completed in 0.8s

Reading file: /Users/リポジトリ名/ディレクトリ/waf.tf, all lines (using tool: read)
 ✓ Successfully read 30065 bytes from /Users/リポジトリ名/ディレクトリ/waf.tf
 - Completed in 0.0s

> WAF ルール内容を説明します。

## メインWAF (ACL名)

### セキュリティルール(優先度順)

1. Bot Control (Priority 0)
- AWS管理のBot Controlルールセット
- 機械学習は無効、検査レベルはCOMMON
- 各種ボットカテゴリ(広告、アーカイバ、検索エンジン、AI等)は全てカウントのみ(ブロックしない)

2. 検証済みBot許可 (Priority 1)
- 検証済みの正規Botは明示的に許可

3. ブラックリスト (Priority 2)
- IPベースのブラックリストでブロック
- Lambda関数で動的に更新可能

正確にかつ簡略的に概要を説明してくれました。

Custom Agent

Kiro CLI は カスタムエージェントを JSON で定義して使い回せることができます。
https://kiro.dev/docs/cli/custom-agents/

例えば、こんな専用エージェントを作ってみました。

  • エージェント名:waf-triage
    • 入力:CloudWatch Logs Insights のクエリ結果 / WAFログ
    • 出力:クエリ結果の集計、攻撃/誤検知判定などの概要説明

以下のように、WAFのログの集計結果を出してくれるようになりました。

agent

エージェントはデフォルトを使っているので、
/agent generate で ワンライナーで作成可能です。

> /agent generate

✔ Enter agent name:  · waf-triage
✔ Enter agent description:  · SRE agent specialized in analyzing AWS WAF logs, detecting false positives, and proposing safe rule adjustments.
✔ Agent scope · Local (current workspace)

✓ Agent 'waf-triage' has been created and saved successfully!

上記のように作成すると、ローカルに
.kiro/agents/waf-triage.json が作成されます。

作成したエージェントで、以下のように起動し直します。

kiro-cli --agent waf-triage

prompt は /agent edit --name で編集できるので、
固有名詞を入れておくと楽だと思います。

resources

resources に関しては、デフォルトでは以下の md ファイルが追記されていますが、

"resources": [
  "file://AGENTS.md",
  "file://README.md"
]

md ファイルを自作しても良いです。

"resources": [
  "file://AGENTS.md",
  "file://README.md",
  "file://docs/waf/**/*.md"
]

MCP と tools

デフォルトだと、MCPサーバーは空白、tools は全ての tool が使える状態になっているので、

mcpServers: {},
"tools": ["*"],
"allowedTools": [],
  • MCPサーバーには aws-knowledge-mcp-server を許可
  • toolsに Kiro 標準の @builtin を追記
  • allowedTools に 読み取り専用となるように追記
  "mcpServers": {
    "aws-knowledge-mcp-server": {
      "url": "https://knowledge-mcp.global.api.aws",
      "type": "http"
    }
  },
  "tools": [
    "@builtin",
    "@aws-knowledge-mcp-server"
  ],
  "allowedTools": [
    "@builtin/read",
    "@builtin/run_readonly",
    "@aws/use_aws_readonly"
  ],

みたいな形にして、
describe / get など 読み取り系は自動で許可
update / put など 変更系は毎回確認

という運用にしておくと安心です。

使ってよかったポイント

結論、この Kiro CLI は AWSを中心とした業務を行うエンジニアには必須級であると感じました。

そのポイントをまとめます。

とにかく爆速で使える

難しい設定など必要ありません。

インストールから実際に使えるようになるまでの所要時間は数分程度でした。

AWS環境にアクセスする際の特別な設定なども必要なく、ローカル環境の認証情報をそのまま利用できるのが非常に便利です。

新たに AWS の認証設定をする必要はない

AWS 認証は、基本的に 今のシェルの AWS 認証情報 をそのまま使わせるイメージです。
(AWS_PROFILE や AWS_ACCESS_KEY_ID などの設定をみている)

MCP サーバーやCLIはローカルで実行される、とあるので、
KiroがSDKのように、ログインしてアクセスするという仕組みではないようです。
(自身のホスト環境で実行される)

Local Execution: MCP servers run locally on your machine
https://kiro.dev/docs/cli/mcp/security/

他のエージェントと比較しても遜色ない

今まで使っていた、DevinやCopilotと性能に遜色はないと思います。

モデルは主に Sonnet を使っているので、特に不満点はありません。(使用クレジットには注意)

モデル一覧確認

> /model

 Press (↑↓) to navigate · Enter(⏎) to select model 
❯ Auto (current) | 1x credit | Models chosen by task for optimal usage and consistent quality
  claude-sonnet-4.5 | 1.3x credit | The latest Claude Sonnet model
  claude-sonnet-4 | 1.3x credit | Hybrid reasoning and coding for regular use
  claude-haiku-4.5 | 0.4x credit | The latest Claude Haiku model
  claude-opus-4.5 | 2.2x credit -- experimental

プロンプトは日本語でも OK(英語推奨だけど必須ではない)

Kiro のバックエンドは LLM(多言語対応)なので、
日本語プロンプト → 英語で AWS CLI / SDK コマンドを組み立てる
というのは普通にできます。

ChatGPTなどと同じで「英語の方が若干安定しやすい」くらいの違いで、英語必須という制約は特にありません。

ちなみに、デフォルトは Claude Sonnet を使用しているようです。

参考:https://kiro.dev/faq/

Kiro CLI は簡単に使えるので、ぜひ使ってみてください。

ポート株式会社 エンジニアブログ

Discussion