AWSは、開発者が自身のマシン上でAWS APIエンドポイントを実行およびテストできるローカルエミュレータをリリースしました。このプロジェクトの最大の特徴は、すべてのコードが自律型AIエージェントによって記述された点にあります。このツールにより、アクティブなAWSアカウントを必要とせず、サービス料金を発生させることもなく、開発環境や継続的インテグレーション(CI)パイプラインでのソフトウェアテストが可能になります。実際のクラウドリソースに対するローカルな代替手段を提供することで、このエミュレータは、実際のAWS環境との高い忠実度を維持しながら、開発サイクルを効率化することを目指しています。

AI駆動の開発パイプライン

このエミュレータは、3つの自律型AIエージェントチームを含む特殊なワークフローを用いて開発されました。最初のチームは、Smithy APIモデルと実際のAWSデータを数万件の「忠実度テスト(fidelity tests)」に変換することでテストスイートを管理します。これらのテストは、Amazon SQSキューの作成や削除といった実世界のシナリオを表現しており、共有リポジトリに保存される前に実際のAWSクラウドに対して検証されます。

Smithy APIモデルと実際のAWSデータをテスト作成者エージェントチームに入力するフローチャート。
AIエージェントがAPIモデルと実世界のデータを忠実度テストに変換する詳細なワークフロー。www.aboutamazon.com

この画像は、記事で説明されている開発パイプラインの最初の段階をより詳細に示しています。

2番目のエージェントチームは、これらの忠実度テストをエミュレータのコードに対して実行し、乖離を特定します。テストが失敗した場合、エージェントは失敗の原因を推論し、根本原因ごとに問題をグループ化します。その後、3番目のエージェントチームが個々の問題を引き継み、コードをチェックアウトして、失敗が解決されるまで編集を行います。これらの変更は、ビルドチェック、コーディング標準のレビュー、セキュリティ監査、および忠実度の検証を含む多段階のゲートを通過した後に、メインラインのコードにマージされます。

AWS Emulatorを開発するために、3つのAIエージェントチームが共有のCodeCommitリポジトリとやり取りする図。
テスト作成者、問題発見者、修正者の3チームによる自律型AIエージェントのワークフローを示す図。www.aboutamazon.com

この図は、異なるAIエージェントチームがテストの作成、問題の特定、およびコードの修正を担当する特殊なワークフローを視覚化しています。

「AWS Emulatorのすべてのコードは、数千の自律型AIエージェントによって書かれました。現在、新しいAWS用ローカルエミュレータをダウンロード可能です。」

— How we built the agents that built AWS Emulator

動作モードと技術要件

開発者は主に2つの方法でエミュレータとやり取りできます。「Serverモード」では、エミュレータはAWS APIエンドポイントを提供するローカルプログラムとして機能し、ユーザーは環境変数を通じてAWS CLIまたはSDKをこのローカルアドレスに向けます。「Embeddedモード」は特にRustテスト向けに設計されており、エミュレータはテストバイナリに直接コンパイルされます。これにより、外部エンドポイントや証明書を必要とせずに、テストがエミュレータのHTTPクライアントをSDKクライアントに直接接続できるようになります。

エミュレータは無料で利用できますが、ソースからビルドするにはかなりのローカルリソースが必要です。すべてのサービスクレートの完全なデバッグビルドには、少なくとも100 GBの空きディスク容量とマルチコアマシンが必要になる場合があります。ほとんどのユーザーのために、AWSはこれらの高いビルドコストを回避できるよう、Linux用(RPM/Debian)のビルド済みパッケージや、WindowsおよびmacOS用のDockerコンテナを提供しています。

忠実度と制限事項

AWSは、エミュレータが実際のクラウドとどの程度一致しているかを示すために、各サービスに対して忠実度スコアを提供しています。エミュレータは438のAWS APIモデルをカバーしていますが、本番環境のワークロードやセキュリティプロトコルのテストには明示的に適していません。このプロジェクトでは公開のイシュートラッカーを維持しており、サービス動作の個々のギャップを「動作しないもの」と「現在は動作するもの」に分類して文書化しています。

エミュレータには、AWSがツールの使用状況を把握するためのテレメトリもデフォルトで含まれています。このテレメトリは厳格なデータ最小化に基づいて設計されており、リクエストの内容、コード、資格情報、または個人データが収集されないことを保証します。ローカルでのテストをプライベートに保ちたいユーザーは、コマンドラインフラグ、環境変数、または設定ファイルを通じてテレメトリをオプトアウトできます。

Hacker Newsの読者の反応

  • 代替案: あるコメント投稿者は、ツールの長期的なメンテナンスに懐疑的な見方を示し、FlociやTestcontainersなどの既存の代替手段を使用することを提案しました。 コメント ↗
  • 懐疑的: あるユーザーはプロジェクトの動機に疑問を投げかけ、一般的な開発者向けというよりも、主に大規模言語モデルをトレーニングするために作成された可能性があると示唆しました。 コメント ↗
  • 懐疑的: 別のコメント投稿者は、このプロジェクトはAWS独自のエンジニアリングというよりも本質的にAIモデルの産物であり、そのような能力は現在他の誰にでも簡単に再現可能であると主張しました。 コメント ↗

Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗