TECH PLAY

AWS

AWS の技術ブログ

3122

本記事は 2025 年 10 月 27 日に AWS Public Sector Blog で公開された Building large language models for the public sector on AWS を翻訳したものです。翻訳はソリューションアーキテクトの川戸渉が担当しました。 大規模言語モデル (Large Language Model, LLM) は、公共機関によるサービス提供、市民とのエンゲージメント、データに基づく意思決定の方法を根本から変えています。高度な多言語対応と複雑なタスクの自動化により、LLM は応答時間を短縮し、ドメイン固有の情報を大規模に処理することが可能になります。 既製のモデルは確かに強力ですが、公共機関特有の規制要件、文化的背景、業務上の条件を十分に満たすことができないケースが少なくありません。多くの商用 LLM は、インターネット全体から収集された幅広いデータセットで学習しているため、特定の国や分野における言葉のニュアンス、文化的文脈、法規制の枠組みを適切に反映していないことがあります。また、これらのモデルは学習データに含まれるバイアスを引き継いだり、専門用語の知識が不足していたり、データ主権やプライバシー保護の要件を満たせない環境で動作したりする課題があります。正確さ、コンプライアンス、信頼性が極めて重要な公共機関にとって、これらの制約は市販モデルをミッションクリティカルな用途で使用する上での限界となっています。カスタム LLM 開発はこれらの課題に対処します。ゼロからのモデル学習、既存モデルの継続事前学習、事前学習済みモデルのファインチューニングによって、言語やドメイン固有の知識を取り込み、地域の法規制に準拠し、文脈に応じた微妙なニュアンスにも対応できるようになります。 公共部門のミッションに特に関連する 2 種類のカスタム LLM があります : ナショナル LLM は、特定の国や地域の言葉の使い方、文化的背景、法規制の枠組みを反映するように構築されたモデルです。地域言語の保全、文化に適した回答の生成、国のデータ主権要件への準拠を可能にします。顕著な例として、 ギリシャの取り組み があります。これは商用モデルにおけるギリシャ語の過小表現に対処し、現代および古典ギリシャ語の言語遺産を保全するオープンウェイト LLM (モデルの重みパラメータが公開された LLM) の開発を進めている事例です。 ドメイン特化型 LLM は、医療、教育、金融、法務などの高度に専門化された分野向けに最適化されたモデルです。専門性の高い業務においてより高い精度と、分野固有の専門用語もしっかりと理解できます。これらのモデルは、品質と適切性を保ちながら、ドメインに特化することで専門的なコア業務をどれだけ向上させられるかを示しています。 このブログ記事では、公共部門での活用を想定したカスタム LLM の開発について、科学的アプローチと定量的な成果評価を軸に、そのライフサイクル全体を解説します。開発プロセスは 6 つの重要なステージで構成されています。各ステージは、セキュリティ、コンプライアンス、パフォーマンスの厳格な基準を満たしながら、モデルが本来の目的を確実に果たせるように設計されています。 コスト分析フレームワーク カスタム LLM 開発に着手する前に、2 つのレベルでコストを評価する必要があります。マネージド API のトークン単価と、セルフホスティングの総保有コスト (Total Cost of Ownership, TCO) です。 マネージド API は迅速な導入に適していますが、トークン課金とデータ転送コストにより、規模が大きくなると高額になる可能性があります。一方、セルフホスティングでは、初期投資(GPU 調達や予約容量、エンジニアリングリソース)に費用がかかりますが、時間の経過とともにトークンあたりの運用コストは下がります。 モデルサイズはコストに大きく影響します。一般的に、パラメータ数が多いほど、一定レベルまで品質が向上しますが、応答時間、メモリ使用量、学習・推論コストも増加します。継続事前学習や目的特化型のファインチューニングによってモデルサイズを調整することで、コストを抑えながら同じレベルの性能を実現できます。 適切なデプロイ方法を決定するには、まず 1 日あたりのトラフィック (トークン / 日)、季節変動、目標応答速度、システムの可用性要件を把握する必要があります。その上で、API 利用料の累計がセルフホスティングの TCO (機器の減価償却費、電気代、運用費を含む) を超えるポイントを計算することで、データに基づいた選択ができるようになります。多くの公共機関では、自組織のクラウド環境で運用する中規模の調整済みオープンソースモデルが最も適した選択肢となります。これにより、データレジデンシー (データが保存される地理的な場所) 要件を満たしながら、より少ない GPU で目標の応答速度を実現し、初期投資の後は長期的な運用コストを抑えることができます。 カスタム LLM 開発のプロセス カスタム LLM の開発ステージは以下の通りです: ユースケースと要件の定義 評価フレームワークの確立 モデル選択と学習アプローチ データ収集と準備 インフラストラクチャ構築と学習アプローチ 本番環境へのデプロイと性能テスト 各ステージは、公共部門が求めるセキュリティ、コンプライアンス、性能基準を満たしながら、モデルが意図された目的を効果的に果たすための基盤となります。 ステージ 1: ユースケースと要件の定義 カスタム LLM 開発は、厳密な要件定義から始まります。これは、組織のハイレベルな目標を具体的で測定可能な仕様に落とし込む作業です。このステージでは、カスタムアプローチが必要なのか、それともプロンプトエンジニアリングのみで目標を達成できるのかを決定します。 カスタムアプローチは通常、プロンプトエンジニアリングを複数回試行しても一貫して許容できる結果が得られない場合、既存のモデルでは特定の言語要件を満たせない場合、または標準的なプロンプト技術では確実に活用できない深い専門知識を必要なユースケースがある場合に必要となります。 要件定義プロセスは、カスタム LLM が明確な価値を提供する具体的なユースケースを特定することから始まります。政府機関では実用的な活用方法を検討する必要があります。例えば、市民参加型プラットフォーム、政策分析システム、専門的な研究ツール、行政業務の自動化などです。最近の事例からも、このステージの重要性がよくわかります。ギリシャのナショナル LLM プロジェクトでは、現代ギリシャ語と古代ギリシャ語の両方を処理しながら、英語でも高い性能を維持するという明確な要件を定義し、公共部門のさまざまな分野での活用を可能にしました。 組織は、明確な成功指標を設定する必要があります。具体的には、サービス提供時間の定量的な改善、専門タスクの精度、市民満足度スコアなどが挙げられます。技術要件については、目標応答時間、想定されるクエリ量、既存の行政システムとの統合ニーズに対応する必要があります。 また、包括的なデータ処理プロトコル、アクセス制御、監査要件の定義も不可欠です。ナショナル LLM の場合、データ主権に関する要件やローカルホスティングの要件が含まれることが一般的です。ドメイン特化型モデルでは、医療、金融、その他の機密性の高い分野における専門的な規制への準拠が求められる場合があります。 これらの要件を文書化することで、ステークホルダーに対してビジネス価値を効果的に伝えられるだけでなく、技術チームには明確な開発ガイドラインを提供できます。この文書化は、複数の政府部門や機関間での調整を行う際に特に重要であり、技術的能力と組織ニーズの整合性を確保する上で欠かせません。 ステージ 2: 評価フレームワークの確立 モデル選択前にしっかりとした評価フレームワークを確立することで、開発プロセス全体を通して科学的な厳密さと測定可能な成果を確保できます。このフレームワークは、その後のすべての意識決定の基盤となり、主観的な選択によってプロジェクトが失敗するリスクを防ぎます。 ベースライン性能と適応率の指標 モデル選定と学習の決定を左右する 2 つの重要な指標があります : ベースライン性能 (b) : 候補モデルをカスタマイズする前の、タスクおよびドメイン固有の評価スコアです。固定プロンプトと別途用意した開発 / テスト用データセットを使用します。これにより、異なるベースモデルを客観的に比較する基準が得られます。 適応率 (ra) : カスタマイズ中にモデルが評価指標をどれだけ速く効率的に改善できるかを示す指標で、学習の進捗 (ステップ数、トークン数、時間、コスト) で正規化されます。この指標により、限られた予算内で継続学習に最も適したモデルを予測できます。 評価ツールと実装 Language Model Evaluation Harness (LM Harness) は、LLM 評価の業界標準ツールです。60 以上の学術的ベンチマークと数百のサブタスクおよびバリアントでモデルをテストできる統一フレームワークを提供してます。LM Harness は、Hugging Face transformers、高速推論用の vLLM 、商用 API など、さまざまなモデル環境に対応しており、異なる実装でも同じ条件で比較できます。 AWS を中心としたワークフローでは、LM Harness を AWS が提供する評価ツールで補完しながら、業界標準との互換性も保てます。LM Harness を基盤とする Hugging Face Open LLM Leaderboard では、さまざまなタスクと言語での標準化された性能比較が提供されており、ナショナル LLM 評価の優れた参考資料として活用できます。 Q&A データセット生成と検証プロセス 高品質な評価データセットを作るには、自動生成と人間による検証を組み合わせた体系的なアプローチが必要です : スコープとコーパスの定義 : 優先度の高いユースケース、ドメイン、言語をリストアップします。文書、政策、FAQ、ナレッジベースから代表的で高品質なコーパスを収集し、適切なクリーニング、重複除去、個人識別情報 (personally identifiable information, PII) の除去を確実に行います。 ベースライン生成器の確立 : 候補モデル間で簡単な評価を実行し、対象言語とドメインに最適な生成器を選択し、自己評価バイアスを回避します。 プロンプトテンプレートの作成 : スタイル、難易度、回答形式、根拠要件を決めます。事実に基づく Q&A、多段階推論、政策準拠、多言語シナリオのバリエーションを作成します。 パイロット生成 (100-300 項目) : ベースラインモデルを使用してコーパスから Q&A ペアを生成し、すべてのドメイン、難易度、言語を比例的にカバーします。各項目に来歴メタデータをタグ付けします。 人間による検証ループ : 正確性、根拠、明確性、安全性について項目をサンプリングしてラベル付けします。問題を修正し、エラーパターンを文書化します。受入基準を計算します (目標は 90% 以上の正確性、根拠) 。 品質と安全フィルター : NVIDIA NeMo Curator などのツールを使用して、重複排除、定型文の削除、パープレキシティフィルタリング、PII チェックの自動パスを適用します。 生成のスケール化 : 固定されたテンプレートとモデルで完全な Q&A データセットを生成し、学習 / 開発 / テストの分割全体で厳密なメタデータとバージョン管理を維持します。 検証の強化 : 層別サンプルに対する人間による監査を実施し、敵対的ケースと安全性シナリオを追加します。 性能測定フレームワーク 評価は複数の側面から検証する必要があります: 言語習熟度と文化的正確性 政府のユースケースにおけるタスク固有の性能 規制および倫理ガイドラインへの準拠 応答の適切性と安全性 計算効率とリソース使用率 モデルが性能目標を満たし、コンプライアンス要件を満足するまで、最適化フェーズに結果をフィードバックする反復的な評価プロセスを実装する必要があります。 ステージ 3: モデル選択と学習アプローチ 評価フレームワークを確立した後、モデルアーキテクチャと学習戦略について重要な決定を行う必要があります。これらの決定は、問題のスコープ、現在のモデル性能、セキュリティ要件、必要なカスタマイズレベルによって左右されます。 学習アプローチの決定基準 主に3つの選択肢があり、それぞれ異なるメリットとリソース要件があります。 ファインチューニング は最もリソース効率の良いアプローチで、事前学習済みモデルをドメイン固有のデータで追加学習させます。この手法は、対象ドメインが事前学習データと類似している場合や、リソースが限られている場合に適しています。ファインチューニングでは、特定の指示に対してモデルがどう応答すべきかの例を使うインストラクションファインチューニングや、人間のフィードバックを活用した強化学習 (Reinforcement Learning from Human Feedback, RLHF) などの技術により、モデルを人間の好みにより合わせることができます。 継続事前学習 (Continued pretraining, CPT) は、一般的な能力を保ちながら、既存のベースモデルを追加データで学習させる方法です。このアプローチは、基本的な理解力と推論能力を維持しながら、モデルを新しい言語やドメインに効果的に適応させます。ゼロから学習するよりも少ないデータで済みますが、ファインチューニングよりは多くのデータが必要で、高品質なデータによる 2 段階の学習により、未知の質問に対してもより良い対応力を提供します。具体的には、CPT はまずベース知識を保ちながらモデルを新しいドメインや言語に適応させ、次に特定能力の向上に集中することで、より安定して汎用性の高い性能を実現します。 ゼロからの学習 は、モデルアーキテクチャと機能を完全にコントロールできますが、既存のベースモデルをカスタマイズするよりもはるかに多くの計算リソースと高品質データが必要です。このアプローチは、既存モデルが対象言語を適切に扱えない場合や、特定のコンプライアンス要件を満たせない場合に必要となります。 予想されるアクセス量、応答速度の要件、ハードウェアコストを考慮して、API 利用料がセルフホスティングの TCO を上回るポイントを計算する必要があります。TCO 分析では、初期費用と運用費の両方を慎重に評価する必要があります。運用費は主にモデルのホスティング要件によって決まり、パラメータ数が多く GPU 計算需要の大きなモデルは、一定のユーザーアクセスと帯域幅を前提として、時間の経過とともに比例的に高い運用コストにつながります。意思決定では、サービス提供の制約内で主要性能指標を達成する最小のモデルを優先すべきです。これは、初期学習でのコスト削減とホスティング費用およびリソース要件の削減により、長期的な運用持続可能性に直接影響するためです。 ベースモデルがプロンプトにより目標性能の約 80 %を達成し、ラベル付きタスクデータが利用可能な場合はファインチューニングを選択してください。ドメインや言語のカバー範囲が不十分だが、大規模なラベルなしドメイン内コーパス (10-1000B トークン) が存在する場合は継続事前学習 (CPT) を選択してください。適切なベースモデルが存在せず、組織が兆単位のトークン学習インフラをサポートできる場合のみ、ゼロからの学習を検討してください。 主要な要因には、コストと時間の制約 (API 対 GPU 時間) 、サービング要件 (応答速度 / メモリ) 、データレジデンシーの要件、リスク許容度 (破滅的忘却 : 新しい学習によって以前の学習内容が上書きされてしまう現象) が含まれます。CPT またはファインチューニング後に主要性能指標を満たす最小のベースモデルを選ぶべきで、その決定はベースライン性能 (b) と適応率 (ra) 曲線によりを検証する必要があります。 モデルアーキテクチャの検討事項 ファインチューニングや CPT を検討している組織には、出発点として使えるオープンソースモデルがいくつかあります。モデルの選択は、希望するモデルサイズと必要な計算能力、対応したい言語、モデルの初期性能などの技術的な要素によって決まります。 さらに、モデルのアーキテクチャ (例 : Transformer ベースの設計や Expert Parallelism)、対応する情報の種類 (テキストのみか、マルチモーダルか)、パラメータ数、そしてこれらの選択が学習に必要なリソースと本番環境での推論性能にどう影響するかを考慮する必要があります。 ステージ 4: データ収集と準備 データ収集と準備は、カスタム LLM 開発において最も重要なステージです。特に、データの品質、関連性、セキュリティが重要な公共部門での利用では、なおさら重要になります。このアプローチは、選択したモデルアーキテクチャと学習戦略によって大きく変わります。 NeMo Curator による包括的データパイプライン NVIDIA NeMo Curator は、大規模な事前学習とファインチューニング用コーパス向けに設計された、データ整理の統合ツールキットです。このモジュール式パイプラインシステムは、Spark、Ray、Dask を使った分散処理に対応し、データのダウンロードから抽出、クリーニング、フィルタリング、重複除去、分類まですべてを処理します。 NeMo Curatorの主要機能は以下の通りです : データ取り込み : Web クローリング、Common Crawl 処理、データレイク連携、文書解析 (レイアウトヒューリスティクスを使用した PDF からテキストへの変換) データ正規化 : Unicode / NFKC 処理、空白と句読点の標準化、定型文とテンプレートの削除 安全性と PII 処理 : 設定可能な編集 / 削除ポリシーと国 / 分野別のコンプライアンス設定を持つ正規表現と機械学習ベースの検出器 高度な重複除去 : 文書・段落レベルでの完全一致ハッシュマッチング (MinHash/SimHash) とファジー近似重複検出 (LSH) 品質フィルタリング : 言語識別、長さ / パープレキシティ境界値、n-gram / ストップワード比率、有害性 / 安全性スコアリング 分類とタグ付け : ドメイン / トピックのラベル付け、文書構造分析、管轄 / 言語タグ付け 重要なデータ処理要素 重複除去 は複数のレベルで動作します。正規化されたテキストでの完全一致ハッシュ (SHA256) により同一文書とセグメントを削除し、近似重複検出では文書・段落レベルで LSH クラスタリングを使った MinHash/SimHash を使用します。このプロセスは、正規のコピーを保持し、保持根拠とともにハッシュクラスターを記録することで来歴を維持します。 PII 除去 は複数の検出方法を使います。メール、電話番号、ID の正規表現パターン、名前と場所の辞書、人物 / 組織 / 場所エンティティの機械学習による認識、支払いと健康情報に対する特殊なパターンです。データの種類と管轄区域ごとにコンテンツを編集または削除のポリシーを設定でき、コンプライアンス検証のための包括的な監査ログを取得できます。 合成データ生成 は、データが少ないドメインに対して体系的なプロセスで対処します。シード選択、スタイルと根拠制約を持つ LLM プロンプト、出力スキーマの強制 (JSON)、正規表現 / スキーマ / 有害性 / 根拠チェックによる検証、人間によるレビューサンプリング、適切な制御 (temperature / top-p 制限、長さの制限、ソース引用を含む) によるスケーリングを行います。 品質フィルタリングとパープレキシティスコアリング は複数の指標を組み合わせます。言語識別、長さ制御、ヒューリスティック測定 (ストップワード比率、記号 / 絵文字の割合)、有害性 / 安全性スコア、ドメイン適合性分類、参照言語モデルを使ったパープレキシティスコアリングにより、希少だが有効なコンテンツにバイアスをかけることなく、情報量の少ない、または劣化したテキストを特定します。 データ処理を以下の順序で実行する必要があります : データ正規化 PII 除去 重複除去 品質フィルター パープレキシティによるトリミング 保持率などのメトリクスを追跡しながらの分類 / 分割 重複率 PII ヒット率 パープレキシティの分布 言語 / ドメインごとのカバレッジ データセット構成戦略 ナショナル LLM の場合 、対象言語の素材、関連する言語や方言、一般知識を混合した多様なコンテンツを含める必要があります。対象言語と共に英語データを含めることには、2 つの目的があります。 一般的な能力の破滅的忘却を防ぐことと、実用的なバイリンガル機能を維持することです。並列データ (両言語でのペアテキスト) は、スムーズな言語切り替えのために言語間の関係を理解するのに役立ちます。重要なのはバランスの取れた構成です。英語のデータが多すぎると対象言語の能力が低下する可能性があり、英語のコンテンツが不足すると一般知識と推論能力が損なわれる可能性があります。特定の用途に必要な場合、コードや数学テキストなどの専門コンテンツを含めることもできます。 ドメイン特化型モデルの場合 、ドメイン固有のコンテンツと一般知識のバランスを保つことが重要です。ドメインデータに重点を置きすぎると、モデルが幅広い推論と言語スキルを失う可能性があり、一般データが多すぎると専門知識が希薄化してしまいます。並列データセットは、同一言語内で技術的テキストとわかりやすいテキストをペアリングすることで解決策を提供します。例えば、医療ガイドラインと患者向けの分かりやすい説明をマッチングさせて、専門用語と理解しやすい説明を結び付けることができます。 技術実装の考慮事項 トークン化手法の選択は、特に異なる文字体系やアルファベットを使用する言語において、モデル性能に重要な影響を与えます。ラテン文字の言語向けに開発された標準トークン化手法は、単語の区切りがない言語や基本トークナイザーの語彙に含まれていない文字を含む言語には効果的でない可能性があります。多言語モデルの場合、複数の言語を適切に表現する共有語彙を作成することは特に困難で、非効率なテキスト表現と性能低下を招く可能性があります。 ステージ 5: インフラストラクチャ構築と学習アプローチ インフラストラクチャの選択は、学習効率、コスト、運用の複雑さに大きく影響します。AWS では、組織の要件と技術レベルに合わせて、さまざまな選択肢を用意しています。 コンピューティング環境の選択肢 機械学習用のキャパシティブロック を備えた Amazon Elastic Compute Cloud (Amazon EC2) は、柔軟性が高く、細かい制御ができます。これは、特定のカスタマイズが必要な組織に向いていますが、コンピューティング環境の管理における深い専門知識が必要です。Amazon EC2 は、強力な GPU を搭載したさまざまな機械学習向けのインスタンスタイプが用意されており、特定のプロジェクト要件に合わせたコスト効率のよいリソースを選べます。 トレーニングプラン を備えた Amazon SageMaker HyperPod は、大規模深層学習ワークロード向けに最適化されたマネージドサービスです。自動ヘルスモニタリングやインスタンス交換などの機能により、分散学習インフラストラクチャの構築と管理を簡単にします。SageMaker HyperPod のクラスターエージェントは、障害が発生したノードを自動検出して、そのノードを交換し、ユーザーの介入なしに最後の正常なチェックポイントから学習を再開します。これは、信頼性が極めて重要な長時間実行 LLM 学習ジョブにとって特に有効です。 ネットワークとストレージの最適化 Elastic Fabric Adapter (EFA) は、マルチノード GPU 学習に最適な、低遅延、高速通信により、分散 LLM 学習の効率を大幅に向上させる高性能コンピューティングネットワークです。EFA は、カスタムビルドされたオペレーティングシステムをバイパスするハードウェアインターフェースをより、ノード間で頻繁に通信するアプリケーションを AWS 上でスケーラブルに実行できます。これにより、アプリケーションはオペレーティングシステムカーネルを経由せずネットワークハードウェアと直接通信できるため、遅延と CPU 負荷を大幅に削減します。このハードウェアへの直接アクセスは、勾配同期時の頻繁なノード間通信がボトルネックとなりがちな分散機械学習ワークロードにとって特に効果を発揮します。 データストレージとアクセス方法も、学習効率に大きく影響します。大規模学習では、AWS は長期保存用の Amazon Simple Storage Service (Amazon S3) と高性能ファイルシステムの Amazon FSx for Lustre を組み合わせるのが最適です。学習ノード間での効率的なデータアクセスを可能にします。Amazon FSx for Lustre は 分散ファイルストレージ (ストライピング) を使い、ファイルメタデータと実データを物理的に分離することで高速な読み書きを実現します。Amazon S3 と Amazon FSx for Lustre 間の接続は、 データリポジトリの関連付け で管理できます。 オーケストレーションとジョブ管理 選択したインフラストラクチャとチームの技術力に応じて、さまざまなオーケストレーションツールから最適なものを選べます。 SLURM 統合 は、オンプレミスからの移行とクラウドネイティブなデプロイの両方に対応しています。 AWS Parallel Computing Service (AWS PCS) は、SLURM をデフォルトのジョブスケジューラーとして使用し、HPC チームに馴染みのあるワークフロー管理を提供します。SLURM 設定には、GPU リソース管理 (gres.conf)、NCCL/IB 最適化、異なるタイプのジョブのサポート、共有ファイルシステムへのチェックポイントが必要です。 Amazon EKS 統合 は、Kubernetes の専門知識を持つ組織に柔軟性を提供します。 Amazon Elastic Kubernetes Service (EKS) のセットアップには、GPU 対応ノードグループ (p4d/p5、L4/L40S)、NVIDIA GPU Operator のインストール、ノードセレクターとテイントによる適切なスケジューリング、スケールアウト用の Karpenter、学習・推論ワークロード用のポッド優先度 / プリエンプションが必要です。 移行に関する考慮事項 として、SLURM と EKS の間で移行する際は、ネットワーク性能の検証 (同等のインターコネクト性能の実現) 、スケジューラー設定の適切な対応付け (Slurm パーティション / QoS と K8s 名前空間 / ResourceQuotas のマッピング) 、チェックポイントの互換性検証、セキュリティ制御のマッピング (サービスアカウント用の IAM ロール) 、コストモデリングと段階的なロールアウト計画の策定が必要です。 学習プロセスの実装 学習プロセスは通常、PyTorch や TensorFlow などのフレームワークを使用し、複数の GPU またはノード間で分散処理を行います。このプロセスは、データの分散、結果の収集、学習結果に基づく反復サイクルのパターンに従います。 学習は、モデルが定義された性能目標を満たすまで、学習、テスト、改良を繰り返すプロセスです。これには、学習率、バッチサイズ、モデルアーキテクチャなどのパラメータを最適な性能のために調整するハイパーパラメータチューニングなどの手法が含まれます。 学習ジョブの規模、組織内の技術力、特定の性能要件、運用の複雑さと柔軟性のバランスを考慮してインフラストラクチャを選ぶ必要があります。 ステージ 6: 本番環境へのデプロイと性能テスト LLM が性能とコンプライアンスの基準を満たしたら、本番環境への包括的なデプロイに向けて、体系的な性能テスト、インフラストラクチャの最適化、監視を行います。 本番環境の性能テストフレームワーク さまざまな条件下でモデルの性能を検証するために、体系的な性能テストを実施する必要があります。これには、 GenAI-Perf や vLLM などの業界標準ツールを使用したベンチマークフレームワークが含まれ、異なる構成間で一貫した性能測定と比較が可能になります。テストでは、再現性を確保するためにカナリアデータセットを使用し、ステップロードテストやスパイクテストを通じて定常状態とバースト時の両方の動作を把握する必要があります。k6、Locust、またはカスタム Python ハーネスなどのツールを使ってテストを自動化できます。GPU サービスの場合、複数のレプリカを実行することで、オートスケーリングのしきい値を効果的にテストできます。検証では、同時実行レベルごとに 10 〜 30 分間の安定性を確認し、本番環境への準備のために 1 〜 2 時間の耐久テストまで拡張する必要があります。 モデルのデプロイオプションとデータ主権 ナショナル LLM のモデルホスティングを選択する際、3 つの主要なデプロイ方法を区別する必要があります。それぞれのアプローチはデータ主権に対して異なる意味を持ちます : サードパーティクラウド上のクローズドソースモデル : データフローとログは、自組織のアカウント外で管理されるため、厳格なデータレジデンシー要件がある管轄区域ではコンプライアンス上の課題が生じる可能性があります。 マネージドサービス ( Amazon Bedrock など) 経由のオープンソースモデル : マネージドサービス環境で動作しながら、アクセスとガバナンスを簡素化し、制御のしやすさと運用の手軽さのバランスを実現します。 自組織の AWS アカウント内で完全にホストするオープンソースモデル : データの流れ、テレメトリ、監査証跡を最も強力に管理でき、厳格な主権要件を満たすために必要となることが多い方法です。 GDPR 準拠や国内処理義務などのデータレジデンシー要件と主権要件が、この選択を左右します。一部の管轄区域では、学習と推論の両方を国内で行うことを義務付けており、国境を越えたエンドポイントは使用できません。保存場所だけでなく、プロンプト、出力、モデルログの処理される場所もコンプライアンスの対象となります。一時的な推論トラフィックであっても、必要な境界を越えると規制違反になる可能性があります。 多くの公共部門では、自組織のアカウント内でオープンソースモデルをセルフホストすることが、データレジデンシー、プライバシー、監査義務を満たす最も確実な方法です。一方、機密性の低いワークロードや初期評価段階では、マネージド API も有効な選択肢となります。 Amazon SageMaker AI は、モデルデプロイのためのマネージド環境を提供し、基盤となるインフラストラクチャの複雑さの多くを処理しながら、スケーラブルな推論と他の AWS サービスとのシームレスな連携を実現します。より詳細な制御や特定の構成が必要な場合には、Amazon EC2 で完全なカスタマイズ可能な直接デプロイが可能です。Kubernetes の専門知識がある組織なら、Amazon EKS を選んでコンテナ化されたデプロイを行うことで、環境間の柔軟性と移植性が得られます。 デプロイを成功させるには、コスト管理、性能監視、セキュリティコンプライアンスへの細心の注意が必要です。モデルが既存システムとシームレスに連携し、公共部門のセキュリティとコンプライアンス要件を満たすよう、適切な最適化戦略を実装する必要があります。 セキュリティとコンプライアンスのフレームワーク 公共部門の LLM デプロイには、データ主権、プライバシー、監査要件に対応する包括的なセキュリティとコンプライアンス対策が必要です。 承認されたリージョンと VPC (Virtual Private Cloud) に学習と推論を限定し、カスタマーマネージドキー、プライベートサブネット、VPC エンドポイントを使用してデータレジデンシーを確保します。PII 検出と除去は、監査された拒否バケットと不変の変換ログを備えたキュレーションパイプラインに実装する必要があります。 ドキュメントには、一時的なログも含め、プロンプト、出力、テレメトリがどこで処理されるかを明記します。モデルホスティングについては、主権義務がデータの流れとログの制御を求める場合、アカウント内のエンドポイント (Amazon EC2 / Amazon EKS / Amazon SageMaker) を優先すべきです。その際、アクセス制御 (IAM / IRSA) 、転送中と保管時の暗号化、監査証跡 (CloudTrail) 、定期的なコンプライアンスレビューを維持する必要があります。 まとめ 公共部門向けのカスタム LLM の開発とデプロイには、イノベーションとセキュリティ、コンプライアンス、信頼性の要件のバランスを取る体系的なアプローチが必要です。測定可能な成果と再現可能なプロセスを重視する科学的手法により、複雑な課題を乗り越えながらミッションクリティカルな目標を達成できます。 AWS の包括的なサービス群は、初期評価フレームワークから本番環境へのデプロイと監視まで、各開発ステージに必要なツールとインフラストラクチャを提供します。ナショナル LLM を通じて文化遺産を保護する場合でも、ドメイン特化型 LLM で公共サービスを強化する場合でも、カスタム LLM は政府や公共機関がコミュニティにサービスを提供する方法を大きく改善する可能性を秘めています。 成功には、初期デプロイ後も継続的な取り組みが必要です。進化する運用環境において LLM の有効性を維持するため、継続的な監視、改良、適応を行います。 カスタム LLM 開発を開始する準備ができている場合、以下を実施する必要があります : 評価フレームワークの確立 : LM HarnessとAWSネイティブツールを使用 コスト分析の実施 : 予測されるワークロードに対する API 利用とセルフホスティングの TCO を比較 AWS インフラストラクチャオプションの検討 : SageMaker HyperPod、AWS PCS、Amazon EC2 Capacity Blocksを検討 データキュレーションパイプラインの実装 : Nemo Curatorなどのツールで大規模処理に対応 セキュリティとコンプライアンスフレームワークの設計 : 特定の管轄要件を満たす設計 詳細な技術ガイダンスについては、包括的なリソースライブラリをご覧ください : An introduction to preparing your own dataset for LLM training AWS Machine Learning Documentation Amazon SageMaker AI Documentation GENIAC プログラムから学んだ基盤モデル構築支援の教訓 組織のナショナル LLM 取り組みに対する具体的な要件やカスタマイズされた実装ロードマップの作成については、AWS アカウントチームにお問い合わせください。 TAGS: Artificial Intelligence , AWS Public Sector , technical how-to Laura Verghote Lauraは AWS の欧州 PSI における生成 AI リードとして、公共部門への生成 AI 導入を推進しています。欧州全域のお客様と協力し、技術的専門知識と戦略的計画を通じて生成 AI イニシアチブを加速させ、複雑な要件と革新的な AI ソリューションを橋渡ししています。 Anton Alexander Antonは AWS の生成 AI シニアスペシャリストとして、SageMaker HyperPod を使用した大規模な学習および推論ワークロードのスケーリングに注力しています。ベテランの CUDA プログラマーであり Kubernetes エキスパートとして、分散学習のための NVIDIA 技術の統合を支援し、EKS と Slurm 実装を専門としています。MENA 地域および政府部門のお客様と密に連携し、生成 AI ソリューションの最適化に取り組んでいます。機械学習エッジコンピューティングシステムに関する特許を申請中です。仕事以外では、ブラジリアン柔術と大学ボクシングのチャンピオンであり、飛行機の操縦を楽しんでいます。 Eliuth Triana Isaza Eliuth は NVIDIA のデベロッパーリレーションズマネージャーとして、Amazon の AI MLOps、DevOps、サイエンティスト、AWS テクニカルエキスパートを支援しています。 NVIDIA コンピューティングスタックを活用して、データキュレーション、GPU 学習、モデル推論、AWS GPU インスタンスでの本番デプロイにまで、生成 AI 基盤モデルの高速化と最適化をサポートしています。プライベートでは、マウンテンバイク、スキー、テニス、ポーカーを楽しんでいます。 Niki Sotiria Kokkalas Niki Sotiria は EMEA 地域の公共部門組織向けの生成 AI とデータ分析ワークロードを専門とする AWS のインダストリーソリューションアーキテクトです。主に教育に焦点を当てた機関や組織と協力し、イノベーションとインパクトを推進する効果的なデータと AI 戦略の設計と実装を支援しています。 Wenhan Tan Wenhan は NVIDIA のソリューションアーキテクトとして、お客様が大規模に NVIDIA AI ソリューションを導入できるよう支援しています。彼の業務は、深層学習アプリケーションの高速化と推論および学習の課題への対処に焦点を当てています。
このブログ記事は、株式会社タイミー様が執筆し、Amazon Web Services Japan が監修しています。 はじめに 株式会社タイミーは、「働きたい時間」と「働いてほしい時間」をマッチングするスキマバイトサービスを提供しています。 私たちは、 Amazon EKS Auto Mode (EKS Auto Mode) × Actions Runner Controller (ARC) を活用し、コスト・パフォーマンス・運用性のバランスを兼ね備えた Self-hosted Runner 基盤を構築しました。 本記事では、その背景と設計方針、導入時に直面した課題と解決への取り組み、導入によって得られた効果、そして今後の展望について紹介します。 背景と課題 スキマバイトサービス『タイミー』を中心にプロダクト開発が拡大する中で、CI/CD 基盤の改善には継続的に取り組んできました。 2024年10月に公開した「 CI 基盤を GitHub Actions へ移行した記事 」で紹介したとおり、 CircleCI から GitHub Actions への移行によって、開発体験やパイプライン速度は大きく改善しました。 しかし、開発者数やテストケースの増加、そして AI エージェントの活用拡大により、時間の経過とともに新たな課題が見えてきました。 コスト面での課題 CI 実行回数の急増 開発者や AI エージェント (例 : Devin) の利用が増えるにつれ、CI の実行回数も増加しました。 2025年初頭には、ピーク時で 1 時間あたり 60 件を超えるワークフローを処理する必要があり、コストとパフォーマンスの両立が新たな課題となりました。 GitHub-hosted Runner のコスト最適化限界 GitHub-hosted Runner は安定性に優れる一方で、割引オプションが少なく、コストコントロールの柔軟性に欠けます。実行頻度が高いワークロードに対しては、効率的なコスト最適化が難しい状況でした。 柔軟な最適化が可能な基盤の必要性 一方で、AWS では Savings Plans や Spot インスタンスを活用することで、柔軟な最適化が可能です。利用量が増え続けるタイミーのユースケースにおいては、こうした 柔軟に最適化できる基盤 が求められるようになりました。 技術面での課題 高並列・高頻度な実行負荷 CI ワークフローでは最大 35 並列でジョブを実行しており、ピーク時には 1 時間あたり約 60 回のワークフローが走ることもありました。CI ワークフローだけでも、1 時間に最大で 2,000 件以上の Runner が起動する規模 となり、開発速度を維持しながら、この高い実行頻度に耐えられる仕組みが求められていました。 環境構築コストによる実行時間の肥大化 GitHub-hosted Runner ではジョブごとに環境を都度構築するため、 apt install などのセットアップ処理によって実行時間が長くなり、まれに依存パッケージの取得に失敗してジョブが落ちるケースも発生していました。 テストケースの増加による実行時間の延伸 テスト数の増加に伴い、CI 全体の実行時間が徐々に長くなる傾向がありました。 その結果、「Self-hosted Runner (テスト実行用のコンテナ環境) にテスト実行に必要なライブラリをあらかじめインストールしておけば、テストのたびに毎回ライブラリをインストールする必要がなくなり、より高速化できるのでは?」という意見が開発者から上がるようになりました。 セキュリティと運用負荷のトレードオフ Terraform の適用など、強い IAM 権限を必要とするワークフローも存在しており、 セキュリティを強化しつつ、Self-hosted Runner 基盤に過剰な運用コストをかけないバランスが課題となっていました。 これらの課題を踏まえ、私たちは「コスト」「パフォーマンス」「セキュリティ」「運用性」のバランスを両立できる Self-hosted Runner 基盤を設計することにしました。そのために、複数のアプローチを比較検討しながら、最適なアーキテクチャを模索していきました。 プロジェクト概要 検討のプロセス 最初に検討したのは、 Amazon ECS (ECS) + AWS Lambda (Lambda) + Amazon API Gateway を組み合わせて Self-hosted Runner を構築する方法でした。 スケーラブルでサーバーレスに見える魅力的な構成でしたが、実際に検証してみるといくつかの課題が見えてきました。 GitHub API のレートリミット対応が難しい 1回の CI 実行で最大 35 並列の Runner を起動し、ピーク時には 1 時間に 60 回以上実行されるケースもあります。 これを Lambda 側で制御するのはかなり複雑で、実装コストが高くなってしまう懸念がありました。 起動の速さに限界がある Runnerは「30秒以内に起動してほしい」という要件がありますが、Lambda 経由で ECS タスクを起動する構成ではコールドスタートが発生し、安定 して要件を満たすのが難しい状態でした。 メンテナンスコストが高い Lambda 側のコードを継続的に更新・管理する必要があり、長期運用を考えると負担が大きいと判断しました。 そこで次の候補として、Kubernetes クラスタ上で ARC を運用する方法を検討しました。 ただし Kubernetes は強力である一方、クラスタバージョンアップやノード管理といった運用コストの高さが懸念でした。 こうした背景から、最終的に採用したのが EKS Auto Mode × ARC の組み合わせです。 EKS Auto Mode : クラスタ管理・ノード管理の運用負荷を大幅削減 ARC : GitHub API と連携し、Runner Pod を動的にスケーリング 「Kubernetes の柔軟性を活かしながら、運用負荷を抑えて安定した Self-hosted Runner 基盤を実現できる」 そう判断し、この構成を選びました。 プロジェクト体制と期間 本プロジェクトは、プラットフォームエンジニア 1 名と壁打ち役 1 名という少人数体制で進行しました。 EKS Auto Mode では、クラスターを立ち上げるだけで主要な Add-on が自動的にセットアップされるため、そこに ARC(Actions Runner Controller)を Helm でデプロイするだけで、基本的な骨組みをすぐに構築できます。 これにより、検証と調整を素早く繰り返せる環境を整え、効率的に構築を進めることができました。 さらに、EKS Auto Mode ではノードや主要な Add-on の更新・管理を AWS 側が自動で行ってくれるため、運用設計にかける手間を大幅に減らすことができました。 その結果、短いサイクルで構築から本番導入までスムーズに完了し、検証開始から約 2 か月で安定稼働に至りました。 システムアーキテクチャー ARC : GitHub API と連携し、必要に応じて Runner Pod を自動で起動・削除 EKS Auto Mode : Karpenter による高速スケーリングを実現 EKS Auto Mode のおかげでノード管理の負担を大幅に軽減し、「Kubernetes を使いたいが運用コストは最小限にしたい」という要件を満たすことができました。 導入時に直面した課題と解決策 ① Spot インスタンスの安定性問題 当初はコスト削減を狙って、停止率の低いインスタンスタイプの Spot インスタンス を採用していました。しかし、弊社のCIは 35 並列で高頻度に実行 されるため、必要なインスタンス数が多くなり、停止確率が低いタイプでも 1 日あたり 5〜10 回ほどノードが落ちる ことがありました。その結果、CIが途中で失敗するケースが頻発し、 開発者体験を大きく損ねる要因 となってしまいました。 対策 そこで思い切って オンデマンドインスタンスに切り替え 、必要に応じて Savings Plans を適用する方針にしました。 オンデマンドにしたことで、Runnerが突然落ちるリスクがなくなり、安定して CI を回せるようになった 安定性が向上したことで、CIだけでなく デプロイなど他のワークフローも Self-hosted Runner に寄せる ことが可能に これにより EC2 のアイドル時間を減らし、稼働率を高めることでコスト効率も改善できました ② スケールインで Runner Pod が強制終了する問題 次に直面したのは「EC2 のスケールインによって、Runner Pod が CI 実行中に突然落ちる」という問題です。 原因は、Karpenter の設定でした。 デフォルトでは disruption.consolidationPolicy が WhenEmptyOrUnderutilized になっており、リソース使用率が低いと、 Pod が稼働中でも容赦なくノードを落としてしまう のです。 (参考: https://karpenter.sh/docs/concepts/disruption/ ) 対策 consolidationPolicy を WhenEmpty に変更 Podがないノードのみスケールイン対象とするよう設定 spec: disruption: consolidationPolicy: WhenEmpty これで Runner Pod が実行中に消える問題は解消しました。 ③ ノードが全然スケールインしない問題 しかし、ここで新たな課題が発生します。 それは「一度スケールアウトすると、ノードがほとんどスケールインしなくなる」という現象です。 原因は、Kubernetes のスケジューリングの仕組みにありました。Kubernetes は、Pod をできるだけ均等にノードへ分散配置しようとする特性があります。そのため、ノード上の Pod 数がバラけやすく、どのノードも完全に空になることがほとんどありません。 結果として、スケールインのトリガー条件 (=Pod が存在しないノード) がなかなか満たされず、 ノードが減らない状態が続いてしまいました。 対策 Pod Affinity を利用し、Runner Pod はなるべく同じノードに詰めるよう設定 Pod 配置の断片化を防ぎ、スケールインしやすくしました affinity: podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: actions.github.com/scale-set-namespace: arc-runners topologyKey: kubernetes.io/hostname これによりリソース効率が大きく改善されました。 ④ 夜間にリソースを最適化する作戦 リソース効率をさらに高めるため、 日中は安定性を優先し、夜間だけ段階的にノードを整理する仕組み を導入しました。 具体的には、disruption.consolidationPolicy を WhenEmptyOrUnderutilized に設定したうえで、夜間に 一定間隔で 15 分だけ pod が存在するノードのスケールインを許可 → その後は再び禁止 というサイクルを繰り返します。 これにより、ノード上にPodが残っていても一気に消されることはなく、 「急に Pod が落ちて CI が止まる」といったリスクを避けながら、少しずつリソースを最適化 できるようになります。 spec: disruption: consolidationPolicy: WhenEmptyOrUnderutilized consolidateAfter: 5m budgets: - nodes: "0" reasons: - Underutilized schedule: "0 0 * * *" duration: "11h45m" - nodes: "0" reasons: - Underutilized schedule: "0 12 * * *" duration: "3h15m" - nodes: "0" reasons: - Underutilized schedule: "30 15 * * *" duration: "1h45m" - nodes: "0" reasons: - Underutilized schedule: "30 17 * * *" duration: "2h45m" - nodes: "0" reasons: - Underutilized schedule: "30 20 * * *" duration: "3h30m" この仕組みによって、 日中は安定して CI を回しつつ、夜間は少しずつノードを整理してリソースを効率的に活用 できるようになりました。 導入の効果 コスト面 現時点では、GitHub-hosted Runner を利用していた頃とコストはほぼ同水準です。 しかし今後、Savings Plans の適用やリソースチューニングを進めることで、段階的なコスト削減を見込んでいます。 GitHub-hosted Runner は、 利用時間に応じて課金される従量課金モデル であり、Private リポジトリ向けは 2core 固定 の課金体系になっています。 一方、Self-hosted Runner は EC2 の実行時間に基づく課金 となるため、ジョブの内容に応じて柔軟にリソースを割り当てることが可能になりました。 CPU バウンドなジョブでは多コアを割り当てて高速化 I/O 中心や軽量なジョブでは 1core またはそれ以下に制限 このようにリソースを使い分けることで、EC2 の起動台数を最適化し、コストを柔軟にコントロールできるようになりました。 さらに、Self-hosted Runner の課金体系は基本的に EC2 の稼働時間に依存するため、開発者数が増えても、GitHub-hosted Runner のように Runner 利用料金が比例して膨らむことがない点も大きな利点です。 パフォーマンス面 Runner イメージに事前に必要な apt パッケージなどをインストールしておくチューニングにより、CI 実行時間を 平均で約 3 分短縮 しました。 運用コスト面 EKS を利用する上で手間のかかるポイントのひとつが、ノードや Add-on のバージョン管理です。しかし、EKS Auto Mode を採用したことで、 ノードと主要な Add-on のアップデートは AWS 側で自動的に管理 されるようになりました。 そのため、利用者がノードの入れ替えや Add-on の更新を手動で行う必要がなく、運用負荷を大幅に削減できました。 一方で、クラスタ本体 (control plane) のバージョンアップは引き続き手動で行う必要があります。 ただし、ARC Runner (Helm) で使用している Kubernetes 関連の依存関係については、 Renovate や Dependabot により継続的に最新化しています。その結果、 常に最新の API 群を利用できており、非推奨 API に依存するリスクが低減 されています。これにより、クラスタ本体のバージョンアップ時にも大きな修正を伴うことが少なく、 安全かつスムーズにアップグレードを進められる運用体制 を実現できました。最終的には、定期的にクラスタのバージョンを上げるだけで安定稼働を維持できるようになり、 ほぼ手放しで安定稼働できる運用体制を実現しており、日常的なメンテナンス工数は従来に比べて大幅に軽減されています。 今後の取り組み Runner イメージのチューニングによって、実行時間の短縮には一定の成果を得られました。 今後は、 セキュリティ強化 を目的として、Self-hosted Runner のさらなる活用を検討しています。 たとえば、Terraform を用いて AWS 構成管理を行う GitHub Actions のワークフローでは、 その性質上、比較的強い IAM Role の権限を付与する必要があります。 ワークフロー内では IAM ユーザーを直接使用していないものの、一時的に発行される STS トークン(セッションクレデンシャル)によって、一定期間 AWS リソースにアクセスできる状態になります。 このような仕組みの中で、仮に悪意のあるアクションや依存ライブラリによって環境変数からクレデンシャル情報が抜き取られた場合、そのトークンを悪用して AWS リソースを破壊・改ざんされるリスクがあります。 これは、GitHub-hosted Runner 利用時における 攻撃対象領域 の一つとなり得ます。 Self-hosted Runner を活用することで、こうしたリスクに対してより強固なセキュリティ対策が可能です。 たとえば、Runner の送信元 IP は NAT 経由で固定されているため、Terraform 実行時に利用する IAM Role に IP 制限を付与することで、不正アクセスを防止できます。 さらに、 DNS Firewall や Network Firewall を組み合わせることで、ワークフロー内から外部への不正な通信(例:環境変数を外部サーバーに送信するなど)を遮断できます。これらの対策により、ワークフロー内で利用される一時的なクレデンシャル情報の漏えいを防ぎ、よりセキュアで信頼性の高い環境を実現できると考えています。 まとめ EKS Auto Mode × Actions Runner Controller (ARC) の導入により、タイミーでは運用負荷を抑えながら、スケーラブルで安定した Self-hosted Runner 基盤を実現しました。 EKS Auto Mode によるノード管理の自動化と、ARC・Karpenter による柔軟なスケーリングによって、高速な CI 実行と高い安定性を両立し、開発者体験も大きく向上しました。 今後は、コスト最適化やセキュリティ強化を継続的に進めるとともに、EKS Auto Mode の運用ナレッジが社内に蓄積されていけば、必要に応じてサービス基盤への適用も検討していきたいと考えています。 著者について 徳富 博 (Tokudomi Hiroshi) 株式会社タイミー プラットフォーム エンジニアリング1G 2024年5月にタイミーへ入社。オブザーバビリティ、開発者体験やセキュリティの向上、インフラ整備、パフォーマンスチューニングなどに取り組んでいます。
本記事は米国時間 2025 年 10 月 31 日に公開された「 This is Kiroween 」を翻訳したものです。 ついに来ました!このハロウィン、私たちは初回となる Kiroween ハッカソン を開始します。これは年に一度のコンテストで、従来のツールでは実現が困難な、ワイルドで創造的なアイデアを刺激するために設計されています。私たちは 12 の異なる賞と 66 人の受賞者に総額 10 万ドルを授与し、1 位の賞金は 3 万ドルです。スペック、エージェントフック、ステアリング、MCP などの Kiro のエージェント機能が可能性をどのように押し広げるかを体験してください。あなたが熟練した開発者、スタートアップ創設者、デザイナー、または技術愛好家であっても、Kiro があなたをどのように後押しするかを見るのが待ちきれません。 Devpost で登録 注意:提出期間中、参加者には Kiro Pro + プラン相当のクジレットを提供いたします。Kiroween に登録すると、特典を受ける方法の詳細な手順が記載された確認メールが届きます。私たちの優先事項は、あなたが Kiro で意味のある構築と実験を行うためのリソースを確実にご提供することです。 ダークモードでコーディングする勇気を チャレンジは、ハロウィンの精神に浸れるような不気味なカテゴリーセットに着想を得て、Kiro を使用して動作するアプリを構築することです。これらを自由にしたのは、あなたが最もワクワクするものを構築でき、本当にクールでユニークなアプリのアイデアを引き出すのに十分なインスピレーションを与えるためです。 復活 :お気に入りの廃れた技術を蘇らせましょう。廃れた技術を今日のイノベーションで再構想するか、明日の問題を解決してください。 フランケンシュタイン :思いもよらない強力なものを一つのアプリにしてつなぎ合わせましょう。一見互換性のない要素を結び合わせて、予想外に強力なものを構築してください。 スケルトンクルー :骨組みとなるコードテンプレートを構築してください。簡潔で明確でありながら、様々なユースケースに対応できる柔軟性を備えたものにしましょう。基盤となる 2 つの異なるアプリケーションを通じて、その汎用性を示してください。 コスチュームコンテスト :どんなアプリでも構築してください。ただし、洗練されて忘れられない不気味なユーザーインターフェースを見せてください。アプリの機能を向上させる不気味なデザイン要素を取り入れてください。 さらに、スタートアップらしい味付けも Kiroween に新たな賞カテゴリ「ベストスタートアッププロジェクト」を追加しました。このカテゴリでは、最優秀作品に 1万ドル を授与します。(提出詳細については ルール を参照してください)。スタートアップ創設者に、通常であれば大幅により多くのリソースが必要なコンセプトを迅速にプロトタイプし開発する機会を提供したいと考えています。Kiro の開発サイクル加速能力により、より野心的なアイデアをテストし、より速い反復で、魅力的な製品を生み出すことができます。これらをすべてハッカソンの期間内に実現します。 詳細 重要な日程: 開始:2025 年 11 月 1 日土曜日、日本時間 午前 1 時 提出締切:2025 年 12 月 6 日金曜日、日本時間 午前 7 時 賞金プール :カテゴリー受賞者、総合受賞者、創造性、ソーシャルエンゲージメントなどの特別ボーナス賞を含む、総額 10 万ドルの賞金が待っています。 審査基準 :あなたの提出物は、 Ania Kubow 、 Santiago Valdarrama 、 Rachel Stephens などを含む専門業界審査員のパネルによって評価されます。各アプリは以下に基づいて評価されます: 潜在的価値 :あなたのソリューションはどれほど有用で、アクセスしやすく、インパクトがありますか? 実装 :Kiro の機能をどれほど効果的に活用しましたか? 品質とデザイン :あなたのプロジェクトはどれほど創造的で、独創的で、洗練されていますか? 提出要件 : .kiro ディレクトリ(スペック、フック、ステアリングの使用方法を示す)を含むパブリックコードリポジトリ、機能するアプリケーション URL、3 分間のデモンストレーション動画、および以下のような機能の次世代レベルの理解を示す開発プロセス全体での Kiro 活用に関するドキュメントを提供する必要があります。 バイブコーディング :プロジェクトを構築するために Kiro との会話をどのように構造化しましたか?Kiro が手助けした最も印象的なコード生成は何でしたか? エージェントフック :Kiro フックでどのような特定のワークフローを自動化しましたか?これらのフックは開発プロセスをどのように改善しましたか? 仕様駆動開発 :Kiro が実装するためのスペックをどのように構造化しましたか?仕様駆動アプローチは開発プロセスをどのように改善しましたか?これはバイブコーディングと比較してどうでしたか? ステアリングドキュメント :Kiro の応答を改善するためにステアリングをどのように活用しましたか?最も大きな違いを生んだ特定の戦略はありましたか? MCP :Kiro の機能拡張はプロジェクト構築にどのように役立ちましたか?MCP が可能にした機能やワークフロー改善のうち、そうでなければ困難または不可能だったものは何ですか? Devpost で登録 Discord が居場所です Kiro Discord では専用の #kiroween-hackathon チャンネルが待っています。そこで仲間の参加者とつながり、チームを結成し、アイデアを共有し、他の開発者や Kiro チームメンバーからサポートを得ることができます。私たちのコミュニティは、課題をナビゲートし、フィードバックを提供し、途中での進歩を祝うお手伝いをする準備ができています。また、製品専門家にリアルタイムで質問できる隔週のオフィスアワーもあります。ハッカソンを超えて、プロジェクトスポットライト、製品発表、イベント更新、その他のニュースやリソースが定期的に共有されています。そこでお会いしましょう。 暗闇に git commit する準備はできましたか? Kiroween は Kiro 開発者のために、Kiro で実験し、それが提供する機能と能力の全範囲を活用する楽しい機会として設計されました。今こそ、忘れられない何かを生み出すチャンスです。Kiroween の特別な不気味さからインスピレーションを得て、アイデアを召喚し、暗闇に git commit してください。 Devpost で登録 X 、 LinkedIn 、 Instagram で @kirodotdev を、 BlueSky で@kiro.devをタグ付けし、ハッシュタグ #codewithkiro を使用して進捗の更新を共有してください。
複雑なデータ取得システムを開発する手間をかけることなく、正確かつ最新の情報を提供する AI アプリケーションを構築することを想像してみてください。10 月 28 日は、 Amazon Bedrock の Nova モデル向けの新しい組み込みツールである Web Grounding の一般提供が開始されたことを皆さんにお知らせします。 Web Grounding は、ターンキー 検索拡張生成 (RAG) オプションを開発者に提供します。このオプションは、Amazon Nova 基盤モデル がプロンプトの内容に基づいて関連する最新情報をいつ取得して組み込むのかをインテリジェントに判断できるようにします。これは、ハルシネーションの削減と精度の向上を目的とするもので、引用されたパブリックソースをコンテキストとして組み込むことでモデル出力をグラウンディングするために役立ちます。 開発者が Web Grounding を使うべき状況 開発者は、最新の事実情報にアクセスする必要があるアプリケーションや、十分な引用が行われた応答を提供する必要があるアプリケーションを構築するときに Web Grounding の使用を検討すべきです。この機能は特に、製品やサービスに関する最新情報を提供する知識ベースのチャットアシスタントや、事実確認やソース検証が必要になるコンテンツ生成ツールといったさまざまなアプリケーションで真価を発揮します。また、複数の最新ソースからの情報を合成する必要があるリサーチアシスタントや、精度と検証可能性が極めて重要なカスタマーサポートアプリケーションにも最適です。 Web Grounding は、AI アプリケーションのハルシネーションを低減する必要があるときや、ユースケースで透明性のあるソース属性が必要になるときに特に便利です。Web Grounding は情報の取得と統合を自動的に処理するため、複雑な RAG 実装の管理ではなく、アプリケーションの構築に集中したい開発者のための効率的なソリューションです。 使用の開始 Web Grounding は、推論時における情報の取得と処理を実行するために、サポートされている Amazon Nova モデルとシームレスに統合します。これは、複雑な RAG パイプラインを構築して維持する必要をなくすとともに、情報の取得元を実証するソース属性も提供します。 Web Grounding を有効にした状態で、Python を使用して Amazon Bedrock Converse API を呼び出す Nova Premier に質問する例を見てみましょう。 まず、通常の方法で AWS SDK for Python (Boto3) を使用して Amazon Bedrock クライアントを作成しました。これには、グッドプラクティスとしてセッションを使用しています。セッションは、設定をグループ化して再利用可能にするために役立ちます。次に、BedrockRuntimeClient を作成します。 try: session = boto3.Session(region_name='us-east-1') client = session.client( 'bedrock-runtime') それから、Amazon Bedrock Converse API ペイロードを準備します。ここでは、「role」パラメータが「user」(AI 生成応答の場合は「assistant」になります) に設定されており、メッセージがアプリケーションのユーザーからのものであることを示しています。 このデモでは、「現在の AWS リージョンとそれらの場所を教えてください」という質問を選びました。 この質問は、応答に最新の情報が必要になることから意図的に選択しました。これは、Amazon Nova が最新の知識が必要であると判断したときにどのように Web Grounding を使用して検索を自動的に呼び出すのかを実証するために役立ちます。 # Prepare the conversation in the format expected by Bedrock question = "What are the current AWS regions and their locations?" conversation = [ { "role": "user", # Indicates this message is from the user "content": [{"text": question}], # The actual question text } ] まず、Web Grounding を使用しなかった場合の出力を見てみましょう。Amazon Bedrock Converse API を呼び出します。 # Make the API call to Bedrock model_id = "us.amazon.nova-premier-v1:0" response = client.converse( modelId=model_id, # Which AI model to use messages=conversation, # The conversation history (just our question in this case) ) print(response['output']['message']['content'][0]['text']) 現在のすべての AWS リージョン とそれらの場所のリストが返されます。 今度は、Web Grounding を使ってみましょう。Amazon Bedrock Converse API に同じような呼び出しを行いますが、今回はモデルが利用できるツールの 1 つとして nova_grounding を宣言しています。 model_id = "us.amazon.nova-premier-v1:0" response = client.converse( modelId=model_id, messages=conversation, toolConfig= { "tools":[ { "systemTool": { "name": "nova_grounding" # Enables the model to search real-time information } } ] } ) 応答の処理後、モデルが Web Grounding を使用して最新情報にアクセスしたことを確認できます。出力には、思考過程を辿り、外部ソースを自動的にクエリした箇所を確認するために使用できる推論トレースが含まれています。これらの外部コールからの応答の内容は [HIDDEN] として表示されています。これは、AI システムにおける標準的な慣行で、機密情報を保護するとともに、出力サイズの管理にも役立ちます。 さらに、出力には Web Grounding がクエリしたソースに関する情報が含まれた CitationsContent オブジェクトもあります。 最後に AWS リージョンのリストを確認でき、「これらは世界中の最新かつアクティブな AWS リージョンです」というメッセージで終わっています。 Web Grounding は、最小限の労力で AI アプリケーションの信頼性と最新性を向上させることにおける大きな進歩です。正確かつ最新の情報を提供する必要があるカスタマーサービスチャットアシスタントを構築している、複数ソースからの情報を分析して合成するリサーチアプリケーションを開発している、または目的地や宿泊施設に関する最新の詳細情報を提供する旅行アプリケーションを作成しているかに関わらず、Web Grounding は、簡単に設定して使用できる便利なターンキーソリューションで、より正確で関連性の高い応答をユーザーに提供できるようにしてくれます。 知っておくべきこと Amazon Nova Web Grounding は、10 月 28 日から米国東部 (バージニア北部) でご利用いただけます。Web Grounding は、米国東部 (オハイオ) と米国西部 (オレゴン) でも近日リリース予定です。 Web Grounding には追加料金が発生します。詳細については、 Amazon Bedrock の料金ページ をご覧ください。 現在、Web Grounding を使用できるのは Nova Premier のみですが、他の Nova モデルのサポートも近々追加される予定です。 Amazon Nova を使用したことがない場合や、さらに深く掘り下げたいとお考えの場合は、自分のペースで進めることができるこちらのオンライン ワークショップ をお試しください。このワークショップでは、テキスト、画像、動画の処理のために Amazon Nova 基盤モデルと関連特徴量を効率的に使用する方法を実践的な演習を通じて学ぶことができます。 Matheus Guimaraes | @codingmatheus 原文は こちら です。
10 月 27 日週、私は AWS Shenzhen Community Day で Jeff Barr に会いました。Jeff は、世界中のビルダーが生成 AI でどのように実験しているかについて語り、これからもアイデアを実際のプロトタイプに落とし込んでいくように現地の開発者を励ましました。セッション終了後も多くの参加者がその場に残り、モデルのグラウンディングと評価、生成 AI を実際のアプリケーションに組み込む方法について話し合いました。 コミュニティビルダーたちは、Kiro をテーマにしたクリエイティブなデモ、AI 駆動の IoT プロジェクト、学生主導の実験を紹介しました。生成 AI イノベーションに対する共通の好奇心と意気込みを通じてつながる新しい開発者、学生、そして年来の Amazon Web Services (AWS) コミュニティリーダーを見ることができ、とても良い刺激になりました。 世界で最も強力なオペレーショナル AI スーパーコンピュータの 1 つである Project Rainier がオンラインになりました。Anthropic との密接なコラボレーションを通じて AWS が構築した Project Rainier は、高帯域幅、低レイテンシーのモデルトレーニングを極めて大規模に実現するために設計された新しい Amazon Elastic Compute (Amazon EC2) UltraServer と EC2 UltraCluster のアーキテクチャを使用して、 AWS がカスタム設計した Trainium2 チップ 約 50 万個をサービスに導入します。 Anthropic は Project Rainier で Claude のトレーニングと推論を既に行っており、2025 年末までに直接使用と Amazon Bedrock の全体で 100 万個を超える Trainium2 チップにスケールする予定です。アーキテクチャの詳細、デプロイに関するインサイト、UltraServer オンライン化の舞台裏動画については、「 AWS activates Project Rainier 」で発表の全文をお読みください。 11 月 3 日週のリリース 私が 10 月 27 日週注目したリリースをご紹介します。 Amazon Nova – 引用ベースのウェブ検索をリアルタイムで行うための新しい組み込みツールとして Web Grounding が追加されました。また、統合されたクロスモーダルベクトルを生成することで 検索拡張生成 (RAG) とセマンティック検索の精度を向上させる最新鋭のモデル、 Multimodal Embeddings も導入されました。どちらの機能も Amazon Bedrock でご利用いただけます。 Amazon Bedrock – TwelveLabs の Marengo Embed 3.0 が、動画、画像、音声、テキストの全体でロングフォームの動画ネイティブなマルチモーダル埋め込みに利用できるようになり、ドメイン精度も向上しました。 Stabability AI Image Services に、高解像度アップスケーリング、アウトペインティング、制御されたバリエーションのための Outpaint、Fast Upscale、Conservative Upscale、Creative Upscale の 4 つの新しいツールが追加されました。 Model Context Protocol (MCP) Proxy for AWS – SigV4 認証を使用して MCP クライアントを AWS がホストするリモート MCP サーバーに接続するクライアント側プロキシとしての一般提供が開始されました。Amazon Q Developer CLI、Kiro、Cursor、Strands Agents といったツールと連動し、読み取り専用モード、再試行ロジック、ロギングなどの安全制御を提供します。MCP Proxy for AWS はオープンソースです。 AWS GitHub リポジトリ にアクセスしてインストールや設定のオプションを確認し、リモート AWS MCP サーバーへの接続を開始できます。 Amazon Elastic Container Service (Amazon ECS) – 組み込みのリニアデプロイ戦略とカナリアデプロイ戦略 のサポートが開始されました。これらは、段階的なトラフィックシフト、小規模な本番環境スライスを使用したカナリアテスト、安全なロールバックのためのデプロイベイク時間、Amazon CloudWatch アラームベースの自動ロールバックといった機能を提供します。 Amazon DocumentDB – Amazon DocumentDB 5.0 に 新たなクエリプランナー が追加されました。このプランナーは、より的確なインデックスプランと、 $neq 、 $nin 、ネストされた $elementMatch のサポートによってクエリパフォーマンスを最大 10 倍高速化し、クラスターパラメータグループ経由でダウンタイムなしで有効化できます。 Amazon Elastic Block Store (Amazon EBS) – CloudWatch の新しいボリューム別メトリクス である VolumeAvgiOps と VolumeAvgThroughput を使用して、AWS Nitro ベースのインスタンスにアタッチされた EBS ボリュームの平均 IOPS とスループットを分単位で把握できるようになりました。これらのメトリクスは、パフォーマンス傾向を監視し、ボトルネックをトラブルシューティングして、プロビジョニングされたキャパシティを最適化するために役立ちます。 Amazon Kinesis Data Streams – 最大 10 MiB の個別レコード を送信できるようになりました。これは以前の上限の 10 倍で、より大規模な IoT、変更データキャプチャ、AI 生成のペイロードのサポートに役立ちます。 Amazon SageMaker – Unified Studio の検索結果が 追加の検索コンテキスト を提供するようになりました。このコンテキストは、一致するメタデータフィールドやランク付けの理論的根拠を提供して、データ検出における透明性と関連性を向上させます。 その他のアップデート その他の興味深いプロジェクト、ブログ記事、ニュースをいくつかご紹介します。 AWS VAMS と 4D Pipeline を用いた本番環境対応の 3D パイプラインの構築 – AWS Visual Asset Management System (VAMS) と 4D Pipeline を使用してスケーラブルなクラウドベースの 3D アセットパイプラインを作成するためのリファレンスアーキテクチャで、インジェスト、検証、共同レビュー、ゲーム全体での配信、視覚効果 (VFX)、デジタルツインをサポートします。 Amazon Location Service が新しい API キー制限を導入 – バンドル ID を使用するきめ細かなセキュリティポリシーを作成して、特定のモバイルアプリケーションへの API アクセスを制限できるようになりました。これは、ロケーションベースのワークロード全体でアクセスコントロールを向上させ、アプリケーションレベルのセキュリティを強化します。 AWS Clean Rooms が高度な SQL 設定をリリース – Spark プロパティとコンピューティングサイズのランタイムカスタム化に加えて、大規模な分析クエリのより迅速でコスト効率性に優れた処理のためのテーブルキャッシュをサポートする、Spark SQL ワークロードのためのパフォーマンス強化です。 AWS Serverless MCP Server がイベントソースマッピング (ESM) ツールを追加 – AWS Lambda イベントソースマッピングの設定、パフォーマンス調整、トラブルシューティングをサポートするイベント駆動のサーバーレスアプリケーション向けの機能で、AWS サーバーレスアプリケーションモデル (AWS SAM) テンプレートの生成と診断インサイトが含まれます。 AWS IoT Greengrass が AI エージェントコンテキストパックをリリース – クラウドに接続されたエッジアプリケーションのための開発アクセラレーターです。すぐさま使用できる指示、例、テンプレートを提供することで、チームがより迅速なソフトウェアの作成、テスト、フリート全体でのデプロイのために Amazon Q などの生成 AI ツールを統合できるようにします。エージェントコンテキストパックは、 GitHub リポジトリ でオープンソースとして利用できます。 AWS Step Functions が新しいメトリクスダッシュボードを導入 – 単一のコンソール内で、標準ワークフローと express ワークフローの使用状況、請求、パフォーマンスのメトリクスをステートマシンレベルで確認できるようになりました。これは、分散型アプリケーションの可視性を向上させ、トラブルシューティングを容易にします。 今後の AWS イベント カレンダーを確認して、近日開催予定の AWS イベントにサインアップしましょう。 AWS Builder Loft – エキスパートセッションから学び、ハンズオンワークショップに参加して、AI や新興テクノロジーを検証するとともに、他のビルダーとのコラボレーションを通じてアイデアを加速させることができる、米国サンフランシスコのコミュニティテクノロジースペースです。 開催予定のセッション を閲覧して、関心のあるイベントにぜひご参加ください。 AWS Community Day – 世界中のエキスパート AWS ユーザーと業界リーダーがリードするテクニカルディスカッション、ワークショップ、ハンズオンラボが盛り込まれたコミュニティ主導のカンファレンスに参加しましょう。日程は、 香港 (11 月 2 日)、 アブジャ (11 月 8 日)、 カメルーン (11 月 8 日)、 スペイン (11 月 15 日) です。 AWS Skills Center Seattle 4 周年記念イベント – 11 月 20 日に開催される、基調講演、専門家パネル、採用担当者によるインサイト、抽選会、仮想参加オプションなどが盛りだくさんの無料公開イベントです。 AWS Builder Center に参加して、AWS コミュニティのビルダーを学び、構築し、交流しましょう。こちらで 近日開催予定の対面イベント 、 開発者に焦点を当てたイベント 、 スタートアップ向けのイベント をご覧ください。 11 月 3 日週のニュースは以上です。11 月 10 日週にお届けする次回の Weekly Roundup もお楽しみに! – Betty 原文は こちら です。
10 月 28 日、エージェンティック 検索拡張生成 (RAG) およびセマンティック検索アプリケーション向けの最先端のマルチモーダル埋め込みモデルである Amazon Nova Multimodal Embeddings をご紹介します。このモデルは Amazon Bedrock でご利用いただけます。これは、テキスト、ドキュメント、画像、動画、音声を単一のモデルを通じてサポートし、極めて高い精度のクロスモーダル検索を可能にする初の統合埋め込みモデルです。 埋め込みモデルは、テキスト、画像、音声の入力を、 埋め込み と呼ばれる数値表現に変換します。これらの埋め込みは、AI システムが比較、検索、分析できるように入力の意味を捉え、セマンティック検索や RAG などのユースケースを強化します。 組織は、テキスト、画像、ドキュメント、動画、音声コンテンツに分散している、増大し続ける非構造化データからインサイトを引き出すソリューションをますます求めています。例えば、組織には、製品の画像、インフォグラフィックとテキストを含むパンフレット、ユーザーがアップロードした動画クリップなどが存在する場合があります。埋め込みモデルは非構造化データから価値を引き出すことができますが、従来のモデルは通常、1 つのコンテンツタイプを処理するように特化しています。この制限により、お客様は、複雑なクロスモーダル埋め込みソリューションを構築するか、または単一のコンテンツタイプに特化したユースケースに制限せざるを得なくなります。また、この問題は、テキストと画像がインターリーブされたドキュメントや、ビジュアル、音声、テキスト要素を含む動画など、混合モーダルのコンテンツタイプにも当てはまります。これらのコンテンツタイプでは、既存のモデルでは、クロスモーダル関係を効果的に捉えることが困難です。 Nova Multimodal Embeddings は、混合モーダルコンテンツ間のクロスモーダル検索、参照画像を使った検索、ビジュアルドキュメントの取得などのユースケースにおいて、テキスト、ドキュメント、画像、動画、音声のための統合セマンティック空間をサポートします。 Amazon Nova Multimodal Embeddings のパフォーマンスの評価 幅広いベンチマークでモデルを評価した結果、次の表に示すとおり、すぐに活用できる極めて優れた精度を実現しました。 Nova Multimodal Embeddings は、最大 8K トークンのコンテキスト長、最大 200 言語のテキストをサポートし、同期および非同期 API を介して入力を受け付けます。さらに、セグメンテーション (「チャンキング」とも呼ばれます) をサポートし、長文のテキスト、動画、音声コンテンツを扱いやすいセグメントにパーティショニングし、各部分の埋め込みを生成します。最後に、このモデルは 4 つの出力埋め込みディメンションを提供します。これらの埋め込みディメンションは、 Matryoshka Representation Learning (MRL) を使用してトレーニングされており、精度の変動を最小限に抑えながら、低レイテンシーのエンドツーエンド検索を可能にします。 実際に新しいモデルをどのように使用できるのかを見てみましょう。 Amazon Nova Multimodal Embeddings の使用 Nova Multimodal Embeddings の開始方法は、 Amazon Bedrock の他のモデル と同じパターンに従います。このモデルは、テキスト、ドキュメント、画像、動画、または音声を入力として受け入れ、セマンティック検索、類似度比較、または RAG に使用できる数値埋め込みを返します。 ここでは、 AWS SDK for Python (Boto3) を使用して、さまざまなコンテンツタイプから埋め込みを作成し、後で取得できるように保存する方法を示す実用的な例を示します。簡潔にするために、埋め込みの保存と検索には、あらゆる規模のベクトルの保存とクエリをネイティブにサポートするコスト最適化ストレージである Amazon S3 Vectors を使用します。 まずは基本、すなわち、テキストを埋め込みに変換することから始めましょう。この例では、シンプルなテキスト記述を、その意味論的意味を捉えた数値表現に変換する方法を示します。これらの埋め込みは、後でドキュメント、画像、動画、音声からの埋め込みと比較することで、関連コンテンツを見つけることができます。 コードを理解しやすくするために、一度に示すのはスクリプトの一部にとどめます。完全なスクリプトはこのウォークスルーの最後に含まれています。 import json import base64 import time import boto3 MODEL_ID = "amazon.nova-2-multimodal-embeddings-v1:0" EMBEDDING_DIMENSION = 3072 # Amazon Bedrock ランタイムクライアントを初期化します bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1") print(f"Generating text embedding with {MODEL_ID} ...") # 埋め込むテキスト text = "Amazon Nova is a multimodal foundation model" # 埋め込みを作成します request_body = { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": text}, }, } response = bedrock_runtime.invoke_model( body=json.dumps(request_body), modelId=MODEL_ID, contentType="application/json", ) # 埋め込みを抽出します response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] print(f"Generated embedding with {len(embedding)} dimensions") 次に、スクリプトと同じフォルダにある photo.jpg ファイルを使用して、同じ埋め込み空間でビジュアルコンテンツを処理します。これは、マルチモーダリティの力を示しています。Nova Multimodal Embeddings は、テキストとビジュアルの両方のコンテキストを単一の埋め込みに取り込むことができ、ドキュメントをより深く理解できるようにします。 Nova Multimodal Embeddings は、使用方法に合わせて最適化された埋め込みを生成できます。検索または取得のユースケースのためにインデックスを作成する場合、 embeddingPurpose を GENERIC_INDEX に設定できます。クエリステップでは、取得する項目のタイプに応じて embeddingPurpose を設定できます。例えば、ドキュメントを取得する場合、 embeddingPurpose を DOCUMENT_RETRIEVAL に設定できます。 # 画像を読み取ってエンコードします print(f"Generating image embedding with {MODEL_ID} ...") with open("photo.jpg", "rb") as f: image_bytes = base64.b64encode(f.read()).decode("utf-8") # 埋め込みを作成します request_body = { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "image": { "format": "jpeg", "source": {"bytes": image_bytes} }, }, } response = bedrock_runtime.invoke_model( body=json.dumps(request_body), modelId=MODEL_ID, contentType="application/json", ) # 埋め込みを抽出します response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] print(f"Generated embedding with {len(embedding)} dimensions") 動画コンテンツの処理には、非同期 API を使用します。これは、 Base64 としてエンコードされたときに 25 MB を超える動画の要件です。まず、同じ AWS リージョン 内の S3 バケットにローカル動画をアップロードします。 aws s3 cp presentation.mp4 s3://my-video-bucket/videos/ この例では、動画ファイルのビジュアルと音声の両方のコンポーネントから埋め込み情報を抽出する方法を示します。セグメンテーション特徴量により、長い動画が扱いやすいチャンクに分割されるため、何時間にも及ぶコンテンツを効率的に検索できます。 # Amazon S3 クライアントを初期化します s3 = boto3.client("s3", region_name="us-east-1") print(f"Generating video embedding with {MODEL_ID} ...") # Amazon S3 URI S3_VIDEO_URI = "s3://my-video-bucket/videos/presentation.mp4" S3_EMBEDDING_DESTINATION_URI = "s3://my-embedding-destination-bucket/embeddings-output/" # 音声付き動画の非同期埋め込みジョブを作成します model_input = { "taskType": "SEGMENTED_EMBEDDING", "segmentedEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "video": { "format": "mp4", "embeddingMode": "AUDIO_VIDEO_COMBINED", "source": { "s3Location": {"uri": S3_VIDEO_URI} }, "segmentationConfig": { "durationSeconds": 15 # 15 秒単位のチャンクにセグメント化します }, }, }, } response = bedrock_runtime.start_async_invoke( modelId=MODEL_ID, modelInput=model_input, outputDataConfig={ "s3OutputDataConfig": { "s3Uri": S3_EMBEDDING_DESTINATION_URI } }, ) invocation_arn = response["invocationArn"] print(f"Async job started: {invocation_arn}") # ジョブが完了するまでポーリングします print("\nPolling for job completion...") while True: job = bedrock_runtime.get_async_invoke(invocationArn=invocation_arn) status = job["status"] print(f"Status: {status}") if status != "InProgress": break time.sleep(15) # ジョブが正常に完了したかどうかをチェックします if status == "Completed": output_s3_uri = job["outputDataConfig"]["s3OutputDataConfig"]["s3Uri"] print(f"\nSuccess! Embeddings at: {output_s3_uri}") # S3 URI を解析してバケットとプレフィックスを取得します s3_uri_parts = output_s3_uri[5:].split("/", 1) # プレフィックス「s3://」を削除します bucket = s3_uri_parts[0] prefix = s3_uri_parts[1] if len(s3_uri_parts) > 1 else "" # AUDIO_VIDEO_COMBINED モードは、embedding-audio-video.jsonl に出力します # output_s3_uri には既にジョブ ID が含まれているため、ファイル名を付加するだけです embeddings_key = f"{prefix}/embedding-audio-video.jsonl".lstrip("/") print(f"Reading embeddings from: s3://{bucket}/{embeddings_key}") # JSONL ファイルを読み取って解析します response = s3.get_object(Bucket=bucket, Key=embeddings_key) content = response['Body'].read().decode('utf-8') embeddings = [] for line in content.strip().split('\n'): if line: embeddings.append(json.loads(line)) print(f"\nFound {len(embeddings)} video segments:") for i, segment in enumerate(embeddings): print(f" Segment {i}: {segment.get('startTime', 0):.1f}s - {segment.get('endTime', 0):.1f}s") print(f" Embedding dimension: {len(segment.get('embedding', []))}") else: print(f"\nJob failed: {job.get('failureMessage', 'Unknown error')}") 埋め込みを生成したら、それらを効率的に保存および検索するための場所が必要です。この例では、大規模な類似性検索に必要となるインフラストラクチャを提供する Amazon S3 Vectors を使用してベクトルストアをセットアップする方法を示します。これは、意味論的に類似したコンテンツが自然にクラスター化される、検索可能なインデックスを作成するものと考えてください。インデックスに埋め込みを追加する際、メタデータを使用して元の形式とインデックスの作成対象のコンテンツを指定します。 # Amazon S3 Vectors クライアントを初期化します s3vectors = boto3.client("s3vectors", region_name="us-east-1") # 設定 VECTOR_BUCKET = "my-vector-store" INDEX_NAME = "embeddings" # ベクトルバケットとインデックスを作成します (存在していない場合) try: s3vectors.get_vector_bucket(vectorBucketName=VECTOR_BUCKET) print(f"Vector bucket {VECTOR_BUCKET} already exists") except s3vectors.exceptions.NotFoundException: s3vectors.create_vector_bucket(vectorBucketName=VECTOR_BUCKET) print(f"Created vector bucket: {VECTOR_BUCKET}") try: s3vectors.get_index(vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME) print(f"Vector index {INDEX_NAME} already exists") except s3vectors.exceptions.NotFoundException: s3vectors.create_index( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, dimension=EMBEDDING_DIMENSION, dataType="float32", distanceMetric="cosine" ) print(f"Created index: {INDEX_NAME}") texts = [ "Machine learning on AWS", "Amazon Bedrock provides foundation models", "S3 Vectors enables semantic search" ] print(f"\nGenerating embeddings for {len(texts)} texts...") # Amazon Nova を使用して各テキストの埋め込みを生成します vectors = [] for text in texts: response = bedrock_runtime.invoke_model( body=json.dumps({ "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": text} } }), modelId=MODEL_ID, accept="application/json", contentType="application/json" ) response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] vectors.append({ "key": f"text:{text[:50]}", # 一意の識別子 "data": {"float32": embedding}, "metadata": {"type": "text", "content": text} }) print(f" ✓ Generated embedding for: {text}") # 1 回の呼び出しで、保存するすべてのベクトルを追加します s3vectors.put_vectors( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, vectors=vectors ) print(f"\nSuccessfully added {len(vectors)} vectors to the store in one put_vectors call!") この最後の例では、単一のクエリでさまざまなコンテンツタイプを検索し、テキスト、画像、動画、音声のいずれから生成されたかにかかわらず、最も類似したコンテンツを見つける機能を示します。距離スコアは、結果が元のクエリとどの程度関連しているのかを理解するのに役立ちます。 # クエリするテキスト query_text = "foundation models" print(f"\nGenerating embeddings for query '{query_text}' ...") # 埋め込みを生成します response = bedrock_runtime.invoke_model( body=json.dumps({ "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_RETRIEVAL", "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": query_text} } }), modelId=MODEL_ID, accept="application/json", contentType="application/json" ) response_body = json.loads(response["body"].read()) query_embedding = response_body["embeddings"][0]["embedding"] print(f"Searching for similar embeddings...\n") # 最も類似した上位 5 つのベクトルを検索します response = s3vectors.query_vectors( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, queryVector={"float32": query_embedding}, topK=5, returnDistance=True, returnMetadata=True ) # 結果を表示します print(f"Found {len(response['vectors'])} results:\n") for i, result in enumerate(response["vectors"], 1): print(f"{i}. {result['key']}") print(f" Distance: {result['distance']:.4f}") if result.get("metadata"): print(f" Metadata: {result['metadata']}") print() クロスモーダル検索は、マルチモーダル埋め込みの重要な利点の 1 つです。クロスモーダル検索を使用すると、テキストでクエリして、関連する画像を見つけることができます。また、テキストの説明を使用して動画を検索したり、特定のトピックに一致する音声クリップを見つけたり、ビジュアルとテキストのコンテンツに基づいてドキュメントを検出したりすることもできます。ご参考までに、これまでの例をすべてまとめた完全なスクリプトをこちらに示します: import json import base64 import time import boto3 MODEL_ID = "amazon.nova-2-multimodal-embeddings-v1:0" EMBEDDING_DIMENSION = 3072 # Amazon Bedrock ランタイムクライアントを初期化します bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1") print(f"Generating text embedding with {MODEL_ID} ...") # 埋め込むテキスト text = "Amazon Nova is a multimodal foundation model" # 埋め込みを作成します request_body = { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": text}, }, } response = bedrock_runtime.invoke_model( body=json.dumps(request_body), modelId=MODEL_ID, contentType="application/json", ) # 埋め込みを抽出します response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] print(f"Generated embedding with {len(embedding)} dimensions") # 画像を読み取ってエンコードします print(f"Generating image embedding with {MODEL_ID} ...") with open("photo.jpg", "rb") as f: image_bytes = base64.b64encode(f.read()).decode("utf-8") # 埋め込みを作成します request_body = { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "image": { "format": "jpeg", "source": {"bytes": image_bytes} }, }, } response = bedrock_runtime.invoke_model( body=json.dumps(request_body), modelId=MODEL_ID, contentType="application/json", ) # 埋め込みを抽出します response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] print(f"Generated embedding with {len(embedding)} dimensions") # Amazon S3 クライアントを初期化します s3 = boto3.client("s3", region_name="us-east-1") print(f"Generating video embedding with {MODEL_ID} ...") # Amazon S3 URI S3_VIDEO_URI = "s3://my-video-bucket/videos/presentation.mp4" # Amazon S3 出力バケットと場所 S3_EMBEDDING_DESTINATION_URI = "s3://my-video-bucket/embeddings-output/" # 音声付き動画の非同期埋め込みジョブを作成します model_input = { "taskType": "SEGMENTED_EMBEDDING", "segmentedEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "video": { "format": "mp4", "embeddingMode": "AUDIO_VIDEO_COMBINED", "source": { "s3Location": {"uri": S3_VIDEO_URI} }, "segmentationConfig": { "durationSeconds": 15 # 15 秒単位のチャンクにセグメント化します }, }, }, } response = bedrock_runtime.start_async_invoke( modelId=MODEL_ID, modelInput=model_input, outputDataConfig={ "s3OutputDataConfig": { "s3Uri": S3_EMBEDDING_DESTINATION_URI } }, ) invocation_arn = response["invocationArn"] print(f"Async job started: {invocation_arn}") # ジョブが完了するまでポーリングします print("\nPolling for job completion...") while True: job = bedrock_runtime.get_async_invoke(invocationArn=invocation_arn) status = job["status"] print(f"Status: {status}") if status != "InProgress": break time.sleep(15) # ジョブが正常に完了したかどうかをチェックします if status == "Completed": output_s3_uri = job["outputDataConfig"]["s3OutputDataConfig"]["s3Uri"] print(f"\nSuccess! Embeddings at: {output_s3_uri}") # S3 URI を解析してバケットとプレフィックスを取得します s3_uri_parts = output_s3_uri[5:].split("/", 1) # プレフィックス「s3://」を削除します bucket = s3_uri_parts[0] prefix = s3_uri_parts[1] if len(s3_uri_parts) > 1 else "" # AUDIO_VIDEO_COMBINED モードは、embedding-audio-video.jsonl に出力します # output_s3_uri には既にジョブ ID が含まれているため、ファイル名を付加するだけです embeddings_key = f"{prefix}/embedding-audio-video.jsonl".lstrip("/") print(f"Reading embeddings from: s3://{bucket}/{embeddings_key}") # JSONL ファイルを読み取って解析します response = s3.get_object(Bucket=bucket, Key=embeddings_key) content = response['Body'].read().decode('utf-8') embeddings = [] for line in content.strip().split('\n'): if line: embeddings.append(json.loads(line)) print(f"\nFound {len(embeddings)} video segments:") for i, segment in enumerate(embeddings): print(f" Segment {i}: {segment.get('startTime', 0):.1f}s - {segment.get('endTime', 0):.1f}s") print(f" Embedding dimension: {len(segment.get('embedding', []))}") else: print(f"\nJob failed: {job.get('failureMessage', 'Unknown error')}") # Amazon S3 Vectors クライアントを初期化します s3vectors = boto3.client("s3vectors", region_name="us-east-1") # 設定 VECTOR_BUCKET = "my-vector-store" INDEX_NAME = "embeddings" # ベクトルバケットとインデックスを作成します (存在していない場合) try: s3vectors.get_vector_bucket(vectorBucketName=VECTOR_BUCKET) print(f"Vector bucket {VECTOR_BUCKET} already exists") except s3vectors.exceptions.NotFoundException: s3vectors.create_vector_bucket(vectorBucketName=VECTOR_BUCKET) print(f"Created vector bucket: {VECTOR_BUCKET}") try: s3vectors.get_index(vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME) print(f"Vector index {INDEX_NAME} already exists") except s3vectors.exceptions.NotFoundException: s3vectors.create_index( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, dimension=EMBEDDING_DIMENSION, dataType="float32", distanceMetric="cosine" ) print(f"Created index: {INDEX_NAME}") texts = [ "Machine learning on AWS", "Amazon Bedrock provides foundation models", "S3 Vectors enables semantic search" ] print(f"\nGenerating embeddings for {len(texts)} texts...") # Amazon Nova を使用して各テキストの埋め込みを生成します vectors = [] for text in texts: response = bedrock_runtime.invoke_model( body=json.dumps({ "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": text} } }), modelId=MODEL_ID, accept="application/json", contentType="application/json" ) response_body = json.loads(response["body"].read()) embedding = response_body["embeddings"][0]["embedding"] vectors.append({ "key": f"text:{text[:50]}", # 一意の識別子 "data": {"float32": embedding}, "metadata": {"type": "text", "content": text} }) print(f" ✓ Generated embedding for: {text}") # 1 回の呼び出しで、保存するすべてのベクトルを追加します s3vectors.put_vectors( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, vectors=vectors ) print(f"\nSuccessfully added {len(vectors)} vectors to the store in one put_vectors call!") # クエリするテキスト query_text = "foundation models" print(f"\nGenerating embeddings for query '{query_text}' ...") # 埋め込みを生成します response = bedrock_runtime.invoke_model( body=json.dumps({ "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_RETRIEVAL", "embeddingDimension": EMBEDDING_DIMENSION, "text": {"truncationMode": "END", "value": query_text} } }), modelId=MODEL_ID, accept="application/json", contentType="application/json" ) response_body = json.loads(response["body"].read()) query_embedding = response_body["embeddings"][0]["embedding"] print(f"Searching for similar embeddings...\n") # 最も類似した上位 5 つのベクトルを検索します response = s3vectors.query_vectors( vectorBucketName=VECTOR_BUCKET, indexName=INDEX_NAME, queryVector={"float32": query_embedding}, topK=5, returnDistance=True, returnMetadata=True ) # 結果を表示します print(f"Found {len(response['vectors'])} results:\n") for i, result in enumerate(response["vectors"], 1): print(f"{i}. {result['key']}") print(f" Distance: {result['distance']:.4f}") if result.get("metadata"): print(f" Metadata: {result['metadata']}") print() 本番アプリケーションでは、埋め込みは任意のベクトルデータベースに保存できます。 Amazon OpenSearch Service は、リリース時に Nova Multimodal Embeddings とのネイティブ統合を提供しているため、スケーラブルな検索アプリケーションを簡単に構築できます。前の例で示したように、 Amazon S3 Vectors を使用すると、アプリケーションデータを使用して埋め込みを簡単に保存およびクエリできます。 知っておくべきこと Nova Multimodal Embeddings は、3,072、1,024、384、256 の 4 つの出力ディメンションオプションを提供します。ディメンションが大きいほど詳細な表現が得られますが、より多くのストレージと計算が必要になります。ディメンションが小さいほど、検索パフォーマンスとリソース効率の実用的なバランスを実現できます。この柔軟性は、特定のアプリケーションとコスト要件に合わせて最適化するのに役立ちます。 このモデルは、かなり長いコンテキストを処理できます。テキスト入力では、一度に最大 8,192 トークンを処理できます。動画と音声の入力は最大 30 秒のセグメントをサポートし、モデルはより長いファイルをセグメント化できます。このセグメンテーション機能は、特に大容量のメディアファイルを扱う際に役立ちます。モデルはファイルを扱いやすいサイズに分割し、各セグメントの埋め込みを作成します。 このモデルには、Amazon Bedrock に組み込まれた責任ある AI の機能が含まれています。埋め込み用に送信されたコンテンツは、Amazon Bedrock のコンテンツセーフティフィルターを通過します。また、モデルには、バイアスを低減するための公平性対策が含まれています。 コード例で説明されているように、このモデルは同期 API と非同期 API の両方を通じて呼び出すことができます。同期 API は、検索インターフェイスでのユーザークエリの処理など、即時の応答が必要なリアルタイムアプリケーションに適しています。非同期 API は、レイテンシーの影響が小さいワークロードをより効率的に処理するため、動画などの大容量コンテンツの処理に適しています。 利用可能なリージョンと料金 Amazon Nova Multimodal Embeddings は、米国東部 (バージニア北部) の AWS リージョン の Amazon Bedrock で本日よりご利用いただけます。料金の詳細については、 Amazon Bedrock の料金ページ にアクセスしてください。 詳しくは、包括的なドキュメントについては「 Amazon Nova ユーザーガイド 」、実用的なコード例については GitHub の Amazon Nova モデルクックブック をご覧ください。 Amazon Q Developer や Kiro などの AI を利用したアシスタントをソフトウェア開発に使用している場合は、AI アシスタントが AWS のサービスやリソースとインタラクションするのに役立つように AWS API MCP サーバー をセットアップしたり、最新のドキュメント、コードサンプル、AWS API と CloudFormation リソースのリージョンレベルの可用性に関するナレッジを提供するために AWS Knowledge MCP サーバー をセットアップしたりできます。 今すぐ Nova Multimodal Embeddings を使用してマルチモーダル AI を利用したアプリケーションの構築を開始し、 AWS re:Post for Amazon Bedrock または通常の AWS サポートの連絡先を通じてフィードバックをぜひお寄せください。 – Danilo 原文は こちら です。
みなさん、こんにちは。ソリューションアーキテクトの西村です。 今週も 週刊AWS をお届けします。 いきなりですが、「お祭り」のご案内です!11月5日(水)にコスト最適化の最新アップデートや生成AIを活用したメソッドを学ぶ「 AWS 秋のCost Optimization祭り 2025 」が、そして 11月6日(木) は生成 AI を使ったAWS オブザーバビリティの最新動向を学ぶ「 AWS 秋のオブザーバビリティ祭り 2025 」が開催されます。両日とも AWS Startup Loft Tokyo で 19:00 から開始予定です。 だんだん寒くなってきましたが、秋夜にアツい2日間を過ごしてみるのはいかがでしょうか? AWS のコスト最適化や可観測性に課題をお持ちの方も、ただただ興味があるという方も、ぜひ参加してみてください! それでは、先週の主なアップデートについて振り返っていきましょう。 2025年10月27日週の主要なアップデート 10/27(月) Amazon SageMaker が検索結果に追加の検索コンテキストを追加 Amazon SageMaker Unified Studio の検索機能が大幅に改善されました。これまで検索結果がなぜ表示されるのか分からず、関連性を判断するのに時間がかかっていましたが、今回のアップデートでメタデータのどの部分がクエリにマッチしたかが視覚的に分かるようになりました。名前、説明、用語集、スキーマなどの各フィールドでマッチした箇所がハイライト表示され、説明パネルで詳細も確認できます。これにより、データ発見の効率が向上し、不要なアセットを開かずに関連性を素早く判断できるようになります。詳細は こちらのドキュメントをご参照ください。 Amazon Redshift Serverless が AWS アジアパシフィック (大阪) およびアジアパシフィック (マレーシア) リージョンで利用可能になりました Amazon Redshift Serverless が大阪リージョンとマレーシアリージョンで利用可能になりました。データウェアハウスクラスターの管理が不要で、データ分析を数秒で開始できます。従来は事前にノードタイプやクラスター設定を決める必要がありましたが、今回のサービスでは自動的にキャパシティを調整し、使った分だけの従量課金となります。Query Editor V2 ですぐにクエリを実行でき、データアナリストや開発者が手軽に分析環境を構築できるようになりました。詳細は こちらの機能ページをご参照ください。 Amazon ECS マネージドインスタンス が全ての商用 AWS リージョンで利用可能になりました Amazon ECS マネージドインスタンスが全商用リージョンで利用可能になりました。このサービスは ECS において EC2 を利用時に、EC2 のインフラストラクチャ管理を AWS に任せつつ、全機能へのアクセスを提供するよう設計された、新しいフルマネージドのオプションです。これまで東京リージョンを含む6つのリージョンで利用可能でしたが、今回のアップデートで大阪リージョンを含むすべての商用リージョンで利用することできるようになりました。Amazon ECS マネージドインスタンスの詳細は こちらの Blog 記事をご参照ください。 10/28(火) AWS Resource Explorer が 47 の追加リソースタイプをサポート AWS Resource Explorer が 47 の新しいリソースタイプに対応し、Amazon Bedrock や AWS Shield、AWS Glue などのリソースも検索できるようになりました。これまで個別のサービスコンソールでしか確認できなかったリソースを、Resource Explorer で一括検索できるため、複数のサービスを利用している環境でのリソース管理が大幅に効率化されます。詳細は こちらのドキュメントをご参照ください。 Amazon Nova マルチモーダル埋め込みの発表 Amazon Nova Multimodal Embeddings が一般提供開始されました。これまではテキスト、画像、動画、音声それぞれに専用のモデルが必要でしたが、今回の新モデルでは単一モデルですべてのコンテンツタイプを処理できます。動画アーカイブから複雑な検索クエリでコンテンツを探したり、顧客の質問に基づいて関連商品画像を見つけるなど、クロスモーダルな検索が可能になります。バージニア北部リージョンの Amazon Bedrock で利用できます。詳細は こちらの Blog 記事をご参照ください。 Amazon Kinesis Data Streams が 10 倍大きなレコードサイズをサポート Amazon Kinesis Data Streams のレコードサイズ上限が従来の 1 MiB から 10 MiB に 10 倍拡大されました。これまで大きなデータを扱う際は別の処理パイプラインが必要でしたが、今回のアップデートにより IoT データ分析や AI ワークロードなどで間欠的に発生する大容量データも単一のストリームで処理できるようになり、運用負荷が大幅に軽減されます。詳細は こちらのドキュメントをご参照ください。 10/29(水) Web Grounding: Amazon Nova モデルで正確な AI アプリケーションを構築 Amazon Nova モデルの新機能 Web Grounding が一般提供開始されました。この機能により、Amazon Nova モデルが Web 上の最新情報を自動で取得し、その情報を引用付きで回答に活用するAIアプリケーションの構築が可能となります。従来の AI モデルでは古い学習データに基づく回答や不正確な内容 (ハルシネーション) が課題でしたが、Web Grounding を使うことでリアルタイムの正確な情報に基づいた回答が可能になります。現在 Nova Premier で利用でき、バージニア北部、オハイオ、オレゴンリージョンで提供中です。詳細は こちらの Blog 記事をご参照ください。 Amazon S3 がコピー操作に条件付き書き込み機能を追加 Amazon S3 のコピー操作で条件付き書き込み機能が利用できるようになりました。複数のユーザーが同じオブジェクトに同時アクセスする際、意図しない上書きを防げます。if-match や if-none-match ヘッダーを使用することで、コピー先にオブジェクトが存在するかや内容が変更されているかを事前チェック可能です。全リージョンで追加料金なしで利用でき、従来必要だったクライアント側の調整処理が不要になります。詳細は こちらのドキュメントをご参照ください。 Amazon EBS が EBS ボリュームの追加パフォーマンス監視メトリクスを導入 Amazon EBS で新しい CloudWatch メトリクス VolumeAvgIOPS と VolumeAvgThroughput が追加されました。これにより EBS ボリュームの平均 IOPS と平均スループットを 1 分間隔で監視できるようになり、パフォーマンスのトレンド分析やボトルネックの特定が簡単になります。従来は詳細なパフォーマンス監視が困難でしたが、これらのメトリクスを使ってダッシュボード作成やアラーム設定も可能です。EC2 Nitro インスタンスに接続された全ての EBS ボリュームで無料利用できます。詳細は こちらのドキュメントをご参照ください。 10/30(木) Amazon Managed Service for Prometheus が異常検知機能を追加 Amazon Managed Service for Prometheus にアノマリー検知機能が追加されました。機械学習により時系列データの異常を自動検知し、従来は手動で監視していた異常値を自動で発見できるようになります。システムの性能低下やエラー急増などを早期発見でき、運用負荷を大幅に軽減します。検知結果は Grafana で可視化でき、アラート設定も可能です。詳細は こちらのドキュメントをご参照ください。 Amazon Bedrock AgentCore Browser が Web Bot Auth (プレビュー) で CAPTCHA を削減 Amazon Bedrock AgentCore Browser で Web Bot Auth (プレビュー) が利用可能になりました。この機能により、AI エージェントがウェブサイトを自動操作する際の CAPTCHA による中断を大幅に減らせます。従来は AI エージェントが人間による手動介入を必要とする場面が多くありましたが、Web Bot Auth により AI エージェントが信頼できる存在として認識され、スムーズな自動化ワークフローを実現できます。詳細は こちらの Blog 記事をご参照ください。 AWS Backup が AWS リージョンとアカウント間でのデータベーススナップショットの単一アクションコピー機能を追加 AWS Backup で、データベースのスナップショットを異なるリージョンやアカウントに 1 回の操作でコピーできるようになりました。従来は 2 段階の手順が必要でしたが、この機能により RDS、Aurora、Neptune、DocumentDB のスナップショットを直接コピー可能です。ランサムウェア攻撃やリージョン障害から保護でき、中間コピーのコストも削減されます。詳細は こちらのドキュメントをご参照ください。 Amazon ECS で Linear デプロイメントとCanary デプロイメントの組み込みサポートを開始 Amazon ECS で Linear(線形)と Canary デプロイメント戦略が利用できるようになりました。従来の Blue/Green デプロイメントに加えて、より柔軟なデプロイメント方法が選択可能です。Linear(線形) デプロイメントでは段階的にトラフィックをシフト (例: 10% ずつ) し、各段階で動作確認できます。Canary デプロイメントでは少量のトラフィックを新バージョンに向けて検証後、残りのトラフィックを移行します。CloudWatch アラームと連携した自動ロールバック機能により、問題発生時の迅速な対応が可能です。詳細は こちらのドキュメントをご参照ください。 10/31(金) Amazon VPC IPAM がプレフィックスリストの更新を自動化 Amazon VPC IPAM で、プレフィックスリストの更新を自動化する prefix list resolver (PLR) 機能が追加されました。これまで VPC や サブネット の IP アドレス範囲が変更されるたびに、手動でプレフィックスリストを更新する必要がありましたが、PLR により自動同期が可能になります。ルートテーブルやセキュリティグループで参照するプレフィックスリストが、ビジネスルールに基づいて自動更新されるため、運用負荷が大幅に軽減されます。全リージョンで利用可能です。 詳細はこちらのドキュメントをご参照ください。 AWS 向け Model Context Protocol (MCP) Proxy が一般提供開始 AWS が Model Context Protocol (MCP) Proxy for AWS の一般提供を開始しました。これにより、AI 開発ツール (Amazon Q Developer CLI や Cursor など) から AWS SigV4 認証を使って AWS のリソースに安全にアクセスできるようになります。例えば S3 バケットや RDS テーブルなどの AWS サービスを AI エージェントから直接操作可能です。読み取り専用モードやリトライ機能などの安全機能も搭載しており、開発者は安心して AI ワークフローに AWS サービスを組み込めます。詳細は こちらの GitHub リポジトリをご参照ください。 AWS PrivateLink が AWS サービスのクロスリージョン接続をサポート AWS PrivateLink がクロスリージョン接続に対応しました。これまで Interface VPC エンドポイントは同一リージョン内の AWS サービスにしか接続できませんでしたが、今回のアップデートにより他リージョンの Amazon S3 や Route 53、ECR などに VPC ピアリングやパブリックインターネットを経由せずプライベート接続が可能になります。データレジデンシー要件を満たしつつ、グローバルなプライベートネットワーク構築に活用できます。詳細は こちらのドキュメントをご参照ください。 今年の AWS re:Invent まであと約1ヶ月と迫ってきました。おそらく開催前の 11 月も多くのサービスアップデートが発表されると思いますので、情報の準備体操をお願いします! それでは、また来週! 著者について 西村 忠己(Tadami Nishimura) / @tdmnishi AWS Japan のソリューションアーキテクトとして、小売・消費財業種のお客様を担当しています。データガバナンスの観点から、お客様がデータ活用を効果的に行えるようなデモンストレーションなども多く行っています。好きなサービスは Amazon Aurora と Amazon DataZone です。趣味は筋トレで、自宅に徒歩0分のトレーニングルームを構築して、日々励んでいます。
みなさん、こんにちは。AWS ソリューションアーキテクトの三厨です。11月が始まり、心の中ではre:invent へのカウントダウンを始めました。今年は何が発表されるのでしょうか。。。!? そして毎年おなじみAWS Japanから提供する re:invent 速報を今年も開催いたします。ぜひ こちらのページ より事前登録をお願いいたします。 先日 2つの新しいプランを追加した「 AWS ジャパン生成 AI 実用化推進プログラム 」も非常に多くの申し込みをいただいています。引き続き募集中ですのでよろしくお願いします。 それでは、10 月 6 日週の生成 AI with AWS界隈のニュースを見ていきましょう。先週はBedrock上で利用することができる新モデルやモデル向けツールの発表が多数ありました。 さまざまなニュース AWS 生成 AI 国内事例ブログ: 仰星監査法人様の AWS 生成 AI 活用事例 :株式会社 Sapeet 様支援のもと、Dify を用いて生成 AI アプリを構築し、機微な情報を扱えるセキュアな環境でクライアント情報の収集・環境分析調査時間の 87% 削減を実現 仰星監査法人様は、株式上場 (IPO) 支援業務やファイナンシャルアドバイザリーサービスなどの各種サービスを提供する法人です。監査業務では、クライアント情報の収集や環境分析に多くの時間を要し、業務効率化が課題となっていました。この課題を解決するため、株式会社Sapeet様の支援のもと、Amazon Bedrock や Difyを採用し、生成AIアプリケーションを構築しました。機微な情報を扱えるセキュアな環境を実現しながら、クライアント情報の収集・環境分析調査時間の87%削減という大きな成果を上げています。 AWS 生成 AI 国内事例ブログ: ロジカル・アーツ株式会社様の AWS 生成 AI 事例「コールセンター業務の効率化と品質向上を実現する生成 AI コンタクトセンター」 従来のコールセンター業務では、オペレーターの対応品質のばらつきや、問い合わせ対応の効率化が課題となっていました。これらの課題を解決するため、ロジカル・アーツ株式会社様は Amazon Bedrockを活用した生成AIコンタクトセンターソリューションを構築しました。生成AIにより、リアルタイムでのオペレーター支援、自動応答の生成、通話内容の要約などが可能になり、顧客対応の効率化と品質の均一化を実現しています。特に、生成 AI による会話リアルタイム文字起こしと会話議事録生成機能により、エージェントのアフターコールワーク(ACW)時間が 75% 削減され、従来 20 分かかっていた作業が 5 分で完了できるようになりました。この時間短縮により、電話対応件数が 100% 増加し、従来 20 人で対応していた業務量を 10 人で処理できるようになったことで、人的リソースの最適化を実現しました。今後は、さらなる機能拡張を通じて、コールセンター業務の更なる高度化を目指しています。 ブログ記事「 AWS 金融リファレンスアーキテクチャ日本版 2025 (v1.6) アップデート 」を公開 AWS 金融リファレンスアーキテクチャ日本版がバージョン1.6にアップデートされました。この記事では、金融機関がAWS上でセキュアかつスケーラブルなシステムを構築するためのベストプラクティスとアーキテクチャパターンを紹介しています。今回のアップデートでは、生成AIを活用した金融サービスの実装パターンや、最新のセキュリティ要件への対応方法が追加されています。金融業界特有の規制要件に対応しながら、生成AIを活用する際の参考アーキテクチャとして活用いただけます。 ブログ記事「 エージェントステアリングと MCP を使って Kiro に新しいスキルを教える方法 」を公開 この記事では、Kiro における2つの重要な新機能を紹介しています。1つ目は「エージェントステアリング」で、エージェントの動作をより細かく制御し、特定のタスクに最適化できるようになりました。2つ目は「Model Context Protocol (MCP)」のサポートで、外部ツールやデータソースとの統合が容易になります。記事では、これらの機能を使ってKiroに独自ライブラリを理解させ、連携する例を通じて、エージェント開発の新しいアプローチを解説しています。開発者がAIエージェントをより効果的に活用するための参考になる内容です。 サービスアップデート AWS Marketplace、AIエージェントとツールの価格モデルの柔軟性を提供 AWS Marketplaceは、AIエージェントとツールに対して柔軟な価格モデル、簡素化された認証、効率化されたデプロイメントを提供開始しました。Amazon Bedrock AgentCore Runtimeコンテナに対する契約ベースおよび使用量ベースの価格設定が可能になり、顧客は自社のビジネスモデルに最適な価格体系を選択できます。また、認証プロセスが簡素化され、デプロイメントの複雑さが軽減されることで、AIエージェントソリューションの導入がより容易になります。これにより、ISVはAIエージェントソリューションをより柔軟に提供でき、顧客は自社のニーズに合わせた選択が可能になります。 Amazon Bedrock AgentCore Browser、Web Bot Authで CHAPCHA を削減(プレビュー) Amazon Bedrock AgentCore BrowserがWeb Bot Authをサポートし、AIエージェントが大規模にウェブサイトと対話する際の CHAPCHA による中断を削減できるようになりました(プレビュー)。従来、AIエージェントがウェブサイトにアクセスする際、ボット検出システムによってCHAPCHA認証を求められることが多く、自動化の妨げとなっていました。Akamai Technologies、Cloudflare、HUMAN Securityなどの主要なセキュリティプロバイダーとの連携により、正当なAIエージェントのアクセスを効率的に検証し、CHAPCHAの表示を削減します。これにより、AIエージェントによるウェブ自動化がよりスムーズに実行できるようになります。 TwelveLabs Pegasus 1.2モデルが3つの追加AWSリージョンで利用可能に TwelveLabsの動画理解モデルPegasus 1.2が、米国東部(バージニア北部)、米国西部(オレゴン)、欧州(フランクフルト)の3つの追加AWSリージョンで利用可能になりました。Pegasus 1.2は、動画コンテンツの分析、検索、要約などを高精度で実行できる動画理解AIモデルです。これにより、より多くのリージョンで動画分析ソリューションを構築できるようになり、レイテンシーの削減やデータレジデンシー要件への対応が容易になります。 TwelveLabs Marengo Embed 3.0、Amazon Bedrockで高度な動画理解を実現 TwelveLabsのMarengo Embed 3.0がAmazon Bedrockで利用可能になりました。このモデルは、動画、画像、音声、テキストを単一の表現空間に統合する動画ネイティブマルチモーダル埋め込み機能を提供します。最大4時間の動画と音声コンテンツを処理でき、スポーツ分析の改善や36言語へのグローバル多言語サポートが含まれています。 Amazon Nova Multimodal Embeddingsを発表 Amazon Nova Multimodal Embeddingsの一般提供が開始されました。テキスト、ドキュメント、画像、動画、音声を単一のモデルでサポートする統合埋め込みモデルで、クロスモーダル検索を実現します。最大8Kトークンの入力と最大30秒の動画/音声セグメントをサポートしています。 Stability AI Image Services、Amazon Bedrockで4つの新しい画像編集ツールを追加 Amazon Bedrock で利用することができる Stability AI Image Services に4つの新しい画像編集ツール(Outpaint、Fast Upscale、Conservative Upscale、Creative Upscale)を追加しました。これらのツールにより、クリエイターはワークフローをより細かく制御でき、コンセプトを完成品に効率的に変換できます。  Amazon NovaモデルでWeb Grounding機能が一般提供開始 Amazon Novaモデル向けの新しい組み込みツール「Web Grounding」の一般提供が開始されました。Web Groundingは、公開されている情報を引用付きで取得し、応答のコンテキストとして組み込むことができるツールです。開発者は、現在のリアルタイム情報を使用したRAGソリューションを実装でき、ハルシネーションを削減できます。 Model Context Protocol (MCP) Proxy for AWSが一般提供開始 Model Context Protocol (MCP) Proxy for AWSの一般提供が開始されました。MCPは、AIアプリケーションがコンテキスト情報を標準化された方法で共有するためのオープンプロトコルです。このプロキシにより、MCPクライアントがAWS SigV4認証を使用してリモートのAWSホスト型MCPサーバーに安全に接続できるようになります。Amazon Q Developer CLI、Kiro、Cursorなどの人気のエージェント型AI開発ツールをサポートしており、読み取り専用モードなどの安全制御機能を備えています。これにより、開発者はAIエージェントと外部システムの統合をより安全かつ容易に実現できます。 AWS IoT Greengrass開発者向けAIエージェントコンテキストパックを発表 AWS IoT Greengrass開発者向けのAIエージェントコンテキストパックが発表されました。このコンテキストパックは、AIエージェントがIoT Greengrassの開発タスクを支援するために必要な情報を提供します。開発者は、AIエージェントを活用してIoTアプリケーションの開発、デバッグ、最適化をより効率的に行うことができます。 AWS Serverless MCP Server、AWS Lambda Event Source Mapping (ESM) ツールをサポート AWS Serverless Model Context Protocol (MCP) Serverが、AWS Lambda Event Source Mapping (ESM) 用の専用ツールをサポートするようになりました。これらのツールは、開発者がイベント駆動型サーバーレスアプリケーションのセットアップ、最適化、トラブルシューティングを効率化します。 AI/ML/HPCインスタンスタイプ向け Capacity Reservation Topology API を発表 Capacity Reservation Topology APIが、AI/ML/HPCワークロード向けのインスタンスタイプをサポートしました。このAPIにより、大規模な生成AIモデルのトレーニングや推論に必要な計算リソースを、最適なネットワークトポロジーで予約できます。特に、複数のGPUインスタンス間の高速通信が必要な分散学習において、パフォーマンスの向上が期待できます。 Amazon SageMaker、検索コンテキスト機能を追加 Amazon SageMakerに検索コンテキスト機能が追加されました。この機能により、機械学習モデルの開発過程で、関連する実験、モデル、データセットを効率的に検索し、コンテキストを把握できるようになります。大規模なML開発プロジェクトにおいて、過去の実験結果や関連リソースを素早く見つけることができ、開発効率が向上します。 今週は以上です。それでは、また来週お会いしましょう! 著者について 三厨 航  (Wataru MIKURIYA) AWS Japan のソリューションアーキテクト (SA) として、ヘルスケア・ハイテク製造業のお客様のクラウド活用を技術的な側面・ビジネス的な側面の双方から支援しています。クラウドガバナンスや IaC 分野に興味があり、最近はそれらの分野の生成 AI 応用にも興味があります。最近見たアニメは「光が死んだ夏」です。
2025年10月7日、大規模分散アプリケーションの監視を簡素化する Amazon CloudWatch Application Signals の強化機能を新たに発表できることを嬉しく思います。CloudWatch Application Signals の アプリケーションマップ の改善により、サービスの検出、及びグループ化をサービスの関係性を元に自動的に行える様になりました。また、ビジネスの観点に合わせたカスタムグループもサポートします。最新のサービスデプロイ時間を確認し、 サービスレベル指標 (SLI)違反等の問題に関する自動監査結果を評価できるようになりました。 主な機能と特徴 CloudWatch Application Signals のアプリケーションマップは、サービスレベル目標(SLO)や健全性指標などの運用シグナルを表示します。コンテキストに応じたトラブルシューティングドロワーにより、標準メトリクス、最新のデプロイステータス、実用的なインサイトに即座にアクセスできます。より詳細な分析のために、包括的なトラブルシューティング用にカスタマイズされたアプリケーション固有のダッシュボードにシームレスに移行できます。この統合された体験により、チームは根本原因をより迅速に特定し、平均解決時間を短縮できます。 即座に利用可能 AWSアカウント で Application Signals がすでに有効になっている場合、これらの新機能を使い始めるために追加の設定は必要ありません。Application Signals を有効にするには、 アカウントで Application Signals を有効にする を参照して、Application Signals がサービスを検出するために必要な権限を付与する必要があります。ご自身のアプリケーションに実装する前にサンプルアプリで CloudWatch Application Signals を試す際には、この AWS ドキュメント の手順に従ってください。 根本原因分析 DevOps エンジニアは、アプリケーションマップを使用してインシデント発生時に根本原因を迅速に特定できます。サービスが高いエラー率を示している場合、影響を受けたノードをクリックすると、トラブルシューティングドロワーにメトリクス、最近のデプロイ、依存関係の健全性が表示されます。エンジニアは、メトリクス、最新のデプロイ、SLI違反などの問題に関する監査結果を確認できます。 図1. サービス このトラブルシューティングプロセスをさらに効率化するために、生成AI搭載アシスタントである CloudWatch Investigations がシステムのテレメトリをスキャンし、問題に関連する関連データと提案を即座に表示します。Application Signals は CloudWatch Investigations と統合されており、サービスダッシュボードから 調査 を開始できます。 図2. 調査 CloudWatch Application Signals のアプリケーションマップは、標準グループ化を通じてサービスの探索とトラブルシューティングを簡素化します。デフォルトでは、サービスはダウンストリームの依存関係に基づいて自動的にグループ化されます。 グループの管理 を使用して、ビジネス要件と運用上の優先順位に基づいてサービスを整理するための独自のカスタムグループを定義できます。フィルターは、デプロイの変更、SLI違反、または Amazon Elastic Kubernetes Service(Amazon EKS)、Amazon Elastic Container Service(Amazon ECS)、AWS Lambda などのコンピューティングプラットフォームに焦点を当てるのに役立ちます。「View insights」機能は、サービスの健全性、変更履歴、メトリクスを表示します。ダッシュボードには、リソース分析と属性フィルタリングのビューが含まれており、根本原因分析を複数の観点から開始することができます。 図3. アプリケーションマップ まとめ このリリースにより、AWS上の大規模分散アプリケーションを監視およびトラブルシューティングできるようになります。サービスとアプリケーションの依存関係を自動的にグループ化し、コンテキストに応じた運用インサイトを提供することで、カスタムダッシュボードの維持負担を排除し、運用メンテナンス時間を削減します。アプリケーションの複雑さが増し続ける中、AWSのアプリケーション中心のオブザーバビリティアプローチは、チームが大規模で信頼性が高くパフォーマンスの高いサービスを維持するために必要な可視性とツールを提供します。 それでは、探索を始めましょう。 バーチャルツアー :Application Signals がアプリケーションをどのように可視化し、トラブルシューティングを改善し、監視を変革するかを直接体験したいですか? 独自の環境をセットアップすることなく、この インタラクティブ なバーチャルツアーをご利用ください。 デモのスケジュール :AWSアカウントチームに連絡して、アプリケーション監視体験をどのように変革できるかをご確認ください。 AWSオブザーバビリティを始める :包括的な監視を実装してオブザーバビリティの基盤を強化し、効果的な分析に必要なデータを確実にキャプチャできるようにします。 オブザーバビリティワークショップ :AWSがアプリケーションのオブザーバビリティを実現するために提供する幅広いツールセットのハンズオン体験を探索してください。 TAGS: Amazon CloudWatch , Application Performance Monitoring , observability Arun Chandapillai Arun Chandapillaiは、ダイバーシティ&インクルージョンのチャンピオンであるシニアクラウドアーキテクトです。彼は、ビジネスファーストのクラウド導入戦略を通じてお客様のIT近代化を加速し、クラウドでアプリケーションとインフラストラクチャを成功裏に構築、デプロイ、管理することを支援することに情熱を注いでいます。Arunは自動車愛好家であり、熱心なスピーカーであり、「与えたものが(返って)得られる」と信じる慈善家です。 Siva Guruvareddiar Siva Guruvareddiarは、AWSのシニアソリューションアーキテクトであり、お客様が高可用性システムを設計することを支援することに情熱を注いでいます。彼は、マイクロサービス、コンテナ化、可観測性、サービスメッシュ領域、およびクラウド移行を使用してプラットフォームインフラストラクチャと内部アーキテクチャをモダナイズすることにより、クラウドネイティブ導入の取り組みを加速することを支援しています。LinkedIn: linkedin.com/in/sguruvar Mitun Lahiri CloudWatch Application Signals のソフトウェア開発マネージャー 本記事は、 Amazon CloudWatch Application Signals new enhancements for application monitoring を翻訳したものです。翻訳は Technical Account Manager の 日平 が担当しました。
AWS X-Ray 用の SDK と Daemon は2026年2月25日にメンテナンスモードに入り、2027年2月25日にサポート終了となります。OpenTelemetry ベースの計装ソリューションへ移行することで、AWS 内でアプリケーションのトレースを継続して生成できます。 AWS X-Ray 用の X-Ray SDK と Daemon を使用している既存のアプリケーションは、意図された通りに機能し続けます。ただし、2026年2月25日から2027年2月25日の間、X-Ray SDK とDaemon は重要なバグ修正とセキュリティアップデートのみ対応され、新機能をサポートするための更新は行われません。例えば、SDK は追加のライブラリ計装や既存のライブラリ計装の機能強化は対応されません。 以下の表は、X-Ray SDK と Daemon のライフサイクルの各フェーズにおけるサポートレベルの概要を示しています。 SDK ライフサイクルフェーズ 開始日 終了日 サポートレベル 一般提供 N/A 2026年2月25日 この段階では、SDK と Daemon は完全にサポートされます。AWSは、バグ修正とセキュリティ修正を含む定期的な SDK / Daemon リリースを提供します。 メンテナンスモード 2026年2月25日 2027年2月25日 AWS は、重要なバグ修正とセキュリティ問題への対応を目的とした SDK と Daemon のリリースのみを行います。SDK / Daemon は新機能の拡張を受け取ることはありません。 サポート終了 2027年2月25日 N/A SDK と Daemon は、今後アップデートやリリースを受け取ることはありません。以前に公開されたリリースは、パブリックパッケージマネージャーを通じて引き続き利用可能であり、コードは GitHub 上に残ります。 AWS X-Ray は、アプリケーショントレースとオブザーバビリティの主要な計装標準として OpenTelemetry に移行しています。アプリケーションからトレースを生成して AWS X-Ray に送信するために、OpenTelemetry ベースの計装ソリューションへの移行をお勧めします。コンソールでの体験は従来と同じままです。 OpenTelemetry は、トレーシング計装とオブザーバビリティのための業界全体のオープンソース標準であり、IT チームにテレメトリデータの収集とルーティングのための標準化されたプロトコルとツールを提供します。メトリクス、ログ、トレースなどのアプリケーションテレメトリデータを計装、生成、収集し、分析と洞察のためにモニタリングプラットフォームにエクスポートするための統一されたフォーマットを提供します。これにより、より迅速な機能開発と、業界全体で一貫したより広範なツールと統合のセットが実現されます。OpenTelemetry 計装ソリューションは、フレームワークとライブラリの計装、より多くの言語サポート、およびゼロコード計装機能に対してより幅広いサポートを提供します。 移行を支援するために、AWS X-Ray ドキュメントで移行ガイダンスと例を見つけることができます。 https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-migration.html Amazon CloudWatch において、AWS Distro for OpenTelemetry (ADOT) やネイティブな OpenTelemetry に移行すると、アプリケーションヘルスモニタリングの強化のための CloudWatch Application Signals や、アプリケーションのトランザクションスパンへの完全な可視性を提供する Transaction Search などの強力なツールにアクセスできるようになります。 OpenTelemetryについてさらに学び、OpenTelemetry を活用する AWS CloudWatch のより多くのソフトウェアソリューションを活用するには、以下のリソースを参照してください。 Amazon CloudWatch with OpenTelemetry では、OpenTelemetry を使用してアプリケーションで CloudWatch を使用する方法を説明し、 Application Signals や Transaction Search などの強力なツールを有効にする方法を説明しています。 X-Ray 計測から OpenTelemetry 計測への移行 では、 AWS Distro for OpenTelemetry (ADOT) または OpenTelemetry SDK の使用に切り替える方法の例を説明しています。 OpenTelemetry の公式ドキュメントでは、OpenTelemetry の使用に関するすべてのノウハウを説明しています。 フィードバック サポートが必要な場合やフィードバックがある場合は、AWS サポートまでお問い合わせください。 https://aws.amazon.com/jp/contact-us/ また、GitHub ( Java , Python , JavaScript , .NET , Go , Ruby ) でディスカッションやissueを開くこともできます。AWS X-Ray SDKs と Daemon for AWS X-Ray をご利用いただき、ありがとうございました。 Jonathan Lee Jonathan Leeは、AWS の AWS Application Observability のソフトウェア開発エンジニアです。彼は、アップストリームと AWS Distro of OpenTelemetry の両方でオープンソースに貢献しています。 Naina Thangaraj Naina Thangaraj は AWS Batch のシニアプロダクトマネージャーであり、AWS の Advanced Computing and Simulation 組織で働いています。彼女のバックグラウンドはバイオインフォマティクスで、AWS に入社する前は、ヘルスケアとライフサイエンス業界で働いていました。 本記事は、 Announcing AWS X-Ray SDKs/Daemon End-of-Support and OpenTelemetry Migration を翻訳したものです。翻訳は Technical Account Manager の 日平 が担当しました。
※ この投稿はお客様に寄稿いただいた記事です。 本稿では株式会社 NTTドコモ(以下、ドコモ)の主要な Web サービス提供基盤である『 POPLAR 』において、 Amazon Q Developer 活用により開発効率向上を実現した取り組みについて、全 2 回に分けてご紹介します。 第1回:NTT ドコモの Web サービス基盤『 POPLAR 』開発における Amazon Q Developer 活用 (本記事) 第2回: Amazon Q Developer 活用をプロジェクト全体へ拡げた取り組み 1.はじめに 『 POPLAR 』は、ドコモの主要Webサービスを提供する基盤であり、現在、30以上の Web サービスを提供しています。 AWS を利用することで、各種 Web サービスをユーザトラヒック変動に柔軟に対応可能なアーキテクチャとして構築しました。さらに、新規 Web サービス提供時の開発期間短縮を実現しています。 また、アプリケーションのアーキテクチャを AWS Lambda や AWS Fargate といったマネージドサービスを活用したアーキテクチャへ進化させることで、開発・運用の最適化を進めています。 さらに、複数の Web サービスを同時並行で短期間に開発・改善するため、マネージドサービスの活用に加え、アーキテクチャモデルの標準化にも取り組んでいます。アーキテクチャモデルの標準化には AWS CDK を活用し、類似機能ごとにアーキテクチャをモデル化しています。複数の開発案件でアーキテクチャモデルを共用することで、開発効率の大幅な向上を実現してきました。 また、我々は AWS が提供するソフトウェア開発生成 AI アシスタントである Amazon Q Developer に注目し、プロジェクト全体で Amazon Q Developer を開発者の教師役として有効活用するべく日々取り組んでいます。 図1. POPLAR アーキテクチャ標準化の取り組み 2.開発における課題 移り変わりの激しい市場動向に対応するために、ドコモが提供する各種 Web サービスにおいても、”速さ”と”品質”を維持したサービス改善が要求されます。POPLAR では、標準化したアーキテクチャモデルを用いて、複数の Web サービスに対して短期間且つ同時並行で機能開発を進めています。 一方で、サービス改善に関する開発を進める過程において、以下の様な課題を抱えています。 課題① 開発の大部分を占める既存機能の改修案件において、既存機能の知見やノウハウの有無が開発生産性に与える影響が大きく、既存機能の知見及びノウハウの習得は開発遂行の上で必要条件となります。一方で、5 年以上の基盤運用実績から提供機能数も多くなり、既存機能の知見及びノウハウ継承には、大きな労力が掛かります。 課題② 開発要員のローテーションの際には、交代要員の立ち上がり期間を十分に確保しつつ、既存開発者からの様々な支援を必要とします。一例をあげると、交代要員が本プロジェクトの開発に必要な技術的スキル、既存機能の知見及びノウハウを習得して貰うために、一定期間、既存開発要員が教育へ大きな労力とを掛ける必要があります。 課題③ 障害時にサービス影響のある機能も担っており、開発において相応の品質を求められます。開発者にはアプリケーションからインフラまで幅広い技術的知識が必要となりますが、その技術的要件を全て満たした開発者は市場でも数少なく、大半の開発者は開発遂行にあたって技術的知識の不足部分に対するプロジェクトからの技術的支援を必要とします。 これらの課題を解決し、各種サービスからの改善要求を満たした開発を安定的に実施するためには、以下の仕組みが必要となります。 既存機能およびノウハウについて、労力(時間)をかけずに効率的に継承できる仕組み 不足する技術スキルを短期間で習得できるよう支援・補完する仕組み これらの課題を解決するために、我々は、AWS が提供するソフトウェア開発生成 AI アシスタントである Amazon Q Developer を開発者の教師役としてプロジェクト全体で活用しています。 3. Amazon Q Developerを活用した開発の取り組み POPLAR の開発プロジェクトにおいては、全体で 50 名以上の開発者が携わっています。これらの開発者は Amazon Q Developer Pro サブスクリプションを日常的に利用しています。さらに、プロジェクトに携わる開発者が Amazon Q Developer を有効活用するために、環境準備を支援する設定ガイド、開発時の Amazon Q Developer を活用する方法をまとめたガイドラインを整備する等、POPLAR の開発プロジェクト全体で利用促進を図りました。 また、 Amazon Q Developer から有益な支援を得るために、以下のようなコンテクストを Amazon Q Developer に与える工夫も実施しています。 今までの開発で積み上げてきた既存ソースコード  標準化したアーキテクチャモデル  開発ルールをまとめた設定ファイル AWS が提供する MCP サーバ これらの営みにより、標準化したアーキテクチャモデル等、POPLAR の既存の仕組みや AWSド キュメントに記載された仕様を踏まえた Amazon Q Developer からの支援を実現しています。 図2. Amazon Q Developer の利用条件・環境について 4. Amazon Q Developer による開発効率向上への寄与 Amazon Q Developer の活用は、学習用途で開発者がノウハウや技術的知識を吸収するだけに留まりません。 開発者の教師役として、 Amazon Q Developer に開発ドキュメントを読み込んで貰い仕様調査に協力して貰う、 Amazon Q Developer を壁打ち役として仕様検討を手伝って貰う、または、 Amazon Q Developer に改修コードを提案して貰う等、各開発工程においても幅広く支援を受けることが可能です。 既存機能の改修を前提とした開発において Amazon Q Developer を最大限活用することで、影響調査、設計及び設計とコーディング(自動コーディング)といった開発工程において生産性の向上が見込めることも確認しました。 特に、既存機能の改修においては、既存ソースコードを Amazon Q Developer に対するインプット情報として活用することにより、 Amazon Q Developer との最小限のやり取りで高い精度のアウトプットが得ることができ、 Amazon Q Developer を活用しない従来の開発手法と比べて各開発工程において開発品質向上及び開発期間の短縮を確認できています。 また、開発プロジェクトへの所属期間が短く、既存機能への知見も多くない開発要員が Amazon Q Developer を活用することで、習熟期間の短縮、開発期間の短縮及び開発品質の向上等の高い支援効果が得られることも確認しました。 5.まとめ 第一回の事例では、ドコモの主要な Web サービス提供基盤である『 POPLAR 』における Amazon Q Developer の活用方法及び開発者の教師役として Amazon Q Developer を活用することの有用性についてご紹介しました。 開発ノウハウの継承や開発生産性向上に取り組む皆様の参考にしていただければ幸いです。 次回は以下をご紹介します。 Amazon Q Developer 活用をプロジェクト全体へ拡げた取り組み 著者について 株式会社 NTTドコモ 情報システム部 デジタルデザイン担当 担当部長 深谷 治男 ( Haruo Fukaya ) 担当課長 小柴 辰久 ( Tatsuhisa Koshiba ) 主査 川口 晃平 ( Kouhei Kawaguchi )  
はじめに AWS では、データコラボレーションサービスの提供を超えて、様々な業界の企業間でのデータコラボレーションを加速できるような機会創出にも力をいれています。2025 年 9 月、スマートニュース/AWS共催で広告・マーケティング領域におけるデータコラボレーションワークショップを開催しましたので、ワークショップの開催背景と当日の内容をご紹介いたします。 スマートニュース株式会社が提供する「SmartNews」では、日本最大級のユーザー数を誇るニュースアプリとして多様なユーザーの興味関心データを保有している他、「SmartNews Ads」の広告パフォーマンスデータも保有しています。一方で、データコラボレーションの実現には、セキュリティやプライバシー保護、異業種間でのデータ活用ノウハウの共有という課題がありました。 これらの課題に対応するため、AWSとスマートニュース は共同でワークショップを企画しました。「小売・EC」「メディア」「データ・リサーチ」「航空」等の業界 6 社からお集まりいただき、データコラボレーションのユースケースやAWS Clean Rooms を活用したセキュアなデータ連携の方法について議論しました。さらに、各社が保有するデータ資産を活かした具体的なアクションプランを策定できる場を提供することを目指しました。 開催概要 アジェンダ: 開会のご挨拶 / 参加企業ご紹介 SmartNews のソリューションのご紹介 AWS コラボレーションテクノロジーのご紹介 テーブル別ディスカッション Next Step のご案内 / 閉会のご挨拶 懇親会 前半をセミナー、後半をディスカッションと分けて開催いたしました。後半のディスカッションでは、各企業ごとにデータコラボレーションする際の協業内容について議論を行いました。 データコラボレーションの基本 データコラボレーションとは 本ワークショップのメインテーマであるデータコラボレーションについてご説明します。データコラボレーションとは複数の組織が保有するデータを安全かつ効果的に共有・統合・分析し、単独では得られない洞察や価値を生み出す取り組みです。例えば、メディア企業と小売業が匿名化された顧客データをコラボレーションすることで、より精緻なマーケティング戦略の立案や広告効果測定の高度化が可能になります。重要なのは、各組織のデータプライバシーとセキュリティを維持しながら、必要な情報のみを共有することです。これにより、安全性を確保しつつデータの価値を最大化することができます。 なぜ今データコラボレーションが注目されているのか データコラボレーションの注目が高まっている背景には、デジタル化の加速、消費者行動の複雑化、個人情報を含むデータの保護に関する規制環境の整備があります。さらに 1st party data (自社で直接収集したデータ) の重要性が増していることも大きな要因です。サードパーティ Cookie の廃止や個人情報保護の厳格化に伴い、企業は自社の顧客データをより効果的に活用し、同時に他社のデータと安全に連携する必要性が高まっています。このデータ活用と連携が、企業の競争優位性を生み出す鍵となっています。実際、多くのグローバル企業がデータコラボレーション強化を推進しており、日本においても今後のビジネス戦略において重要な役割を果たすことが予想されます。   各セッションのハイライト SmartNews のソリューションのご紹介 スマートニュース株式会社 執行役員 日本広告事業責任者 兼 社長室長 西出 拓氏 スマートニュース 西出氏より、SmartNews の広告ソリューションと今後のデータ活用の展望についてご紹介いただきました。SmartNews は日本最大級のユーザー数を誇るニュースアプリとして、老若男女・地域問わず日常利用されており、「SmartNews Ads」についてもリーチから、想起、理解、利用意向、初回/継続購買までフルファネルでご提供する広告ソリューションを展開しています。 データソリューションの領域では、AWS Clean Roomsを活用して、広告パフォーマンスデータに加えて、ユーザー属性や閲読行動を活用したソリューションを開発中である旨を説明されました。今回のワークショップを通じて、参加企業の皆様との協業により、ブランドリフト調査や効果測定などの領域で新たな価値創造を目指していきたいとのことでした。 AWS のコラボレーションテクノロジー アマゾン ウェブ サービス ジャパン 合同会社 シニアソリューションアーキテクト 石見和也 AWS  Japan 石見より、データコラボレーションを AWS 上で実現する方法についてご説明を行いました。まずはデータコラボレーションを支える AWS Clean Rooms というマネージドサービスについてご紹介しました。主な特徴として、セキュアなデータ共有、SQL を用いた柔軟な分析環境、実行する SQL の制御機能、緻密なアクセス制御、大規模データセットに対するスケーラビリティがあります。このサービスにより、企業は自社データを保護しつつ、連携先企業とのデータコラボレーションを実現し、新たなビジネス機会を創出できます。これに加えて新機能で企業間で類似セグメントの作成を支援する AWS Clean Rooms ML、名寄せのサービスである AWS Entity Resolution のご説明をいたしました。 テーブル別ディスカッション ワークショップのメインとなったテーブル別ディスカッションでは、具体的なデータコラボレーションのユースケースについて活発な議論が交わされました。参加企業の皆様には事前に各社のデータ資産や活用課題を伺った上で、実践的なユースケースを準備したことで、より深い議論が可能となりました。 あるテーブルでは、意識データとニュース閲覧データを組み合わせた広告セグメントの説明性向上について話し合われ、ブランドリフト層の深いインサイト可視化やインターゲット率の証明に注目が集まりました。別のテーブルでは、会員データや購買データとの連携による効果測定の高度化が議論され、データクリーンルームを活用した安全なデータ突合の可能性が探られました。さらに別のテーブルでは、位置情報データを活用した来店計測やブランドリフト調査について、具体的な協業の進め方が検討されました。 お客様の声 本ワークショップは、広告・マーケティング領域におけるデータコラボレーションの可能性を探る貴重な機会となりました。参加企業の皆様からは、「昨今の潮流を踏まえて何ができるか色々議論できて良い機会だった」「ビジネスの協業の可能性を、テクノロジーの観点でも裏付けしながら議論を進めることができた」「具体的な提案打ち合わせではなく、複数社でオープンディスカッションができる機会というのが新鮮で予想していなかった協業の可能性が見えた」といった前向きな声を多数いただきました。ワークショップ後も、各社との具体的な協業に向けた議論が継続しており、データコラボレーションに対する高い期待が伺えます。 おわりに 本ワークショップを通じて、データコラボレーションによる新たな広告・マーケティングソリューション創出の大きな可能性と、参加企業の皆様の熱意を肌で感じることができました。ここに改めて、ご参加いただいた企業の皆様、そして共催である スマートニュース社の皆様に心より感謝申し上げます。AWS は、今後もこの様なデータコラボレーションを推進する取り組みのご支援や、皆様に役立つ情報をセミナーやブログで発信していきます。どうぞよろしくお願い致します。 本ブログは、ソリューションアーキテクト石見が担当しました。
本ブログは、 仰星監査法人 と 株式会社 Sapeet 、 Amazon Web Services Japan が共同で執筆しました。 仰星監査法人 (以下:仰星) は、1990 年設立の監査・保証業務をはじめとする株式上場 (IPO) 支援業務やファイナンシャルアドバイザリーサービスなどの各種サービスを提供する法人です。本ブログでは株式会社 Sapeet (以下:Sapeet) が開発・導入を支援した、仰星での社内生成 AI 基盤の概要とその中でどのように AWS のサービス群が活用されているかを紹介します。 課題と背景 仰星では監査業界の構造変化が日々すすむなか、監査現場におけるチームメンバーの支援やクライアントからの複雑な要求に高いレベルで応えていくために、業務効率化が急務となっていました。その生産性向上を目指した取り組みを始めるにあたり、生成 AI の活用が候補となりましたが、導入に向けていくつかの課題が浮上しました。主な課題は以下の通りとなります。 機密性の高い情報やデータを、セキュリティ面で万全な環境下で取り扱うこと 投資対効果を重視し、特定の業務領域に焦点を絞って効率的に導入・活用すること スピード感を持って検証を行い、その成果を迅速に実運用へとつなげること これらの課題に対し、より実用的で効果的な生成 AI 活用の基盤づくりが求められていました。 ソリューションの概要 そのような課題がある状況で生成 AI の活用検証にあたり、 Dify を用いた生成 AI 環境を AWS 上で構築いただくこととなりました。Sapeet が開発パートナーとして、以下の要素を考慮し、Amazon Bedrock や Dify といったサービスを選定・活用しました。 すでに Amazon WorkSpaces をはじめ AWS の利用が進んでいたこと AWS のサービス群の幅広さによるアプリケーション開発の自由度と効率性の両立 機微なデータをセキュアな環境内で取り扱えること Dify を活用し、PoC フェーズでの高速開発からセキュアな環境でのセルフホストまで一貫して実現できること 今回の生成 AI アプリケーションでは、主に監査業務における固有リスク要因の洗い出し作業を効率化することを目的としています。これまで Web での情報収集・記事チェック・資料保存・アウトプット作成などの単純ながらも時間を要する作業を生成 AI 側で対応することで、時間短縮だけでなく、人間では見落としがちな新しい視点も獲得することに成功しています。 図 1: 社内業務担当者の生成 AI アプリケーション利用イメージ 今回の開発においては、Dify を用いることでノーコード / ローコードで生成 AI のワークフローを作成し、短時間でプロジェクトのスモールスタートを切ることができました。 また、Amazon WorkSpaces を利用することで重要な社内データをインターネットから隔離され閉域で安全に AWS に展開された VDI 環境に接続・利用を限定することができ、セキュアな環境での作業を可能としています。 Amazon Bedrock のモデルでは、データをモデルの再学習に利用せず、サードパーティにも渡されないことを明言していることも安心して利用できる材料のひとつとなっています。 以下の図 2 が仰星監査法人 生成 AI 基盤のアーキテクチャーの概要になります。 図 2: 仰星監査法人 生成 AI 基盤のシステム構成 開発におけるユーザー企業と開発企業の連携の重要性 今回の開発において、開発をリードした Sapeet が仰星の実際の業務プロセスを理解し、ワークショップでも現場の公認会計士を巻き込んでプロジェクトを遂行したことが、実ユーザーが使いやすいアプリケーションを作るにあたっての成功要因のひとつとなりました。 導入までの 5 か月間の期間の使い方として、最初の1か月で監査業務の理解とデータ確認を仰星・Sapeet 両社で行ったのち、MVP 作成後は週次でアップデートを重ねていきました。特にプロンプトの作りこみについては実業務の担当者に協力を得ながら専門知識を反映させつつ共同開発をしたことで業務に利活用できるレベルに精度を上昇させることに成功しています。今回の開発をリードした Sapeet の村上 AI ソリューション事業部プロジェクトマネージャーは以下のように語ります。「お客様から言われたことをただ実装して結果だけ見てもらうのみでは、真に業務活用に足りうる生成AIアプリケーションを作ることはできないと考えています。業務内容を我々自身が深い部分まで理解する姿勢と、仰星様にも生成 AI で実現している中身を理解してもらった上で意見をいただくことで、お互いが持っているものを出し合って一緒に作り上げることができました」 導入効果と今後の展開 5 か月の開発を経て導入された今回の生成 AI アプリケーションを活用することで、当該作業時間を 87% 削減することに成功し、投資に対する回収の期間もすでに見通しが立つ状況となりました。また、生成 AI 側では情報収集・分析を行い、人間で最終的な監査リスクの判断を行うことで役割分担を明確化しつつ、網羅的な分析が可能になったと仰星の金子理事・情報管理室長は語ります。「生成AIを用いることで、これまで以上に情報量が圧倒的に増加し、新たな視点でのリスク要因発見にもつながっています。今後、暗黙知を形式知化していくための道筋が見えてきました。」 また、導入後のアンケートにおいて、スタッフからパートナーまで職位に関係なく「生成 AI 活用による業務効率化の可能性が高い」という評価を得られたことも今後の活用領域拡大に向けてポジティブな判断材料となりました。 現在仰星では今回の会計士業務に関連する生成AI基盤だけでなく、各種 SaaS サービスも用いた AI の活用を推進しています。「クラウドの良さであるスピード感を生かせたと感じています。社内での生成 AI に対する理解と親近感も向上したという手ごたえも感じているので、さらにその活用範囲を高める動きをしていきます」と将来のさらなる社内生成 AI 推進に高い意欲をのぞかせています。 今後の展開としては、この生成 AI アプリケーションを通じて組織にナレッジが蓄積し、集合知として更なる監査業務の効率化・品質向上に活用することで、組織全体の「ナレッジ循環」の仕組みを構築していきます。 まとめ 本ブログでは 、仰星で導入したクライアント情報収集・環境分析アプリの紹介とその中で Dify や Amazon Bedrock、Amazon WorkSpaces がどのように活用されているかを紹介しました。 これらを利用することによってみなさまの AWS 上のワークロードに生成 AI を活用した機能を容易に組み込めます。本ブログが生成 AI を活用されている皆様の参考になりましたら幸いです。
「金融リファレンスアーキテクチャ日本版」は、金融システムで求められるセキュリティと可用性に関するベストプラクティスを提供するフレームワークとして 2022 年 10 月に正式版として発表し、多くのお客様にご利用いただいております。この度、皆様からいただいたご意見およびクラウド活用の広がりを踏まえて新たなコンテンツを追加した 2025版 (Version 1.6) を公開しました。 2025版(v1.6)の全体像 AWS 金融リファレンスアーキテクチャ日本版の最新フレームワークは下図の通りです。 新たにサイバーレジリエンスとマイクロサービスアプリケーションに関するワークロードを追加しました。既存コンテンツについては、勘定系ワークロードのレジリエンス機能の強化やコンタクトセンター(顧客チャネル)ワークロードへの生成 AI 機能の追加を行っています。加えて、特定の金融ユースケースでのアーキテクチャ上の重要ポイントを詳細解説する“ユーザ事例”コンテンツを新設しました。2025年中にさらに生成AI ワークロードの追加、Well-Architected Framework の FSI Lens for FISC の更改、保険ユーザ事例の追加を予定しています。ご期待ください。 以下はアップデートの概要です。詳細は各ワークロードの解説ブログをご確認ください。 2025版(v1.6)のアップデート詳細 サイバーレジリエンスワークロードを新規公開 サイバー攻撃に対しては、攻撃を受けても迅速にシステムを復旧し事業を継続する ”サイバーイベントリカバリ” が重要です。そのために準備しておくためのリファレンスアーキテクチャーを公開しました。詳細は解説ブログ: サイバーレジリエンス:サイバーイベントリカバリの実装 をご覧ください。 イベントドリブンな金融モダンアプリケーション実装を公開 高い可用性とスケーラビリティを求められるミッションクリティカルなアプリケーションをモダンなマイクロサービスアーキテクチャで実装する事例が増えています。今回、モバイルバンキング題材にしたリファレンスアーキテクチャーとサンプルアプリケーションを公開しました。詳細は解説ブログ: イベントドリブンな金融モダンアプリケーション実装を公開 をご覧ください。 ミッションクリティカルワークロード(勘定系) でマルチリージョンの回復力と可観測性を強化 ミッションクリティカルなオンライントランザクションシステムのリファレンスである勘定系システムに大きく3つの Update を行いました。 外形監視と組み合わせたリージョン切り替え/切り戻しの完全自動化 Amazon CloudWatch Application Signals によるマイクロサービスのオブザーバビリティ強化 Amazon Aurora DSQL による ディザスタリカバリ における RTO を短縮する実装例 詳細は解説ブログ: レジリエンスライフサイクルで進化する – ミッションクリティカル[勘定系] ワークロード をご覧ください。 コンタクトセンター (顧客チャネル) ワークロードに生成 AI 機能を追加 Amazon Connect によるコンタクトセンターのリファレンスアーキテクチャに、通話のライブ文字起こし機能、生成 AI を利用した通話チェックと要約機能を追加しました。他にも、ウェブ通話、Amazon Q in Connect の AI アシスタント (下図参照)を追加し、あらゆるチャネルでのカスタマーエクスペリエンスを向上策として使っていただく事ができます。 こちら からすぐにデプロイして試していただく事が出来ます。 金融ユーザ事例の解説コンテンツ を新設 AWS を実際にご利用いただいている国内外の金融機関のお客様事例をベースに、より具体的なシステムアーキテクチャを紹介しています。こちらでは、業務およびシステム特性に最適化したアーキテクチャとその考慮ポイントに重点をおいて解説しています。 [証券] 資本市場 Order Management System (OMS) [決済] クレジットカード イシュアシステム おわりに 金融リファレンスアーキテクチャ日本版の全てのコンテンツは GitHub リポジトリから利用できます。フィードバックや質問については Issue として GitHub サイト上に登録いただけますし、執筆者に直接ご連絡頂いても構いません。ご利用される皆様からのニーズや意見に基づいて今後の改善方針を決めていきたいと考えておりますので、ご質問やフィードバックをお待ちしております。 本ブログ記事は、AWS のソリューションアーキテクトである 深森 広英 が執筆いたしました。
「 金融リファレンスアーキテクチャ日本版 」は、金融で求められるセキュリティと可用性に関するベストプラクティスを提供するフレームワークとして 2022 年 10 月に正式版として発表し、多くのお客様にご利用いただいております。この度、モダンアーキテクチャのサンプルとして、オンラインバンキングアプリケーションのユースケースを公開しました。本ブログ記事では、オンラインバンキングアプリケーションのユースケースを解説いたします。 ユースケースの紹介 本ユースケースは、モバイルバンキングアプリケーションを題材として、口座開設、残高照会、振込処理の主要機能を各種業務を取り扱うシステムサンプルを提供しています。 今回のリファレンスアーキテクチャでは、分散システムにおける整合性担保の観点で、イベントソーシングパターンを採用しています。金融業界を対象に作成していますが、それに限らず様々な業界のシステムに応用できる汎用的なものとなっています。 金融システムにおけるマイクロサービスアーキテクチャのメリット マイクロサービスアーキテクチャでは各サービスが独立して動作するため、一つのサービスで障害が発生しても他のサービスは正常に稼働し続けることができます。これにより障害の影響範囲を局所化でき、システム全体の可用性を向上させることが可能になります。また、負荷の高いサービスのみを個別にスケールアウトできるため、リソースの効率的な活用とコスト最適化を実現できます。 マイクロサービスとモノリシックなシステムにはそれぞれ異なる特性があり、レジリエンスの観点での詳細な比較や考慮すべきポイントについては、 金融システムにおけるマイクロサービスアーキテクチャのメリット をご参照ください。 リファレンスアーキテクチャの解説 口座開設、振込の二つの処理は非同期処理として利用者からのリクエストを受け付けたのち、AWS Lambda、Amazon Simple Queue Service (Amazon SQS)、Amazon EventBridge を使用し、状態変更を Amazon DynamoDB に変更履歴(監査証跡)イベントとして保管するイベントソーシングの形で実装されています。勘定系 API を呼び出す際の一貫性を担保するため、トランザクションアウトボックスを採用し、AWS Lambda の内部には再実行の仕組みを組み込んでいます。 本リファレンスアーキテクチャでは、以下 三つのスタックに分けて実装されています。 OnlineBankingAppFrontendStack: React SPA によるフロントエンド OnlineBankingAppBackendStack: AWS Lambda + Amazon DynamoDB によるマイクロサービス群 TemporaryCoreBankingSystemStack: 勘定系システムの API を擬似的に作成したバンキングシステム 詳細なアーキテクチャ構成、提供 API、実装の詳細については、 リファレンスアーキテクチャの解説 をご参照ください。 イベントソーシングとは イベ ントソーシングとは、アプリケーションの状態を一連のイベントとして保存するアーキテクチャパターンです。最新状態のみを保持する手法とは異なり、すべての変更をイベントとして記録することで、完全な監査証跡を提供します。金融サービスにおいては、規制遵守と透明性の要件を満たすために特に有効で、取引履歴の完全な追跡が可能になります。これにより例えばアプリケーションの問題による不整合や、インフラ障害が起きた際に単なるデータのバックアップではなく、システム全体の状態を正確に復元することが可能にします。 加えて、Command Query Responsibility Segregation(CQRS)の設計パターンと組み合わせることで、スケーラビリティの向上を容易にします。CQRS とはコマンド(書き込み)とクエリ(読み取り)の責任を分離するパターンで、それぞれの処理を最適化できる利点があります。更新用と参照用で異なるデータモデルとデータストアを使用することで読み書きを分離し、参照処理に特化したデータ構造により高速な検索が可能になります。 イベントソーシング、CQRS 以外にも、Saga パターン、トランザクションアウトボックスパターンなど、分散システムにおける様々なデザインパターンについては、 分散システムにおけるデザインパターン をご参照ください。 おわりに 金融リファレンスアーキテクチャ日本版の全てのコンテンツとコードは、パブリックの GitHub リポジトリ から参照でき、Git リポジトリとしてローカル環境にクローンすることもできます。フィードバックや質問については  Issue として GitHub サイト上に登録いただけます。また、執筆者に直接ご連絡頂いても構いません。ご利用される皆様からのニーズや意見に基づいて今後の改善方針を決めていきたいと考えておりますので、ご質問やフィードバックをお待ちしております。 本ブログ記事は、AWS のソリューションアーキテクトである根本裕規、山下翔平、池田優が執筆いたしました。
Amazon Redshift は、完全マネージド型のペタバイト規模のクラウドデータウェアハウスサービスです。Amazon Redshift を使用することで、ペタバイト規模の構造化データおよび半構造化データに対して複雑なクエリを迅速かつ効率的に実行でき、他の AWS サービスとシームレスに統合できます。 Amazon Redshift Serverless は、データウェアハウスインフラストラクチャのセットアップ、管理、スケーリングを行うことなく、数秒で分析を実行およびスケーリングできるようサポートします。要求の厳しいワークロードに対して高速なパフォーマンスを提供するために、データウェアハウスの容量を自動的にプロビジョニングし、基盤となるリソースをインテリジェントにスケーリングします。また、使用したコンピューティング容量に対してのみ料金をお支払いいただきます。さらに、 Amazon Redshift マネージドストレージ を使用することで、ストレージとコンピューティングを個別にスケーリングし、使用したストレージに対してのみ料金をお支払いいただくことで、データウェアハウスをさらに最適化できます。 Amazon Redshift dense compute (DC2) インスタンスから Amazon Redshift Serverless へデータウェアハウスをアップグレードすることでこれらの利点が得られ、ユーザーエクスペリエンスの向上と運用の簡素化を実現し、より効率的でスケーラブルなデータ分析ソリューションを提供します。 この記事では、DC2 インスタンスから Amazon Redshift Serverless へのアップグレードプロセスをご紹介します。以下の内容を取り上げます: 現在のセットアップの評価とアップグレードの適否の判断 アップグレードの計画と準備 アップグレードプロセスのステップバイステップの手順 アップグレード後の最適化とベストプラクティス Amazon Redshift Serverless にアップグレードする理由 Amazon Redshift Serverless を使用することで、データウェアハウスインフラストラクチャを管理することなく、分析を実行およびスケールできます。DC2 インスタンスから Amazon Redshift Serverless にアップグレードすると、次のようなメリットが得られます。 運用の簡素化 :コンピュートクラスターのセットアップ、チューニング、管理を必要とせずに、データにアクセスして分析できます。 自動パフォーマンス最適化 : 自動スケーリング と AI 主導のスケーリングおよび最適化 により、要求の厳しい変動の激しいワークロードに対して一貫した高パフォーマンスと簡素化された運用を実現します。 従量課金制 :柔軟な料金体系により、アクティブな使用時のみ課金され、使用した分だけ支払います。 オンラインメンテナンス :Amazon Redshift Serverless は、メンテナンスウィンドウを必要とせずにシステムの更新とパッチを自動的に管理し、データウェアハウスのシームレスな運用を支援します。 ストレージとコンピュートの分離 :Amazon Redshift マネージドストレージにより、コンピュートとストレージを個別にスケーリングして支払うことで、コストを管理できます。 新機能へのアクセス : データ共有への書き込み 、 Redshift ストリーミングの取り込み 、 ゼロ ETL 、 その他の機能 を含む高度な機能を使用できます。 サイジングガイダンス DC2 から Amazon Redshift Serverless へアップグレードするには、サイズの同等性を理解する必要があります。次の表は、DC2 ノードタイプからアップグレードする際の推奨サイジング構成を示しています。 Redshift Processing Unit (RPU) 構成の可用性は AWS リージョンによって異なることに注意してください。 既存のノードタイプ 既存のノード数 Amazon Redshift Serverless へのアップグレード DC2.large 1–4 4 RPU から開始 DC2.large 5–7 8 RPU から開始 DC2.large 8–32 DC2.large の 8 ノードごとに 8 RPU を追加 DC2.8xlarge 2–32 ノードごとに 16 RPU を追加(最大 1,024 RPU まで) これらのサイジング見積もりは、Amazon Redshift Serverless を最大限に活用できるよう調整された柔軟な出発点を提供します。お客様のニーズに最適な構成は、コストとパフォーマンスの望ましいバランスや、ワークロードの特定のレイテンシーとスループット要件などの要因によって異なります。特定の要件に基づいてサイジングをさらに最適化するには、以下のアプローチを使用します。 ワークロードの事前テスト :Amazon Redshift Serverless に移行する前に、非本番環境でワークロードのパフォーマンス要件を評価します。 Amazon Redshift Test Drive ユーティリティ は、さまざまなサーバーレス構成で本番ワークロードをシミュレートすることで、このプロセスを簡素化します。結果を使用して、パフォーマンスとコストの最適なバランスを特定し、構成について情報に基づいた決定を下すことができます。DC2からServerless へのアップグレードでTest Drive ユーティリティを使用するためのステップバイステップのガイダンスについては、 Amazon Redshift Migration Workshop を参照してください。移行前にこれらのパフォーマンステストを実行することで、本番環境にデプロイする前に構成に必要な調整を特定できます。 本番環境での監視 :ワークロードをデプロイした後、典型的なワークロードを表す期間にわたってパフォーマンスとリソース使用率を注意深く監視します。 監視メトリクス に基づいて、パフォーマンスとコストの最適なバランスを達成するために、必要に応じてリソースをスケールアップまたはスケールダウンできます。 AI 主導のスケーリングと最適化 :ワークロードのニーズに合わせて Amazon Redshift Serverless を自動的にサイジングするために、AI 主導のスケーリングと最適化を備えた Amazon Redshift Serverless の使用を検討してください。 本番前のテストと継続的な本番環境のモニタリングを組み合わせたサイジング検証への体系的なアプローチにより、Amazon Redshift Serverless の構成がワークロードに適合していることを確実にできます。 Amazon Redshift Serverless へのアップグレード Amazon Redshift Serverless にアップグレードするには、次の図に示すように、スナップショット復元を使用して Amazon Redshift から Amazon Redshift Serverless に直接移行できます。スナップショット復元では、ユーザーとその関連する権限、設定、スキーマ構造に加えて、データとオブジェクトが復元されます。移行にスナップショット復元を使用することで、本番環境の Amazon Redshift DC2 クラスターに影響を与えることなく、ターゲットの Amazon Redshift Serverless ウェアハウスを検証できます。また、スナップショット復元を使用して、Amazon Redshift DC2 ワークロードを異なるリージョンやアベイラビリティーゾーンに移行することもできます。 スナップショット復元を使用した移行の前提条件 名前空間を持つ Amazon Redshift Serverless ワークグループを作成します。詳細については、 名前空間を伴うワークグループの作成 を参照してください。 Amazon Redshift Serverless はデフォルトで暗号化されています。Amazon Redshift Serverless は、組織のセキュリティポリシーに準拠できるよう、 名前空間の AWS KMS キーの変更 もサポートしています。 復元しようとしている Amazon Redshift Serverless 名前空間が Amazon Redshift Serverless ワークグループに関連付けられていることを確認します。 プロビジョニングされた Amazon Redshift クラスターから Amazon Redshift Serverless に復元するには、 AWS Identity and Access Management (IAM) ユーザーまたはロールに次の権限が必要です: redshift-serverless:RestoreFromSnapshot 、 CreateNamespace 、および CreateWorkgroup 。詳細については、 Amazon Redshift Serverless の復元 を参照してください。 コンソールを使用したアップグレード スナップショット復元方式を使用して DC2 クラスターを Amazon Redshift Serverless にアップグレードするには、Amazon Redshift の AWS マネジメントコンソールで以下の手順を実行します。 Redshift コンソールで、ナビゲーションペインの [ クラスター ] を選択します。クラスターを選択し、[ メンテナンス ] を選択します。 [ スナップショットを作成 ] を選択して、既存の Amazon Redshift プロビジョンドクラスターの手動スナップショットを作成します。 スナップショット識別子を入力し、スナップショット保持期間を選択してから、[ スナップショットを作成 ] を選択します。 リストから Amazon Redshift Serverless に復元するスナップショットを選択し、[ スナップショットを復元 ] を選択してから [ サーバーレス名前空間への復元 ] を選択します。 [ 名前空間を選択 ] で、ドロップダウンリストからターゲットのサーバーレス名前空間を選択し、[ 復元 ]を選択します。 復元にかかる時間はデータ量によって異なります。 復元が完了したら、 Amazon Redshift Query Editor v2 または任意の SQL クライアントを使用して Amazon Redshift Serverless ワークスペースに接続し、データ移行を確認します。 詳細については、 プロビジョニングされたクラスターのスナップショットを作成する を参照してください。 AWS CLI を使用したアップグレード AWS Command Line Interface (AWS CLI) で以下の手順を使用して、スナップショット復元方式により DC2 クラスターを Amazon Redshift Serverless にアップグレードします。 ソースクラスターからスナップショットを作成します: aws redshift create-cluster-snapshot --cluster-identifier <your-dc2-cluster-id> --snapshot-identifier <your-snapshot-name> スナップショットが存在することを確認します: aws redshift describe-cluster-snapshots --snapshot-identifier <your-snapshot-name> スナップショットを Amazon Redshift Serverless 名前空間に復元します: aws redshift-serverless restore-from-snapshot --snapshot-arn "arn:aws:redshift:<your-region>:<your-account-number>:snapshot:<source-cluster-id>/<your-snapshot-name>" --namespace-name <your-serverless-namespace> --workgroup-name <your-serverless-workgroup> --region <your-region> 詳細については、 AWS CLI を使用したクラスタースナップショットからの復元 を参照してください。 Amazon Redshift Serverlessへのアップグレードのベストプラクティス Amazon Redshift から Amazon Redshift Serverless へのアップグレード時に推奨されるベストプラクティスは以下の通りです。 アップグレード前 : サイジングガイダンス を使用して、適切なターゲット構成を決定します。 Amazon Redshift Test Drive を使用して概念実証 (POC) を実行し、ターゲット構成を検証します。 CNAME の使用を検討します。正規名 (CNAME) レコードは、Amazon Redshift クラスターのエンドポイントのエイリアスを作成するために使用できる DNS レコードの一種です。 インターリーブソートキーを使用している場合、プロビジョニングされたクラスターのスナップショットをサーバーレス名前空間に復元すると、Amazon Redshift は自動的にそれらを複合キーに変換します。詳細については、 Amazon Redshift Serverless を使用する際の考慮事項 を参照してください。 Amazon Redshift Serverless の一部の概念と機能は、Amazon Redshift プロビジョニングデータウェアハウスの対応する機能とは異なります。これには、システムテーブルとビュー、監査ログ、エンドポイント名の違いが含まれます。これらの違いの完全なリストについては、 Amazon Redshift Serverless と Amazon Redshift プロビジョニングデータウェアハウスの比較 を参照してください。 Amazon EventBridge を使用した Amazon Redshift Serverless のイベント通知 を購読し、移行プロセス中のイベントの通知を受け取ります。 アップグレード後 : 既存の接続を更新 : Amazon Redshift Serverless に移行すると、新しいエンドポイントが作成されます。ビジネスインテリジェンスやその他のレポートツールへの既存の接続を更新してください。 可観測性と監視 : システムビューを使用するデータ監視ツールがある場合は、オープンまたは空のトランザクションがないことを確認してください。ベストプラクティスとして、トランザクションを終了することが重要です。オープントランザクションを終了またはロールバックしない場合、Amazon Redshift Serverless はそれらのトランザクションに対して RPU を使い続けます。 アクセス : dbUser および dbGroups での IAM 認証を使用する場合、アプリケーションは GetCredentials API を使用してデータベースにアクセスできます。詳細については、 IAM を使用した接続 を参照してください。 システムビュー : Amazon Redshift Serverless で利用可能な 統合システムビュー のリストを確認してください。 ワークロードの性質、または Amazon Redshift Serverless 使用時の考慮事項 に記載されている考慮事項のいずれかにより、ワークロードが Amazon Redshift Serverless に適していない場合は、 RA3 サイジングガイダンス に従って Amazon Redshift RA3 インスタンスにアップグレードします。 コスト面の考慮事項 このセクションでは、Amazon Redshift Serverless のコストを理解し、管理するための情報を提供します。 予測可能な使用パターンがある場合は、事前に 容量を予約 することでサーバーレスコンピューティングのコストを削減できます。 Amazon Redshift Serverless は、ワークロードに基づいて自動的に容量を調整します。 最大 RPU 制限 を設定することで、システムがスケールアップできる上限を設定し、コストを管理できます。 Amazon Redshift Serverless はコンピューティングユニットとしてRPUを使用します。デフォルトでは 128 RPU から開始しますが、特定のワークロードニーズと SLA 要件に合わせて、ベース RPU を 4 から 1,024 RPU の範囲で調整できます。詳細については、 Amazon Redshift Serverless の請求 を参照してください。 Amazon Redshift Serverless は、30 分ごと、またはノードあたり 5 GBのデータ変更が発生した場合のいずれか早い方で、自動的にリカバリポイントを作成します。リカバリポイント間の最小間隔は 15 分です。すべてのリカバリポイントは、デフォルトで 24 時間保持されます。 より長期間バックアップを保持する必要がある場合は、手動バックアップを作成できます。手動バックアップには追加の ストレージコスト が発生します。 Amazon Redshift Serverless の AI 主導スケーリングと最適化により、シンプルなスライダーでコンピューティングリソースを簡単に調整し、予算とパフォーマンスニーズのバランスを取ることで、コストを削減できます。 クリーンアップ 今後の料金が発生しないようにするには、前提条件の手順の一部として作成した Amazon Redshift Serverless インスタンスまたはプロビジョニングされたデータウェアハウスクラスターを削除してください。詳細については、 ワークグループの削除 および クラスターのシャットダウンと削除 を参照してください。 結論 この投稿では、Amazon Redshift DC2 インスタンスを Amazon Redshift Serverless にアップグレードするメリットに加えて、アップグレードのための様々なオプションといくつかのベストプラクティスについて説明しました。アップグレードを実施する前に、対象となる Amazon Redshift Serverless の構成を決定し、テスト環境および開発環境で Amazon Redshift Test Drive ユーティリティを使用して検証することが重要です。 この投稿のガイダンスを実装して、今すぐ Amazon Redshift Serverless へのアップグレードを始めましょう。ご質問がある場合やサポートが必要な場合は、アーキテクチャおよび設計のガイダンス、さらに概念実証や実装のサポートについて、AWS サポートにお問い合わせください。 著者について Nita Shah Nita は、ニューヨークを拠点とする AWS のシニアアナリティクススペシャリストソリューションアーキテクトです。彼女は 20 年以上にわたってデータウェアハウスソリューションを構築しており、Amazon Redshift を専門としています。顧客がエンタープライズ規模の適切に設計されたアナリティクスおよび意思決定支援プラットフォームを設計・構築することを支援することに注力しています。 Ricardo Serafim Ricardo は AWS のシニアアナリティクススペシャリストソリューションアーキテクトです。2007 年以来、企業のデータウェアハウスソリューションを支援してきました。 Bryan Cottle Bryan は Amazon Web Services のシニアテクニカルプロダクトマネージャーです。彼は分析データベースに情熱を注いでおり、特に Amazon Redshift を専門としています。そこでは、顧客のコスト最適化、価格戦略のナビゲート、データベース移行の成功支援を行っています。 Sémir Naffati Sémir は、フランス・パリを拠点とする AWS のシニアワールドワイドスペシャリストソリューションアーキテクトです。データとアナリティクスにおける 25 年以上の経験を持ち、エンタープライズ顧客の複雑なクラウド変革を支援することを専門としています。彼の専門知識は、レガシーデータベースシステム(Oracle、SQL Server)から最新のクラウドネイティブアーキテクチャ(Redshift、Iceberg)およびAIサービスまで幅広く及びます。顧客が最も困難なデータ課題を解決し、スケーラブルでコスト効率の高いソリューションを構築できるよう支援することに情熱を注いでいます。 翻訳は、ソリューションアーキテクトの駒野が担当しました。 原文 はこちらです。
本記事は 2025 年 10 月 23 日に公開された Brian Beach による “Teaching Kiro new tricks with agent steering and MCP” を翻訳したものです。 はじめに 過去 3 年間、私は数百の顧客がソフトウェア開発に AI ツールを採用するのを支援してきました。これらの顧客の多くは、独自のライブラリ、ツール、さらにはドメイン固有言語(DSL)を開発しています。ワークフロー自動化言語、設定構文、ルールエンジンなど、これらのカスタマイズはビジネス運営の基盤となっています。しかし、AI コーディングアシスタントにこれらの独自ライブラリを理解させ、連携させたい場合はどうすればよいでしょうか? この記事では、AI エージェントおよび開発環境である Kiro に、MathJSON というライブラリを理解させる方法を探ります。MathJSON はこのデモンストレーションのために作成された架空のライブラリですが、企業が日常的に使用するワークフロー言語、設定システム、専門的な表記法の代理として機能します。この記事全体を通して、 ステアリング と Model Context Protocol(MCP) について説明し、これらを組み合わせて Kiro に新しいスキルを教える方法を紹介します。 MathJSON との出会い この記事では、MathJSON を使用します。これは、適切な数学用語を使用する JSON ベースの数式表現言語です。MathJSON はこの記事のために作成されたものであり、実際のアプリケーションでの使用は推奨しないことに注意してください。以下が興味深い点です。 主な特徴 構造化された数式表現のための JSON ベースの構文 適切な数学用語 (加数、被減数、被乗数など) 複雑な計算のための ネストされた式 豊富な関数ライブラリ (三角関数、対数、定数) ファイル拡張子 : .math 式の例 { "multiplication": { "multiplicand": {"pi": {}}, "multiplier": { "pow": { "base": {"variable": "env:RADIUS"}, "exponent": 2 } } } } この例は、環境変数として渡された半径に対する円の面積を計算します。 pi * radius^2 ステアリングファイルで Kiro をガイドする ステアリングは、マークダウンファイルを通じてプロジェクトに関する永続的な知識を Kiro に提供します。これらのファイルは .kiro/steering/ に保存され、ワークスペース内のすべてのインタラクションにコンテキストと指示を提供します。ステアリングファイルには、コーディング標準、プロジェクト構造などが含まれます。 最初に思いつくのは、MathJSON のドキュメントをステアリングフォルダに追加することかもしれません。私はまさにそれを行い、 function_reference.md ファイルをステアリングフォルダに追加しました。これは良いスタートですが、いくつかの問題があります。第一に、ドキュメントは人間向けに書かれています。その結果、冗長で繰り返しが多くなります。第二に、Kiro が従うべき具体的なベストプラクティスが欠けています。第三に、プロジェクトフォルダにコピーされたドキュメントは必然的に古くなります。これらの問題とその対処方法を見ていきましょう。 ステアリングファイルの洗練 克服したい最初の問題は、ドキュメントの冗長性です。 当然ながら、適切なドキュメントが存在することを前提としています。もしない場合は、Kiro が生成を手伝ってくれます。 人間向けに作成されたドキュメントは、ステアリングファイルに含めるには冗長すぎることがよくあります。MathJSON はこの記事のために作成したシンプルなプロジェクトですが、それでも 6 つのマークダウンファイルにわたって 3500 行以上のドキュメントがあります。これは、Kiro とのすべての会話に追加するには情報が多すぎます。 幸いなことに、Kiro はステアリングファイルを洗練してくれます。Kiro でステアリングファイルを開き、 Refine ボタンを選択するだけです。Kiro はファイルを読み取り、最適化してくれます。 Kiro が行った変更の 1 つを見てみましょう。元のドキュメントでは、加算は次のように説明されています。 ## 算術演算 ### 加算 適切な数学用語を使用して2つの数値の加算を実行します。 **構文:** ```json { "addition": { "addend1": , "addend2": } } ``` **パラメータ:** - `addend1` (number|expression): 加算する最初の数値 - `addend2` (number|expression): 加算する2番目の数値 **戻り値:** 2つの加数の合計 **数式:** addend1 + addend2 = sum **例:** ```json // 単純な加算 { "addition": { "addend1": 15, "addend2": 25 } } // 結果: 40 // ネストされた式を使用した加算 { "addition": { "addend1": { "multiplication": { "multiplicand": 3, "multiplier": 4 } }, "addend2": 8 } } // 結果: 20 (12 + 8) ``` Kiro はこれを洗練し、1 行に置き換えました。ネストされた式などの詳細は、洗練されたファイルで一度だけカバーされ、各操作の例で繰り返されることはありません。したがって、ここで繰り返す必要はありません。 ### 算術演算 - `addition`: `{addend1, addend2}` - 基本的な加算 全体として、これは素晴らしいスタートです。ステアリングファイルは 3,500 行から 102 行に削減されました。他に何もしない場合でも、refine オプションを使用してステアリングファイルを最適化してください。ただし、さらに改善を続けることができます。 ベストプラクティスの定義 克服したい次の問題は、ドキュメントの具体性です。ユーザードキュメントは広範囲にわたる傾向があります。ライブラリや言語を使用できるすべての方法をカバーすることに焦点を当てています。しかし、ステアリングファイルは指針を持つべきです。Kiro が MathJSON を どのように使用できるか を伝えるのではなく、Kiro が どのように使用すべきか を正確に伝えたいのです。 Kiro は前のセクションでドキュメントを洗練したときにベストプラクティスの定義を開始しました。しかし、追加のルールを加えます。具体的には、Kiro が書くすべてのコードを検証およびテストすることを望んでいます。そこで、いくつかの新しいベストプラクティスを追加します。 5. **リテラルよりも定数**: 精度のために`3.14159`の代わりに`{"pi": {}}`を使用 6. **コードを検証**: `mathjson`がローカルにインストールされていると仮定します。`*.math`ファイルを作成または編集するときは、リントとテストを行います。 ステアリングファイルには、コマンドラインツールの使用方法に関する指示がすでに含まれていることに注意してください。それを繰り返すのではなく、Kiro にいつ使用するかを指示しています。ステアリングファイルは形になり始めていますが、時間の経過とともにどのように最新の状態を保つのでしょうか? 知識を最新の状態に保つ 克服したい最初の問題は、ドキュメントの鮮度です。時間の経過とともに、MathJSON は進化し、変化していきます。たとえば、最近三角関数のサポートを追加しました。ステアリングファイルで維持しなければならないコピーではなく、Kiro が元のドキュメントにアクセスできることを望んでいます。ここで Model Context Protocol(MCP)の出番です。 MathJSON の場合、GitHub リポジトリが信頼できる情報源です。したがって、GitHub 用の MCP サーバーを設定しました。これで、Kiro は必要なときに最新のドキュメントを読むことができます。GitHub は単なる例であることに注意してください。GitLab、Confluence などにドキュメントを保管している場合、それらにも MCP サーバーがある可能性があります。 Kiro が GitHub のドキュメントに直接アクセスできるようになったので、ステアリングファイルを削除したくなるかもしれません。しかし、実際には両方が必要であることがわかりました。Kiro に 2 つの数値を足し算する関数を作成 するように依頼したとします。そのプロンプトには、MathJSON を使用することや、MathJSON のドキュメントが GitHub に保存されていることを示すものは何もありません。Kiro は MathJSON ではなく Python で関数を書く可能性が高いです。ステアリングファイルは、Kiro が点と点を結ぶのに役立ちます。 次の例では、MathJSON を使用していることと、ドキュメントが GitHub で利用可能であることを Kiro に伝えるためにステアリングファイルを更新したことがわかります。さらに、GitHub の MCP サーバーを使用してドキュメントにアクセスするように Kiro に指示しました。 # MathJSON DSL 概要 このプロジェクトは、数式のためのドメイン固有言語である MathJSON を使用しています。MathJSON は、JSON 構文を使用して数式を表現および操作する構造化された方法を提供します。 ## 主要なドキュメント参照 完全な MathJSON ドキュメントは、YOUR_ORG_NAME/mathjson リポジトリで利用できます。これらのファイルにアクセスするには、GitHub MCP サーバーを使用してください。 - **メインドキュメント**: owner="sampleorg", repo="mathjson", path="README.md"で`mcp_github_get_file_contents`を使用 - **関数リファレンス**: owner="sampleorg", repo="mathjson", path="function_reference.md"で`mcp_github_get_file_contents`を使用 - **構文リファレンス**: owner="sampleorg", repo="mathjson", path="syntax_reference.md"で`mcp_github_get_file_contents`を使用 - **例**: owner="sampleorg", repo="mathjson", path="examples.md"で`mcp_github_get_file_contents`を使用 - **環境変数**: owner="sampleorg", repo="mathjson", path="ENVIRONMENT_VARIABLES.md"で`mcp_github_get_file_contents`を使用 - **トラブルシューティング**: owner="sampleorg", repo="mathjson", path="TROUBLESHOOTING_VARIABLES.md"で`mcp_github_get_file_contents`を使用 特定のファイルへの参照を提供していることに注意してください。これはパフォーマンスの最適化です。リポジトリへの参照だけを提供した場合、Kiro はリポジトリを探索してファイルを読むのに時間がかかりすぎます。また、GitHub は理想的なドキュメントリポジトリではないことも指摘しておきたいと思います。Kiro は、ドキュメントをトピックにチャンク化し、それらのチャンクをベクトルデータベースに保存することで恩恵を受けるでしょう。これにより、Kiro は必要なドキュメントの部分だけにアクセスできます。ただし、この記事は少し長くなっているので、そのトピックは別の記事に残しておきます。 Kiro に知識の更新を依頼する この時点で、私のステアリングファイルは主にドキュメントへのポインタとして機能しています。ただし、ベストプラクティスセクションとともに、ステアリングファイルにいくつかの高レベルのドキュメントがまだあります。さらに重要なことに、定期的にステアリングファイルを更新するように Kiro に依頼しています。Kiro が間違いを犯したり、問題に遭遇したりするたびに、問題がまだコンテキストにある間に更新を行うように Kiro に依頼します。 次の例では、Kiro が環境変数のフォーマットの問題に取り組んでいるのがわかります。リンターが問題を特定すると、Kiro は MCP サーバーを使用してドキュメントを読み、エラーを修正します。 Kiro がこれらの問題に取り組むにつれて、新しいスキルを学びます。ただし、その新しい知識は会話の期間中のみ保持されます。したがって、Kiro は将来のセッションで同じ間違いを犯す可能性があります。これは、ステアリングファイルを更新するように Kiro に依頼する絶好の機会です。 MathJSON の環境変数の構文について学んだ後、Kiro はステアリングファイルに次のセクションを追加しました。 ## 環境変数のベストプラクティス ### 変数構文 - 環境変数には`{"variable": "env:VARIABLE_NAME"}`構文を使用 - 変数名は文字またはアンダースコアで始まり、英数字とアンダースコアのみを含む必要があります - `PRINCIPAL`、`ANNUAL_RATE`、`LOAN_TERM_YEARS`のような説明的な名前を使用 時間の経過とともに、Kiro はガイダンスを洗練し続け、私の DSL に関する知識を拡大し、書くコードを改善していきます。 すべてをまとめる 数回の反復の後、Kiro は MathJSON を作成する準備ができています。住宅ローンの過払いをモデル化する関数を作成するように Kiro に依頼します。 元金、金利、過払い額を入力として受け取り、ローンの期間中の節約額を返す住宅ローン過払いをモデル化する関数を作成してください。 Kiro は私のために MathJSON を生成する準備ができました。以下は、住宅ローン過払い計算のために Kiro が生成した MathJSON です。 { "multiplication": { "multiplicand": {"variable": "env:OVERPAYMENT_AMOUNT"}, "multiplier": { "subtraction": { "minuend": { "multiplication": { "multiplicand": {"variable": "env:LOAN_TERM_YEARS"}, "multiplier": 12 } }, "subtrahend": { "division": { "dividend": { "log": { "value": { "subtraction": { "minuend": 1, "subtrahend": { "division": { "dividend": { "multiplication": { "multiplicand": {"variable": "env:OVERPAYMENT_AMOUNT"}, "multiplier": { "division": { "dividend": {"variable": "env:ANNUAL_RATE"}, "divisor": 12 } } } }, "divisor": {"variable": "env:PRINCIPAL"} } } } }, "base": { "addition": { "addend1": 1, "addend2": { "division": { "dividend": {"variable": "env:ANNUAL_RATE"}, "divisor": 12 } } } } } }, "divisor": { "log": { "value": { "addition": { "addend1": 1, "addend2": { "division": { "dividend": {"variable": "env:ANNUAL_RATE"}, "divisor": 12 } } } } } } } } } } } } そしてもちろん、Kiro はステアリングファイルで定義されたベストプラクティスに従って、書いたコードをリントおよびテストし、コードが構文的に正しいことを検証します。 結論 MathJSON のようなカスタムライブラリを理解し、それと連携するように Kiro を教えることは、ステアリングファイルと Model Context Protocol を組み合わせる力を示しています。この記事で概説されたアプローチ(ドキュメントの洗練、明確なベストプラクティスの確立、最新の知識のための MCP の活用)に従うことで、カスタムライブラリ、言語、ツールと連携するように Kiro へ教えることができます。 Kiro を始めましょう 。
バージニア北部 (us-east-1) リージョンでサービスを使用している多くのユーザーにとって、10 月 27 日週は多くの課題からスタートしました。月曜日、DNS 設定の問題により、DynamoDB およびその他のいくつかのサービスに影響を及ぼすサービスの中断が発生しました。この問題は完全に解決しました。詳細については 公式概要 でご覧いただけます。開発者と緊密に連携している私は、これらのインシデントがお客様のアプリケーションやユーザーにどれほど混乱をもたらす可能性があるかを承知しています。チームはこのイベントから、今後のサービス改善に役立つ貴重な教訓を得ました。 10 月 20 日週のリリース もっと明るい話をしましょう。10 月 20 日週のリリースやアップデートのうち、皆様が興味関心を持ちそうなものをいくつかご紹介します。 AWS RTB Fabric の一般公開 – 広告テクノロジーに携わっている方は、リアルタイム入札ワークロード用のフルマネージドサービスである AWS RTB Fabric に興味があるはずです。瞬時の広告オークションに不可欠な 1 桁ミリ秒のレイテンシーを実現するプライベートかつ高性能のネットワークを介して、SSP、DSP、パブリッシャーなどの AdTech パートナーを接続します。このサービスは、事前契約なしの標準のクラウドソリューションと比較して、ネットワークコストを最大 80% 削減します。また、トラフィックの最適化、入札効率の向上、入札応答率の増加を実現する 3 つのモジュールが組み込まれています。AWS RTB Fabric は、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポールと東京)、欧州 (フランクフルトとアイルランド) でご利用いただけます。 Customer Carbon Footprint Tool が Scope 3 の排出量 データへの対応を開始 – クラウドの使用による環境への影響をより包括的に把握できるようになりました。AWS Customer Carbon Footprint Tool (CCFT) は、温室効果ガスプロトコルで定義されている 3 つの業界標準排出スコープすべてへの対応を開始しました。今回の更新では、サーバーの製造、AWS 施設への電力供給、データセンターへの機器の輸送によるライフサイクルでの二酸化炭素の影響を対象とする Scope 3 の排出量とともに、Scope 1 の天然ガスと冷媒が追加されました。2022 年 1 月までさかのぼる履歴データを使用して、時間の経過に伴う進捗状況を追跡し、持続可能性の目標を達成するためのクラウド戦略について情報に基づいた意思決定を行うことができます。CCFT ダッシュボードまたは AWS Billing and Cost Management データエクスポートからデータにアクセスしてください。 その他のアップデート こちらは、私が興味深いと感じたプロジェクト、ブログ記事、ニュースです。 AWS Secret-West Region が 利用可能に – AWS は、米国西部に 2 つ目の Secret Region を開設しました。このリージョンでは、米国秘密のセキュリティ分類レベルでミッションクリティカルなワークロードを処理できます。この新しいリージョンでは、遅延の影響を受けやすいワークロードのパフォーマンスが向上し、インテリジェンスコミュニティと国防総省のミッションを地理的に分離することでマルチリージョンの耐障害性が提供されます。このインフラストラクチャの特徴は、セキュリティにおいて Intelligence Community Directive の要件に準拠するように設計、構築、認定、運用されているデータセンターとネットワークアーキテクチャです。 Amazon CloudWatch がインシデントレポートの生成を開始 – CloudWatch の調査では、エグゼクティブサマリー、イベントのタイムライン、影響評価、実行可能な推奨事項を含む包括的なインシデントレポートを自動的に生成できるようになりました。この特徴量は、テレメトリデータを収集して調査アクションと関連付け、チームがパターンを特定し、構造化されたインシデント後の分析を通じて予防策を実施することを支援します。 Amazon Connect で E メールビューがスレッド化 – Amazon Connect E メールでは、やり取りがスレッド形式で表示されるようになり、エージェントが応答を作成するときに以前の会話コンテキストが自動的に含まれるようになりました。これらの機能強化により、エージェントとお客様の両方がインタラクション全体でコンテキストと継続性を維持しやすくなり、より自然で親しみやすい E メールエクスペリエンスが実現します。 Amazon EC2 I8g インスタンスがその他のリージョンに拡大 – ストレージ最適化 I8g インスタンスは、欧州 (ロンドン)、アジアパシフィック (シンガポール)、アジアパシフィック (東京) でご利用いただけるようになりました。AWS Graviton4 プロセッサと第 3 世代 AWS Nitro SSD を搭載したこれらのインスタンスは、前世代の I4g インスタンスと比較して、コンピューティングパフォーマンスが最大 60%、TB あたりのリアルタイムストレージパフォーマンスが 65% 向上し、ストレージ I/O レイテンシーが最大 50% 削減されます。 AWS Location Service が強化されたマップスタイル作成を追加 – 開発者は GetStyleDescriptor API を使用して、地形の視覚化、等高線、リアルタイムの交通オーバーレイ、交通機関固有のルーティングの詳細を組み込むことができるようになりました。新しいスタイル作成パラメータにより、屋外ナビゲーションから物流計画まで、特定の用途に合わせた地図を作成できます。 CloudWatch Synthetics がマルチチェック Canary を導入 – カスタムスクリプトなしで JSON 設定を使用して、最大 10 種類のモニタリングステップを 1 つの Canary にまとめられるようになりました。マルチチェックブループリントは、認証、DNS 検証、SSL 証明書モニタリング、TCP ポートチェックで HTTP エンドポイントをサポートしているため、API モニタリングの費用対効果が高まります。 Amazon S3 Tables が CloudTrail イベントの生成を開始 – S3 テーブルは、コンパクションやスナップショットの有効期限などの自動メンテナンス操作用に AWS CloudTrail イベントをログに記録するようになりました。これにより、組織は S3 Tables が自動的に実行するメンテナンスアクティビティを監査して、クエリのパフォーマンスを向上させ、運用コストを削減することができます。 AWS Lambda が非同期呼び出しのペイロードサイズを 1 MB に増加 – Lambda は、すべての AWS 商用および GovCloud (米国) リージョンで、非同期呼び出しの最大ペイロードサイズを 256 KB から 4 倍にあたる 1 MB に増やしました。この拡張により、包括的なデータを単一のイベントに含めることができるため、複雑なデータチャンクや外部ストレージソリューションが不要になり、アーキテクチャが合理化されます。大規模な言語モデルのプロンプト、詳細なテレメトリシグナル、複雑な ML 出力構造、完全なユーザープロファイルなどのユースケースのサポートが強化されています。この更新は、Lambda API による非同期呼び出し、または S3、CloudWatch、SNS、EventBridge、Step Functions などのサービスからのプッシュベースのイベントに適用されます。料金は、最初の 256 KB については 1 回のリクエスト料金のままですが、それ以降は 64 KB チャンクごとに 1 回の追加料金がかかります。 近日開催予定の AWS イベント 今後のイベントをチェックして、ぜひご登録ください。 AWS re:Invent 2025 (2025 年 12 月 1〜5 日、米国ラスベガス) – 毎年恒例の AWS フラッグシップカンファレンスは、ピアツーピアの学習、専門家主導のディスカッション、貴重なネットワーキング機会を通じてコラボレーション型のイノベーションを実現します。現在登録受け付け中です。 AWS Builder Center に参加して、AWS コミュニティで AWS ビルダーとともに学び、構築し、交流しましょう。お住まいの地域で今後開催される対面イベントとデベロッパー向けのバーチャルイベントをご覧ください。 10 月 27 日週のニュースは以上です。11 月 3 日週の Weekly Roundup もお楽しみに! – Micah 原文は こちら です。
10 月 23 日、リアルタイム入札 (RTB) 広告ワークロード専用に構築されたフルマネージドサービスである AWS RTB Fabric が発表されました。このサービスは、アドテクノロジー (AdTech) 企業が Amazon Ads 、 GumGum 、 Kargo 、 MobileFuse 、 Sovrn 、 TripleLift 、 Viant 、 Yieldmo などのサプライパートナーやデマンドパートナーにシームレスに接続して、一貫的な 10 ミリ秒未満のパフォーマンスを備え、ネットワーキングコストが標準のネットワーキングコストよりも最大 80% 低い Amazon Web Services (AWS) でレイテンシーの影響を受けやすい大容量の RTB ワークロードを実行するために役立ちます。 AWS RTB Fabric は、RTB ワークロードとパートナー統合専用の高性能ネットワーク環境を提供し、コロケーションされたオンプレミスインフラストラクチャや事前の契約は必要ありません。以下の図は、RTB Fabric のおおまかなアーキテクチャを示しています。 AWS RTB Fabric にはモジュールも含まれています。これは、お客様がセキュアな方法で独自のアプリケーションやパートナーアプリケーションをリアルタイム入札に使用されるコンピューティング環境に取り込めるようにする機能です。モジュールは、コンテナ化されたアプリケーションと、トランザクション効率と入札効果を高めることができる 基盤モデル (FM) をサポートします。リリース時点での AWS RTB Fabric には、トラフィック管理の最適化、入札効率の改善、入札レスポンス率の向上のためのモジュールが含まれています。これらはすべて、一貫した低レイテンシーでの実行のために、サービス内でインライン実行されます。 プログラマティック広告の成長は、RTB ワークロードをサポートするための低レイテンシーでコスト効率性に優れたインフラストラクチャに対するニーズを生み出しました。AdTech 企業は、パブリッシャー、サプライサイドプラットフォーム (SSP)、デマンドサイドプラットフォーム (DSP) の全体で 1 秒あたり何百万もの入札リクエストを処理します。RTB オークションのほとんどは 200〜300 ミリ秒内に完了しなければならず、複数のパートナー間での OpenRTB リクエストとレスポンスの確実かつ高速なやり取りが必要となるため、これらのワークロードはレイテンシーの影響を非常に受けやすくなります。多くの企業は、主要パートナー近隣のコロケーションデータセンターにインフラストラクチャをデプロイすることでこの課題に対処してきましたが、レイテンシーは削減されても、運用上の複雑性が増し、プロビジョニングサイクルが長期化して、コストが高くなります。伸縮性を得てスケールするためにクラウドインフラストラクチャを活用する企業もありますが、この場合は複雑なプロビジョニング、パートナー固有の接続性、コスト効率性を実現するための長期的なコミットメントといった課題にしばしば直面します。こうしたギャップは、運用オーバーヘッドを増やし、俊敏性を妨げます。AWS RTB Fabric は、RTB ワークロード向けに構築されたマネージド型のプライベートネットワークを提供することでこれらの課題を解決します。このプライベートネットワークは、コロケーションの維持やカスタムネットワーク設定といった負担を課すことなく、一貫したパフォーマンスを実現し、パートナーのオンボーディングを簡素化して、予測可能なコスト効率を実現します。 主な機能 AWS RTB Fabric は、RTB ワークロードを大規模に実行するためのマネージド型基盤を導入します。このサービスでは、次の主要機能が提供されます。 AdTech パートナーへの簡素化された接続 – RTB Fabric ゲートウェイを登録すると、選択したパートナーと共有できるセキュアなエンドポイントをサービスが自動的に生成します。AWS RTB Fabric API を使用することで、さまざまな環境で RTB トラフィックをセキュアに交換するための、最適化されたプライベート接続を作成できます。オンプレミスやサードパーティのクラウド環境で業務を行っているパートナーなど、RTB Fabric を使用していないパートナーと接続には、外部リンクも利用できます。このアプローチは、統合時間を短縮し、AdTech 参加者間のコラボレーションを簡素化します。 低レイテンシーの広告トランザクションのための専用ネットワーク – AWS RTB Fabric は、OpenRTB 通信向けに最適化されたマネージド型の高性能ネットワークレイヤーを提供します。SSP、DSP、パブリッシャーなどのアドテック参加者は、一貫的な 10 ミリ秒未満のレイテンシーを実現する高速なプライベートリンク経由で接続されます。AWS RTB Fabric は、予測可能なパフォーマンスを維持し、ネットワーキングコストを削減するためにルーティングパスを自動的に最適化するので、手動でのピアリングや設定は不要です。 RTB エコノミクスに即した料金モデル – AWS RTB Fabric は、プログラマティック広告エコノミクスに合わせて設計されたトランザクションベースの料金モデルを使用しています。お客様には 10 億トランザクションごとに料金が請求されるため、アドエクスチェンジ、SSP、DSP の運営方法に応じた予測可能なインフラストラクチャコストを実現できます。 組み込みのトラフィック管理モジュール – AWS RTB Fabric には、AdTech ワークロードを効率的かつ確実に運用するために役立つ設定可能なモジュールが含まれています。Rate Limiter、OpenRTB Filter、Error Masking などのモジュールを使用することで、ネットワークパス内で直接リクエスト量を制御し、メッセージ形式を検証して、レスポンス処理を管理できます。これらのモジュールは AWS RTB Fabric 環境内でインライン実行され、アプリケーションレベルのレイテンシーを増加させることなくネットワーク速度のパフォーマンスを維持します。すべての設定は AWS RTB Fabric API 経由で管理されるため、ワークロードの拡大に合わせてルールをプログラム的に定義および更新できます。 使用の開始 AWS RTB Fabric での構築は、 AWS マネジメントコンソール 、 AWS コマンドラインインターフェイス (AWS CLI) 、または AWS CloudFormation や Terraform などの Infrastructure-as-Code (IaC) ツールを使用して今すぐ開始できます。 AWS RTB Fabric コンソール の ダッシュボード にあるように、コンソールは RTB ゲートウェイとリンクを表示して管理するための視覚的なエントリポイントを提供します。 AWS CLI を使用して、ゲートウェイの設定、リンクの作成、トラフィックの管理をプログラム的に行うことも可能です。私が AWS RTB Fabric での構築を始めたときは、ゲートウェイの作成から、リンクのセットアップ、トラフィックの監視まで、あらゆる設定を AWS CLI を使って行いました。セットアップは私の Amazon Virtual Private Cloud (Amazon VPC) エンドポイント内で実行され、ワークロードを接続する低レイテンシーインフラストラクチャは AWS が管理しました。 はじめに、入札リクエストを送信するための リクエスタゲートウェイ と、入札レスポンスを受信して処理するための レスポンダーゲートウェイ を作成しました。これらのゲートウェイは、AWS RTB Fabric 内のセキュアな通信ポイントとして機能します。 # Create a requester gateway with required parameters aws rtbfabric create-requester-gateway \ --description "My RTB requester gateway" \ --vpc-id vpc-12345678 \ --subnet-ids subnet-abc12345 subnet-def67890 \ --security-group-ids sg-12345678 \ --client-token "unique-client-token-123" # Create a responder gateway with required parameters aws rtbfabric create-responder-gateway \ --description "My RTB responder gateway" \ --vpc-id vpc-01f345ad6524a6d7 \ --subnet-ids subnet-abc12345 subnet-def67890 \ --security-group-ids sg-12345678 \ --dns-name responder.example.com \ --port 443 \ --protocol HTTPS 両方のゲートウェイがアクティブになったら、リクエスタからレスポンダへのリンクを作成して、OpenRTB トラフィック用の低レイテンシーのプライベート通信パスを確立しました。ルーティングと負荷分散はリンクが自動的に処理します。 # Requester account creating a link from requester gateway to a responder gateway aws rtbfabric create-link \ --gateway-id rtb-gw-requester123 \ --peer-gateway-id rtb-gw-responder456 \ --log-settings '{"applicationLogs:{"sampling":"errorLog":10.0,"filterLog":10.0}}' # Responder account accepting a link from requester gateway to responder gateway aws rtbfabfic accept-link \ --gateway-id rtb-gw-responder456 \ --link-id link-reqtoresplink789 \ --log-settings '{"applicationLogs:{"sampling":"errorLog":10.0,"filterLog":10.0}}' また、 外部リンク を使用して外部パートナーとの接続も行いました。これらのリンクは、同一のレイテンシーとセキュリティ特性を維持しながら、RTB ワークロードをオンプレミス環境またはサードパーティ環境に拡張します。 # Create an inbound external link endpoint for an external partner to send bid requests to aws rtbfabric create-inbound-external-link \ --gateway-id rtb-gw-responder456 # Create an outbound external link for sending bid requests to an external partner aws rtbfabric create-outbound-external-link \ --gateway-id rtb-gw-requester123 \ --public-endpoint "https://my-external-partner-responder.com" トラフィックを効率的に管理するために、データパスにモジュールを直接追加しました。Rate Limiter モジュールはリクエスト量を制御し、OpenRTB Filter はメッセージ形式のネットワーク速度での検証をインラインで行います。 # Attach a rate limiting module aws rtbfabric update-link-module-flow \ --gateway-id rtb-gw-responder456 \ --link-id link-toresponder789 \ --modules '{"name":"RateLimiter":"moduleParameters":{"rateLimiter":{"tps":10000}}}' 最後に、スループット、レイテンシー、モジュールパフォーマンスを監視するために Amazon CloudWatch を使用し、監査と最適化のために Amazon Simple Storage Service (Amazon S3) にログをエクスポートしました。 すべての設定は、AWS CloudFormation または Terraform を使用して自動化することもでき、複数の環境全体で繰り返し可能な一貫したデプロイが可能になります。RTB Fabric を使用すると、AWS が AdTech パートナー全体で予測可能な 10 ミリ秒未満のパフォーマンスを維持してくれるので、私は入札ロジックの最適化に集中できました。 詳細については、「 AWS RTB Fabric User Guide 」を参照してください。 今すぐご利用いただけます AWS RTB Fabric は、10 月 23 日から米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポール)、アジアパシフィック (東京)、欧州 (フランクフルト)、欧州 (アイルランド) の各 AWS リージョン でご利用いただけます。 AWS RTB Fabric は、AdTech 業界の変化するニーズに対応するために絶えず進化しています。このサービスは、高度なアプリケーションのセキュアな統合と、リアルタイム入札ワークフローにおける AI 駆動の最適化をサポートするように機能を拡張します。これは、お客様が AWS での運用を簡素化し、パフォーマンスを向上させるために役立ちます。AWS RTB Fabric の詳細については、 AWS RTB Fabric ページ をご覧ください。 – Betty 原文は こちら です。
本記事は、2025 年 10 月 16 日に公開された “ Launch phase steps for successful launches on Amazon GameLift Servers ” を翻訳したものです。翻訳は Solutions Architect の西坂信哉が担当しました。 ゲームが急激にヒットした場合に備え、最初から成功に向けた準備をしておくことが重要です。本記事では、 Amazon GameLift Servers でマルチプレイヤーゲームを立ち上げる際に考慮すべき重要な点について説明します。ゲームのローンチの 2-3 ヶ月前に必要な作業に焦点を当てます。これは、ゲームの本番ローンチだけでなく、オープンベータ、アーリーアクセス、あるいは実際のプレイヤーが参加する他のマイルストーンも含まれます。 ゲームローンチに向けた最終計画の 5 つの重要な領域について説明します。 ゲームローンチに関するアンケートに記入し、サービスのクォータ (制限値) を引き上げます 本番環境のフリートをセットアップします 負荷テストを実施し、クリティカルパスをテストします API スロットリングを監視します 新しいゲームサーバーバージョンを本番環境にデプロイする際は、Blue/Green デプロイメントを使用します 1 – 起動に関するアンケートの記入とクォータの引き上げ オープンベータ、アーリーアクセス、そして最終的な本番ローンチなどのマイルストーンを実現するための重要なポイントの 1 つは、必要に応じてサービスのクォータを引き上げることです。Amazon GameLift Servers のデフォルトのサービスクォータは、開発初期の段階で意図せずスケールアウトしてしまうことからアカウントを保護するために設定されています。プレイヤーのサポートを本格的に開始する準備が整ったら、プレイヤーの負荷をサポートするために必要なインフラストラクチャを提供できるよう、より高いクォータが必要になる場合があります。 Launch Questionnaire は、 Amazon GameLift Servers コンソール の左側メニューの Resources から Prepare to launch を選択すると確認できます。このアンケートでは、選択したインスタンスタイプのインスタンス制限と、Amazon GameLift Servers API のスロットリング制限の両方について説明しています。 アンケートに記入する際の重要なポイントは以下の通りです: ローンチの 2-3 ヶ月前を目安に早めに実施してください。 ベータ版やプライベートプレビューもローンチの一種であることを忘れないでください。そのためにもクォータの引き上げが必要です。次のマイルストーンに向けて、アンケートの新しいバージョンをいつでも提出できます。 マルチロケーションフリートには、ホームリージョンと追加のロケーションがあります。フリートの ホームリージョン を定義し、選択したホームリージョンに対して各 ロケーション のクォータ引き上げを要求することを忘れないでください。ロケーション固有のインスタンス制限は、各ホームリージョンごとに個別に設定されます。 使用している Amazon GameLift Servers API を正確に確認し、予想されるピーク時のリクエストレートに合わせてクォータの引き上げを要求してください。 Describe API は一般的に各プレイヤーのリクエストごとに呼び出すようには設計されていないため、ゲームセッション作成フローでの使用は避けてください。これらの API を呼び出す必要がある場合は、 Host persistent world games on Amazon GameLift Servers で説明されているように、中央管理的な方法で実装できます。 必要なすべての Amazon Web Services (AWS) アカウントに対してクォータの引き上げを要求するようにしてください。これには、本番環境、テスト環境、および負荷テスト用のアカウントが含まれる場合があります。 アンケートを送信する際は、担当の AWS アカウントチームがいる場合、全員が同じ情報を共有できるよう、メールに AWS アカウントチームを追加するようにしてください。 図 1 は、Amazon GameLift Servers コンソールで Launch Questionnaire を見つける場所を示しています。 図 1: Amazon GameLift Servers の Launch Questionnaire 2 – 本番環境フリートの設定 Amazon GameLift Servers の本番環境のフリートは、開発環境のフリートとは異なる設定にすることをお勧めします。 主な考慮事項: Game Scaling Protection Policy を Full Protection に設定します。これにより、フリートがスケールダウンする際に、実行中のゲームセッションが保護されます。 Target-based Auto-scaling policy を有効にし、ローンチ日に向けて十分なバッファ (30-50% までが目安) を確保してください。トラフィックが安定した後で、この値を減らすことができます。 各リージョンに個別のフリートを設定するのではなく、マルチロケーションフリートを使用してください。グローバルなフリートのリソースを一元的に表示でき、運用の複雑さが軽減されるため、運用が大幅に効率化されます。 レイテンシーの目標とプレイヤー人口を考慮し、それに応じてロケーションを選択してください。レイテンシーの低い FPS ゲームでは、通常、各大陸エリアに複数のロケーションが必要です。比較的レイテンシシビアではないゲームでは、より少ないロケーション数で対応でき、運用も効率化できます。クライアント側でレイテンシーを測定するには、 Amazon GameLift が提供する UDP ping ビーコン を使用できます。 各ロケーションのスケーリング設定 ( min と max ) を設定し、各ロケーションで健全なベースライン (min) と、突発的な需要の増加に対応できる余裕 (max) を確保してください。 ローンチ日には、各ロケーションの最小値を、初期トラフィックのピークに対応できる十分な基準値に設定して、事前にスケールアウトすることをお勧めします。トラフィックパターンが安定した後は、この値を低く設定することもできますが、初期ローンチ時のピークに備えておくことが重要です。 複数のインスタンスタイプを使用してゲームサーバーをホストできる機能により、予期せぬプレイヤー負荷に対する準備を確認してください。これは例えば、選択したインスタンスファミリーの .large と .xlarge のバリエーション、または同じインスタンスファミリー内の異なるインスタンスファミリーや世代を使用することができます。ほとんどのゲームでは複数のフリートをホストする必要はありませんが、大規模な環境では、マルチフリート戦略をオプションとして持つことで、必要な容量を確保することができます。 図 2 は、2 つのマルチロケーションフリートが同じ Amazon GameLift Servers Queue に登録されている様子を示しています。1 つ目のフリートは C6i.large インスタンスタイプを使用し、ゲームの起動に対応するためにスケールアウトされています。2 つ目のフリートは C5.large インスタンスタイプを使用し、スケールアウトされていません。両方のインスタンスタイプの制限は、本番トラフィックを処理するために Launch Questionnaire で引き上げられています。いずれかのロケーションで C6i.large の可用性が低下するという稀なケースでは、バックアップフリートにより異なるインスタンスタイプでスケールアウトし、プレイヤーへのサービスを継続できます。バックアップフリートには、C6i.xlarge など、C6i ファミリーの別のインスタンスサイズを使用することもできます。 図 2:大規模なスケーリングに向けたマルチロケーションフリートの利用 3 – 負荷テストとクリティカルパスのテスト 負荷テストは、インフラストラクチャのボトルネックを明らかにするために重要です。これは、ローンチの準備における最も重要なステップの 1 つです。 特に Amazon GameLift Servers の場合、負荷テストでは以下のような問題が浮き彫りになります: インスタンス制限緩和の不足 API クォータ (各 API に個別に適用) ゲームサーバーが通信するバックエンドシステムなどの依存関係の問題 実際のトラフィックパターンを再現した大規模な負荷テストを実施することで、これらの問題が表面化します。これは、高い同時ユーザー数で発生するように、すべてのロケーションでセッション配置リクエストを段階的に増やし、すべてのシステムが期待通りに動作することを確認することを意味します。 ゼロから 5 分間で 50 万の同時ユーザーまでスケールアウトするテストは、紙の上では良いテストに見えますが、実際のトラフィックパターンを反映していない可能性があります。現実的なパターンでテストすることで、期待値を過度に高めすぎないようにすることができます。通常、ピークまでの増加は、より長い期間 (通常は数時間) にわたって発生します。過去のゲームのデータや、 SteamDB などのツールを使用して、ローンチ時の一般的なトラフィックパターンを確認することができます。 負荷テストを実施するには、主に 2 つの方法があります。 フリートのスケーリングとセッション配置のテストは、 StartGameSessionPlacement などの API を直接呼び出すことで実行できます。比較的少数の実際のクライアントで、Python や Bash スクリプトを使用して実行できます。これは、API とインスタンスの制限、およびスケーリング設定の優れたスモークテストとなります。 ゲームサーバーに加えてバックエンドサービスも含めた、重要なシナリオ全体をテストします。このアプローチには、実際のアカウント作成とゲームへのログイン、およびバックエンドを使用したマッチメイキングやセッション配置のリクエストが含まれます。これは、バックエンドのボトルネックもテストする、より包括的な負荷テストのアプローチです。このテストは、( AWS Fargate コンテナで実行される) ゲームのヘッドレスボットクライアントを使用するか、クライアントにできるだけ近い動作をするスクリプトを使用して実行することをお勧めします。 完全なテストを実施する際は、クライアントがゲームサーバーに接続し、通常のプレイヤーと同様に移動やその他のアクションを送信してゲームをプレイすることもできるのが理想的です。これにより、ゲームサーバーのパフォーマンスもストレステストされます。また、クライアントがセッションをプレイし、次のセッションに接続するためにログアウトする際の、現実的なセッション時間とゲームセッションのローテーションのテストにも役立ちます。 これらのテストを正しくモニタリングするには、このブログシリーズの第 1 回 Amazon GameLift Servers でローンチを成功させるためのステップ:開発フェーズ のモニタリング、ロギング、アラームのセクションで説明したアプローチを使用してください。さらに、Amazon GameLift Servers API からのエラーやスロットリング、および自社やサードパーティが管理するその他のサービスやコンポーネントからのエラーやスロットリングも追跡する必要があります。これについては、セクション 4「API スロットリングのモニタリング」で詳しく説明します。 Werner Vogels (Amazon の CTO) が述べているように、「障害は当たり前のことであり、すべてのものは最終的に障害を起こします」。重要なシナリオが、あらゆる依存関係 (Steam、コンソールログイン、データベースなど) の障害を適切に処理できることを確認する必要があります。また、内部障害からの復旧が確実にできることも確認する必要があります。これにより、ローンチ日のあらゆる予期せぬ事態に備えることができます。 図 3 は、AWS Fargate 上でロードテストクライアントをサービスとしてホストする例を示しています。このサービスは複数の Amazon ECS タスクを実行し、各タスクは最大 10 個の個別のクライアントコンテナをホストできます。ロードテストクライアントは、複数の AWS リージョンにまたがって実行でき、レイテンシーとプレイヤーの位置がゲーム体験にどのように影響するかをテストできます。クライアントは、実際のゲームクライアントのスクリプト化されたヘッドレスバージョン、またはゲームクライアントとして動作するスクリプトのいずれかを使用できます。 図 3: 重要なシナリオを負荷試験する 4 – API スロットリングのモニタリング 負荷テスト中、Amazon GameLift Servers API の呼び出しが デフォルトのプロビジョニング制限 を超えると、スロットリングエラーが発生する可能性があります。スロットリングされた呼び出しを特定し対応することは、運用の安定性、可用性、そしてシームレスなプレイヤーエクスペリエンスを確保する上で重要です。 AWS CloudTrail は、Amazon GameLift Servers の包括的な API イベント追跡機能を提供し、すべての API 使用状況を監視および監査できます。 CloudTrail を以下の用途で効果的に使用できます: Amazon GameLift Servers API のアクティビティを追跡 スロットリングを特定 CloudWatch のカスタムメトリクスにアラームを設定 予想されるピーク時のリクエストレートに合わせてクォータの引き上げを運用チームに通知 CloudTrail レコードに適用される eventSource が gamelift.amazonaws.com で、以下のいずれかの errorCode または errorMessage が適用されるスロットリングを監視します。 errorCode が ThrottlingException の場合 errorCode が RequestLimitExceeded の場合 errorMessage が RateExceeded の場合 運用の可視性を確保するため、CloudTrail で新しい証跡を作成し、CloudWatch Logs を有効にします。CloudWatch Logs にログを書き込むための適切な AWS Identity and Access Management (IAM) のアクセス許可 があることを確認してください。Amazon GameLift イベントを取得するために CloudWatch のロググループ を指定します。設定が完了すると、すべての Amazon GameLift Servers API コールと関連するスロットリングエラーを CloudWatch Logs で確認できるようになります。 CloudWatch Logs で、CloudTrail がログを書き込むために使用するロググループを選択し、スロットリングのパターンを特定するためのカスタムメトリクスフィルターを作成します。 namespace を割り当て、スロットリングが発生するたびにインクリメントされるカスタムメトリクスを正常に作成する必要があります。 以下はフィルターパターンの例です。 { ($.eventSource = "gamelift.amazonaws.com") && ($.errorCode = "ThrottlingException") } カスタムメトリクスを設定したら、スロットリングのしきい値を監視するための CloudWatch アラームを設定します。例えば、5 分間に 10 件以上のスロットリングリクエストが発生した場合にアラームを発生させます。作成したアラームを Amazon SNS トピックにアタッチし、運用チームにメール、ショートメッセージサービス (SMS)、またはチャット通知を送信します。これにより、運用チームは API の使用状況を確認し、適切なアクションを取ることができます。 クォータの緩和をリクエストする前にスロットリングを最小限に抑えるには: Amazon GameLift Servers API 呼び出しに対して エクスポネンシャルバックオフ を実装します Amazon GameLift Servers API から大規模なデータセットを取得する際は、ページネーションとフィルタリングを使用します フリート情報などの頻繁にアクセスされるデータをキャッシュして、API 呼び出しの繰り返しを避けます 可能な場合は操作をバッチ処理して、API 呼び出しの頻度を減らします 5 – 本番環境における新しいゲームサーバーバージョンには Blue/Green デプロイを使う 本番環境に移行した後、特に初期の段階では、ゲームサーバーに比較的頻繁にパッチを適用する必要があります。また、ゲームに機能や改善を加えていく中で、継続的なパッチ適用も必要になります。Amazon GameLift Servers でのアップデートには、 Blue/Green デプロイメント が推奨されます。 このアプローチでは、新しいゲームサーバービルドまたはコンテナイメージを使用して、完全に新しい本番フリートをセットアップします。新しいフリートの準備が整い、モニタリングの状態が良好であることを確認したら、いくつかのゲームセッションでスモークテストを実施する追加ステップを設けることができます。その後、Amazon GameLift Servers Queue の設定を変更して、ゲームセッション配置要求を古いフリートから新しいフリートにルーティングすることで、運用中のアップデートを実行できます。新しいバージョンで新規セッションが作成され始めますが、古いフリート上で実行中のセッションは中断されることなく継続できます。 ※訳注 : Blue/Green デプロイメントでは、Blue と Green の環境が同時に起動する時間帯において、通常時の倍近くの数のインスタンスを起動する必要があり得ます。インスタンスの制限の緩和申請においてはその点を加味した数を申請ください。 すべてが問題なく見える場合は、全てのセッションが完全に終了(ドレイン)した後で古いフリートを終了できます。以前のバージョンにロールバックする必要がある場合は、キューのターゲットを切り替えることで古いバージョンに戻すことができます。これは Blue/Green デプロイメントの主要なメリットの 1 つです。 セッション配置にキューを使用しない場合、エイリアスリソースを同様の方法で使用できます。Amazon GameLift Servers Toolkit には、このアプローチの実装方法を示す Python スクリプトが用意 されています。 図 4 は、キューの背後にあるフリートを新しいものに置き換え、以前のフリートで古いセッションをドレインする Blue/Green デプロイメントを示しています。 図 4: Blue/Green デプロイメント まとめ Amazon GameLift Servers での本番環境のローンチを成功させるために、サービスクォータをスケールアウトする方法について説明しました。次に、本番環境のフリートを設定する際の重要な考慮事項について説明しました。また、負荷テストがローンチの準備にどのように役立つか、そして負荷テストを実施する一般的な方法についても説明しました。最後に、本番環境での運用中のサーバーバージョンの更新を管理するのに Blue/Green デプロイメントがどのように役立つかについて説明しました。 このシリーズでは、Amazon GameLift Servers でのゲームローンチを成功させるために、運用面とアーキテクチャ面での準備に関する幅広い側面を取り上げました。マルチプレイヤーゲームサーバーのホスティングには、Amazon GameLift Servers をぜひご利用ください。ビジネスの加速に向けた支援について詳しく知りたい場合は、 AWS の担当者 までお問い合わせください。 参考資料 Preparing your game for launch Amazon GameLift achieves 100 million concurrently connected users per game Host persistent world games on Amazon GameLift Servers Juho Jantunen Juho Jantunen は、AWS for Games チームのワールドワイドプリンシパルソリューションアーキテクトとして、ゲームバックエンドとゲームサーバーホスティングソリューションに注力しています。ゲーム業界とクラウドテクノロジーのバックグラウンドを持ち、数百万人のプレイヤーを抱える複数のタイトルにおいて、AWS 上でゲームバックエンドの構築と運用を行ってきました。 Sushil Ranganathan Sushil Ranganathan は、Amazon Web Services のシニアテクニカルアカウントマネージャーです。12 年以上の業界経験を持ち、戦略的産業のお客様が AWS クラウド上でエンタープライズ規模のソリューションを構築・運用できるよう支援することに情熱を注いでいます。