目次
はじめに
AWS Transform とは
AWS Transform は、レガシーなシステムやコードをモダナイズし、インフラやアプリケーションの刷新を促進するエージェントAIサービスです。 ユースケースとしては以下のものが挙げられます。
- 言語バージョンのアップグレード — Python 3.9 → 3.13、Java 11 → 21 など、古いランタイムを最新版に更新する。
- SDK・API の移行 — AWS SDK v1 → v2、boto2 → boto3 など、非推奨になった API を新しいものに置き換える。
- .NET / メインフレームのモダナイゼーション — .NET Framework → .NET 8 への変換や、COBOL → Java への書き換えなど、プラットフォーム移行を支援する。
- VMware 移行 — VMware のワークロードを AWS に移行する。
- Windows モダナイゼーション — Windows 依存の .NET アプリケーションを Linux 対応に変換し、Windows ライセンスへの依存を解消する。
古いシステムの放置は、セキュリティリスクやメンテナンスコスト増大のリスクがある一歩で、膨大な時間と人手を要します。また、本番で稼働している実績のあるシステムの刷新には、技術的にも心理的にも大きなハードルがあり、着手できずにいるケースは少なくありません。AWS Transform は、AI を活用し、これまで解決が難しかった問題の解消を実現してくれる心強いサービスです。
AWS Transform と開発環境の連携が可能になった
2026年5月14日のアップデートで、AWS Transform が Kiro、Claude、Cursor、Codex で利用可能になり、モダナイゼーションの実行を手元の開発環境から手軽に行うことができるようになりました。*1。
今回の検証について
今回は Kiro IDE と AWS Transform を MCP 連携し、AWS Transform による Python の簡易的なサンプルコードを刷新してみました。
検証は以下の流れで進めます:
- AWS Transform の有効化 — AWS マネジメントコンソールで Transform を有効化
- MCP Server の設定 — Kiro の MCP 設定に AWS Transform MCP Server を追加
- サンプルコードを Git リポジトリに準備 — 変換対象の Python 3.9 コードを用意
- Transform のタスクを実行 — Kiro のチャットから変換ジョブを作成し、AWS Transform CLI で実行
- 結果を確認 — 変換前後のコードを比較
前提条件
今回の検証の前提条件になります。前提条件のツールの導入手順は省略しますが、Kiro に相談することで基本的には解決可能だと思います。
| 種別 | コンポーネント | 説明 |
|---|---|---|
| AWS リソース | AWS アカウント + IAM ユーザー | AWSTransformCustomManageTransformations ポリシーが付与されていること |
| 開発環境 | Kiro IDE | MCP Server 経由で Transform を操作する |
| Python パッケージマネージャー | uv | MCP Server の起動に必要(uvx コマンドを使用) |
| 実行環境 | WSL | Windows の場合に必要。Transform CLI は Linux / macOS のみ対応 |
| バージョン管理 | Git | 変換対象のコードが Git リポジトリである必要がある |
| ランタイム | Node.js 20+ | AWS Transform CLI の動作に必要。WSL 上にインストール |
| コマンドラインツール | AWS Transform CLI(atx) |
実際のコード変換を実行する。WSL 上で動作 |
注意点
AWS Transform のジョブの作成や実際のコード変換のコマンドは Kiro チャット内で完結しますが、Windows 環境においては、仕上げのコード変換を WSL 経由で AWS Transform CLI(Windows ネイティブ非対応)を実行する必要があります。 Linux / macOS なら Kiro のターミナルから直接実行可能であるため、すべての操作を IDE で完結できます。ただ、AWS マネジメントコンソールへの接続が不要で、使い慣れた AI エージェントを使って AWS Transform を操作できるため、Windows ユーザーであっても、使い勝手は格段に向上していると思います。
KiroからAWS Transformを使って、レガシーなコードをモダナイズする手順
1. AWS Transform の有効化
まずは、AWS マネジメントコンソール上で AWS Transform を有効化します。AWS Transform へのアクセス方法はいくつか種類がありますが、今回は IAM ユーザーによるアクセス設定を行います。
手順1. AWS マネジメントコンソールで「AWS Transform」を検索し、「Web application」を選択します
手順2. 以下のパラメーターを選択し、「有効にする」を選択します - ユーザアクセス:IAM-only-access - Artifact storage choice:AWS Transform managed storage

手順3. Settings を開き、サービスプロファイルが作成されていることを確認します
以上で AWS Transform の有効化は完了です。
2. MCP Server の設定
手順1. .kiro/settings/mcp.json に以下を追加します
{ "mcpServers": { "awslabs.aws-transform-mcp-server": { "command": "uvx", "args": ["awslabs.aws-transform-mcp-server@latest"], "env": { "AWS_REGION": "ap-northeast-1", "FASTMCP_LOG_LEVEL": "ERROR" } } } }
参照*2
手順2. Kiro を再起動します
手順3. Kiro の MCP Server の一覧に、awslabs.aws-transform-mcp-server が表示されていることと、19 の tools が利用できるようになったことを確認します

以上で MCP Server の設定と接続確認は完了です。
※ 初回は「SSO 認証が必要」と表示される場合があります。IAM-only access で有効化した場合は configure(authMode="reset") を実行することで IAM 認証情報ベースに切り替わり、接続に成功します。
3. サンプルコードを Git リポジトリに準備
手順1. 以下のサンプルコードを作成し、/mnt/c/.../sample/ に格納します。
# old_app.py # Python 3.9 style from typing import Dict, List, Optional, Union def process_data(data: Dict[str, List[int]]) -> Optional[Dict[str, int]]: result = dict() for key, values in data.items(): total = sum(values) result[key] = total return result if result else None def format_output(items: List[Union[str, int]]) -> str: output = "" for item in items: output += f"{item}\n" return output
手順2. WSL 上で Git リポジトリとして初期化します。
cd /mnt/c/.../sample git init git add . git commit -m "Initial commit - Python 3.9 code"
4. Transform のタスクを実行(Python 3.9 → 3.13 に変換)
Kiro のチャットで「Python 3.9 を 3.13 にアップグレードしたい」と伝えると、以下のタスクが自動で実行されました:
- ワークスペース作成 — Transform 上に作業領域を作成(
create_workspace) - エージェント選択 — 利用可能なエージェント一覧から
runtime-upgradeを自動選択(list_resources) - ジョブ作成 — Python 3.9 → 3.13 アップグレードのジョブを作成(
create_job) - 変換定義の確認 — Transform エージェントが「AWS/python-version-upgrade」を提案し、承認を求めてきた(
send_message) - AWS Transform CLI コマンドの提示 — 承認後、Transform エージェントが WSL で実行する AWS Transform CLI コマンドを提示
提示されたコマンドを WSL 上で実行します。
atx custom def exec \
--code-repository-path . \ # 変換対象のリポジトリパス(カレントディレクトリ)
--non-interactive \ # 対話なしで自動実行
--trust-all-tools \ # エージェントのツール実行を自動承認
--campaign xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ # Kiro で作成したジョブの ID
--repo-name python-upgrade-sample \ # リポジトリの識別名
--add-repo \ # このリポジトリをキャンペーンに追加
--configuration "additionalPlanContext=The target Python version to upgrade to is Python 3.13" # ターゲットバージョンの指定
5. 結果を確認
変換前(Python 3.9):
# Python 3.9 style from typing import Dict, List, Optional, Union def process_data(data: Dict[str, List[int]]) -> Optional[Dict[str, int]]: result = dict() for key, values in data.items(): total = sum(values) result[key] = total return result if result else None def format_output(items: List[Union[str, int]]) -> str: output = "" for item in items: output += f"{item}\n" return output
変換後(Python 3.13):
# Python 3.13 style def process_data(data: dict[str, list[int]]) -> dict[str, int] | None: result = dict() for key, values in data.items(): total = sum(values) result[key] = total return result if result else None def format_output(items: list[str | int]) -> str: output = "" for item in items: output += f"{item}\n" return output
変換のポイント:
今回の変換によって、Python 3.10 以降で推奨される型ヒント構文に修正されたことがわかります。 参考までに修正点を以下の表にまとめました。
| 変換前 | 変換後 | 説明 |
|---|---|---|
from typing import Dict, List, Optional, Union |
(削除) | Python 3.9 以前は型ヒントに typing モジュールの import が必須だったが、3.10 以降はビルトイン型とパイプ構文で代替できるため不要になった |
Dict[str, int] |
dict[str, int] |
Python 3.9+ から dict, list などのビルトイン型が直接ジェネリクスに対応し、typing.Dict を使う必要がなくなった |
List[int] |
list[int] |
同上。typing.List の代わりにビルトインの list をそのまま型ヒントに使える |
Optional[X] |
X | None |
Python 3.10 で導入されたパイプ構文により、「X または None」を X | None と簡潔に書けるようになった |
Union[str, int] |
str | int |
同じくパイプ構文で、複数の型の「いずれか」を | で繋げて表現できるようになった |
本検証では、Kiro とのチャットのやり取りによって、Python 3.9 の古い記法から 3.13 の新しい記法に変換することができました。
料金
最後に利用料金について記載します。AWS Transform カスタムの料金は エージェント分単位 で課金されます。エージェントがコードの分析・変換を行っている時間のみカウントされ、ローカルでのビルドやテスト実行の待機時間には課金されません。
| 項目 | 内容 |
|---|---|
| 請求単位 | エージェント分 |
| 最小単位 | 1 分 |
| 料金 | $0.035 / エージェント分 |
| 課金されないもの | ユーザーのアイドル時間、CLI 側の操作(ビルド、テスト等) |
料金例
| コードアップデートのポイント | コード規模 | エージェント分 | 費用 |
|---|---|---|---|
| SDK アップグレード(Node.js) | 約 3,000 行 | 約 20 分 | $0.70 |
| Java バージョンアップグレード | 約 17,000 行 | 約 72 分 | $2.52 |
| Python ランタイムアップグレード | 約 4,000 行 | 約 37 分 | $1.30 |
おわりに
冒頭で記載した通り、AWS Transform は、レガシーなシステムやコードの刷新のハードルを大きく下げることができると考えています。開発環境の AI エージェントとの連携が可能になったことにより、AWS Transform の活用が活発になり、世の中のシステムの刷新が促進されていくのではないかと考えています。まだ試されていない方は、是非一度活用してみていただければと思います。
参考リンク
- AWS Transform が開発者ツールで利用可能に
- AWS Transform MCP Server(GitHub)
- AWS Transform Agent Plugin(GitHub)
- AWS Transform 公式ドキュメント
- AWS Transform CLI Getting Started
- AWS Transform 料金
*1:https://aws.amazon.com/jp/about-aws/whats-new/2026/04/aws-transform-developer-tools/
*2:https://github.com/awslabs/mcp/tree/main/src/aws-transform-mcp-server
小川 貴史(記事一覧)
クロスインダストリー第2部(ES課研修中)