
Kiro CrewをAmazon Linux 2023のEC2で試してみた
はじめに
現地時間2026年8月4日に公式ブログでKiro Crewが発表されました。
macOSへのインストールとSlack連携は、いわさの記事をご覧ください。
本記事では、Amazon Linux 2023のEC2で、Kiro CLIとKiro Crewのインストール、Gatewayの起動、SSHトンネル経由でのDashboard利用を紹介します。
検証内容
検証環境
検証は次の環境で実施しました。
| 項目 | 値 |
|---|---|
| EC2インスタンスタイプ | t3a.medium |
| アーキテクチャ | x86_64 |
| OS | Amazon Linux 2023 |
| リージョン | ap-northeast-1 |
| kiro-cli | 2.16.1 |
| kirocrew | 0.1.2 |
| 構築方法 | CloudFormation(IAMスタック+EC2スタック) |
CloudFormationテンプレートの全文は末尾の再現情報に掲載しています。x86_64のt3a.medium向けの内容です。
Amazon Linux 2023のEC2へKiro Crewをセットアップする
CloudFormationでIAMスタック、EC2スタックの順にデプロイします。
export AWS_REGION=ap-northeast-1
export KEY_NAME=<EC2_KEY_PAIR_NAME>
export IAM_STACK_NAME=kirocrew-iam
export EC2_STACK_NAME=kirocrew
aws cloudformation deploy \
--region "$AWS_REGION" \
--template-file kirocrew-iam.yaml \
--stack-name "$IAM_STACK_NAME" \
--capabilities CAPABILITY_NAMED_IAM
aws cloudformation deploy \
--region "$AWS_REGION" \
--template-file kirocrew-ec2.yaml \
--stack-name "$EC2_STACK_NAME" \
--parameter-overrides \
KeyName="$KEY_NAME" \
IamStackName="$IAM_STACK_NAME"
EC2のUserDataでkiro-cliとkirocrewのインストールが完了した後、SSHでログインします。
Kiro CLIにログインする
kiro-cli login
組織のStart URLとリージョンを入力し、ブラウザーでデバイスコードを承認してログインします。なお、Start URL、デバイスコード、認証URLは掲載していません。
IAM Identity Centerでサインインする手順は、下記の記事で紹介しています。
Kiro Crewを初期設定する
kirocrew setup
今回はワークスペースをデフォルトのまま使用しました。Slack連携とAWS上での起動はスキップし、タイムゾーンにはAsia/Tokyoを指定しました。対話の流れは次のとおりです。
kirocrew setupの対話ログ
Kiro Crew Setup 👻
── Workspace Directory ──
Default: /home/ec2-user/workplace/kirocrew-workspace
Workspace path [/home/ec2-user/workplace/kirocrew-workspace]:
✅ Workspace: /home/ec2-user/workplace/kirocrew-workspace
Installing agent config...
✅ Agent installed: /home/ec2-user/.kiro/agents/kirocrew.json
── Slack Credentials ──
Configure Slack tokens? [Y/n]: n
⏭ Skipped. Slack integration will be disabled.
── Slash Command ──
Slash command name [kirocrew]:
✅ Slash command: /kirocrew
── Timezone ──
IANA timezone (e.g. America/Los_Angeles): Asia/Tokyo
✅ Timezone saved: Asia/Tokyo
── Run on AWS (optional) ──
Launch KiroCrew on AWS now? [y/N]: n
⏭ Skipped. Launch later: kirocrew cloud launch
👻 Done! Try: kirocrew doctor && kirocrew gateway
Kiro CLIへのログインとKiro Crewの初期設定を完了しました。
Gatewayを起動してSSHトンネルで接続する
EC2上でGatewayを起動します。
kirocrew gateway
kirocrew gatewayの起動ログ
👻 Kiro Crew gateway starting…
⚠️ Do not enter sensitive, secret, or regulated data into KiroCrew.
Treat anything you send as potentially logged or processed by the
configured model provider.
👻 Dashboard: ssh -NL 5476:localhost:5476 <EC2_HOST>
then open http://localhost:5476?token=<GATEWAY_TOKEN>
👻 Run 24/7: see docs/remote-desktop-setup.md for systemd service setup
👻 Headless remote session — skipping browser auto-open
ss -ltnp | grep ':5476'
Gatewayは127.0.0.1:5476で待ち受けていました。起動時に表示されるhttp://localhost:5476?token=<GATEWAY_TOKEN>形式のDashboard URLを、このあと使います。
ssh -N -L 45476:127.0.0.1:5476 ec2-user@<EC2_HOST>
ローカル側の45476は、検証時に使用した空きポートです。45476が使用中の場合は任意の空きポートに読み替え、ブラウザーで開くURLのポート番号も同じ値に変更してください。
SSHトンネルを張った状態で、Dashboard URLのポート番号を45476へ読み替えます。http://localhost:45476?token=<GATEWAY_TOKEN>をローカルブラウザーで開きます。

ローカルブラウザーからDashboardを表示できました。
Dashboardからチャットを実行する
セッションでモデル選択UIを開きました。

利用できるモデルの一覧から選択できました。
セッション上のエージェントに、実行中のOSとアーキテクチャを尋ねました。

応答ではAmazon Linux 2023とx86_64が示されました。
STSで呼び出し元の認証情報を確認するよう依頼しました。

インスタンスプロファイルの一時認証情報で、STSの呼び出し元を確認できました。
まとめ
Amazon Linux 2023のEC2でKiro Crewを起動し、SSHトンネル経由でローカルブラウザーからDashboardを利用できました。
Kiro CrewをEC2にインストールすることで、EC2をエージェント専用のサンドボックスとして扱えます。エージェントが実行するコマンドの影響はインスタンスの中にとどまり、手元のマシンには及びません。試し終わったらスタックを削除するだけで、環境ごと片付けられます。AWS APIを操作させる場合も、インスタンスプロファイルの一時認証情報をそのまま利用できます。
Dashboardからのチャットのような軽い処理であれば、Kiro Crewはt3a.mediumで動作しました。まずKiro Crewを体験してみたい場合は、EC2での実行をお試しください。
参考リンク
- https://kiro.dev/blog/introducing-kiro-crew/
- https://kiro.dev/docs/crew/
- https://github.com/kirodotdev/KiroCrew
- https://www.infoworld.com/article/4204961/awss-kiro-crew-aims-to-turn-ai-coding-agents-into-autonomous-engineering-teams.html
再現情報
kirocrew-iam.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: KiroCrew IAM - EC2 Instance Profile with SSM access
Resources:
KiroCrewRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub '${AWS::StackName}-role'
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
KiroCrewInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Roles:
- !Ref KiroCrewRole
Outputs:
InstanceProfileName:
Value: !Ref KiroCrewInstanceProfile
Export:
Name: !Sub '${AWS::StackName}-instance-profile'
RoleName:
Value: !Ref KiroCrewRole
Export:
Name: !Sub '${AWS::StackName}-role'
kirocrew-ec2.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: KiroCrew EC2 - x86_64 / AL2023 / kiro-cli + kirocrew auto-install
Parameters:
KeyName:
Type: AWS::EC2::KeyPair::KeyName
Default: m4mini
Description: EC2 キーペア名
IamStackName:
Type: String
Default: kirocrew-iam
Description: IAM スタック名(InstanceProfile のエクスポート元)
Resources:
KiroCrewSG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub '${AWS::StackName} - SSH only'
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
KiroCrewInstance:
Type: AWS::EC2::Instance
DeletionPolicy: Delete
UpdateReplacePolicy: Delete
Properties:
InstanceType: t3a.medium
ImageId: !Sub '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64}}'
KeyName: !Ref KeyName
IamInstanceProfile: !ImportValue
Fn::Sub: '${IamStackName}-instance-profile'
SecurityGroupIds:
- !Ref KiroCrewSG
MetadataOptions:
HttpTokens: required
HttpEndpoint: enabled
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
VolumeSize: 20
VolumeType: gp3
Encrypted: true
DeleteOnTermination: true
Tags:
- Key: Name
Value: !Sub '${AWS::StackName}'
UserData:
Fn::Base64: !Sub |
#!/bin/bash
set -euo pipefail
LOG="/var/log/kirocrew-setup.log"
exec > >(tee -a "$LOG") 2>&1
echo "===== KiroCrew setup started: $(date) ====="
# ---- 1. /tmp 拡張 ----
mount -o remount,size=2G /tmp
echo "[1/6] /tmp 拡張: $(df -h /tmp | tail -1 | awk '{print $4}') 空き"
# ---- 2. スワップ 1GB ----
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
echo "[2/6] スワップ完了: $(swapon --show --noheadings)"
# ---- 3. システムパッケージ ----
dnf install -y python3.11 python3.11-pip nodejs npm git unzip
echo "[3/6] パッケージ完了"
# ---- 4. kiro-cli インストール (ec2-user) ----
sudo -u ec2-user bash << 'EOF'
set -euo pipefail
export HOME=/home/ec2-user
echo "[4/6] kiro-cli インストール中..."
KIRO_CLI_SKIP_SETUP=1 bash <(curl -fsSL https://cli.kiro.dev/install) <<< "y"
echo "[4/6] kiro-cli 完了: $(ls $HOME/.local/bin/kiro* | tr '\n' ' ')"
EOF
# ---- 5. kirocrew インストール (ec2-user) ----
sudo -u ec2-user bash << 'EOF'
set -euo pipefail
export HOME=/home/ec2-user
echo "[5/6] kirocrew インストール中..."
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh
echo "[5/6] kirocrew 完了: $($HOME/.local/bin/kirocrew --version 2>/dev/null || echo installed)"
EOF
# ---- 6. PATH (.bashrc) ----
sudo -u ec2-user bash -c \
"grep -q '\.local/bin' ~/.bashrc || echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> ~/.bashrc"
echo "[6/6] .bashrc 更新完了"
echo "===== KiroCrew setup finished: $(date) ====="
echo "KIROCREW_SETUP_DONE" > /tmp/kirocrew-setup-done
Outputs:
InstanceId:
Value: !Ref KiroCrewInstance
PublicIp:
Value: !GetAtt KiroCrewInstance.PublicIp
SSMConnect:
Value: !Sub 'aws ssm start-session --target ${KiroCrewInstance} --region ${AWS::Region}'
SSHConnect:
Value: !Sub 'ssh -i ~/.ssh/${KeyName}.pem ec2-user@${KiroCrewInstance.PublicIp}'
NextStep:
Value: 'kirocrew setup && kirocrew config set agent.allow_unsandboxed_exec true && kirocrew gateway'









