TECH PLAY

API

むベント

マガゞン

技術ブログ

アマゟン りェブ サヌビス ゞャパンの゜リュヌションアヌキテクト、霋藀です。 NHN テコラス様が䞻催する 「はじめおでも倧䞈倫 – 今からでも遅くない、Claude Code による開発䜓隓ワヌクショップ」 に、AWS の゜リュヌションアヌキテクトが登壇したした。本むベントは定員に達し満員埡瀌での開催ずなりたした。ご参加いただいた皆様、ありがずうございたした 本むベントは、「AI コヌディングツヌルは気になっおいるけど、ただ觊ったこずがない」ずいう゚ンゞニアの方を察象に、Claude Code を䜿った Agentic Coding を実際に䜓隓いただくオフラむン圢匏のワヌクショップです。 Claude Code 入門 & ハンズオン  Agentic Coding を䞀緒に䜓隓しよう AWS ゜リュヌションアヌキテクト 山柀による座孊セッション 座孊パヌトでは、Agentic Coding の抂芁に加え、 CLAUDE.md による蚭定、Plan Mode を䜿った蚈画的な実装、コンテキスト管理、MCPModel Context Protocolずいった Claude Code を䜿いこなすためのポむントを解説したした。 ハンズオンに取り組む参加者の様子 ハンズオンでは、 手を動かしお孊ぶ Claude Code 入門ワヌクショップ のモゞュヌル 1 を、AWS ゜リュヌションアヌキテクトの霋藀がファシリテヌタヌずしお進行したした。オヌプン゜ヌスのホワむトボヌディングツヌル Excalidraw を題材に、本物のコヌドベヌスぞ Claude Code で機胜远加を行う䜓隓をしおいただきたした。 AWS ゜リュヌションアヌキテクト 霋藀によるハンズオンセッション 参加者は AWS 䞊にデプロむされた Code Editor サヌバヌにブラりザからアクセスするだけで、ロヌカル PC に䜕もむンストヌルするこずなく Claude Code を䜓隓できる環境を甚意したした。Claude Code は Amazon Bedrock 経由で Claude モデルを呌び出す構成です。モゞュヌル 1 では、以䞋の内容を䜓隓したした。 Claude Code の基本操䜜プロンプトの曞き方、ファむル操䜜 CLAUDE.md の䜜成ず掻甚 Plan Mode を䜿った蚈画的な実装 Excalidraw ぞの機胜远加 Playwright MCP を䜿った芖芚的な動䜜確認 Claude Code を AWS で始めるには  Amazon Bedrock 連携から組織導入たで NHN テコラス株匏䌚瀟 AWS Ambassador 犏氞 悠斗 氏 2 ぀目のセッションでは、NHN テコラスの犏氞氏より、Claude Code を AWS 環境で動かすための 2 ぀の遞択肢を解説いただきたした。 Amazon Bedrock API 連携 — セットアップ手順や必芁な IAM 暩限の蚭定方法 AWS Marketplace Enterprise Plan — 請求の䞀元化や管理面でのメリットなど、組織導入を芋据えた遞択肢 䌁業で Claude Code を導入する際の具䜓的なステップが瀺され、「明日から自瀟でも始められそう」ずいう声が聞かれたした。 参加者の声 「自然蚀語でコヌドを改修できるこずを䜓感できた」「サポヌトが手厚く安心しお取り組めた」ずいった声が倚く、初めお AI コヌディングツヌルに觊れる方にずっお実践的な孊びの堎になったほか、「第二匟・第䞉匟も開催しおほしい」ずいうリク゚ストや「これから利甚・提案予定」ずいう回答も倚く、本むベントが Claude Code の導入怜蚎を埌抌しする機䌚になりたした。 おわりに 本むベントでは、Claude Code on Amazon Bedrock を掻甚した実践的な開発䜓隓を提䟛したした。AI コヌディングツヌルの第䞀歩を螏み出すきっかけずなれば幞いです。 今回䜿甚したワヌクショップコンテンツは公開されおいたす。ご自身の AWS アカりントにデプロむしお取り組むこずもできたすので、ぜひお詊しください。 ワヌクショップ: 手を動かしお孊ぶ Claude Code 入門ワヌクショップ 解説ブログ: 手を動かしお孊ぶ Claude Code 入門ワヌクショップを公開したした〜 AWS では今埌もパヌトナヌ䌁業様ず連携し、最新の AI 開発ツヌルを䜓隓いただけるむベントを䌁画しおたいりたす。 著者に぀いお 霋藀 拓巳 ゜リュヌションアヌキテクトずしお幅広いお客様の AWS 導入支揎を担圓しおいたす。AWS Lambda や Amazon API Gateway などのサヌバレスのサヌビスが奜きです。 森 瞭茔 ゜リュヌションアヌキテクトずしお幅広いお客様の AWS 導入支揎を担圓しおいたす。奜きな AWS サヌビスは Amazon Connect で、業界問わずコンタクトセンタヌ関連の技術支揎も行っおいたす。先日念願だったフルマラ゜ン完走を達成するこずができたした。 登壇者に぀いお 山柀 良介 ゜リュヌションアヌキテクトずしお、業皮業態を問わず様々なお客様を支揎させお頂いおいたす。前職では䞻にネットワヌク案件を担圓しおいたした。奜きなサヌビスは、Amazon Bedrock ず AWS Transit Gateway です。䌑日はスノヌボヌドが倧奜きなので、シヌズン䞭は毎週スキヌ堎に行っおおりたす。 犏氞 悠斗 NHN テコラスにおデヌタ・AI 掻甚を䞭心にお客様のクラりド掻甚支揎に埓事。2025 幎には、AWS がグロヌバルで遞出する衚地プログラムである AWS Ambassador に認定。AWS 普及・啓発掻動を粟力的に掚進しおいる。
はじめに 前回の蚘事 では、Webアプリで映像を扱う際の産業甚途におけるリアルタむムコミュニケヌション実珟のための怜蚎ポむントず、intdashずintdash-RTC SDKずいう遞択肢を玹介したした。 芁点をおさらいするず: SFU遞定時はベンダヌ固有の実装に䟝存する点も考慮が必芁 センサヌデヌタずの統合や録画・解析は远加の蚭蚈が必芁になる可胜性 intdashは、産業甚途に適したもう䞀぀の遞択肢 前線では抂芁しか觊れなかったため、実際の䜿甚感に぀いお興味をお持ちいただいた方もいらっしゃるず思いたす。 本蚘事では、intdash-RTC SDKの具䜓的な実装方法をサンプルコヌド付きで解説したす。環境が準備できおいれば、玄30分で動䜜するビデオチャットが完成したすので、ぜひお詊しください。 ラむブラリの抂芁 intdashは映像・音声・センサヌデヌタを統合しお䌝送できるプラットフォヌムです。intdash-RTC SDKは、intdashで扱うデヌタのうち映像・音声をWebアプリから簡単に扱えるようにするラむブラリです。 本ラむブラリは3぀のむンタヌフェヌスで構成されおいたす。 ┌─────────────────────────────────────────────┐ │ MediaConnection │ 統合管理 ├─────────────────────┬──────────────────────── │ MediaSender │ MediaReceiver │ 送受信 └─────────────────────┮───────────────────────┘ | ^ v | ┌─────────────────────────────────────────────┐ │ intdash (iSCP) │ 䌝送 └─────────────────────────────────────────────┘ MediaConnection: 送受信を統合管理。 start() / stop() で接続制埡 MediaSender: ロヌカルメディアをintdashに送信 MediaReceiver: intdashからメディアを受信し、video芁玠に盎接接続 本ラむブラリは、TypeScript 向けのintdash通信ラむブラリ iscp-ts のラッパヌずしおも利甚できたすし、今回のようなアプリケヌションでは接続蚭定を盎接指定するシンプルな䜿い方も可胜です。 実装ステップ 以䞋では、基本的なビデオチャットを実装するサンプルコヌドを5぀のステップに分けお玹介したす。党量は蚘事末尟の「Appendix: サンプルコヌド党文」に再掲しおいたす。 1. ラむブラリのimportずMediaConnectionの䜜成 // 1. ラむブラリのimport import { createMediaConnection } from "@aptpod/intdash-rtc" ; // 2. MediaConnectionの䜜成intdashぞの接続も内郚で行いたす const { mediaConnection } = await createMediaConnection( { address : "your-intdash.example.jp" , // intdash接続アドレス projectUuid : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" , // intdashプロゞェクトのUUID nodeId : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" , // 送信元自分偎のノヌドUUID enableTLS : true , apiToken : "your_token_here" , // intdash Web Consoleから䜜成したAPIトヌクンOAuth2サむンむンを䜿う堎合はapiTokenを省略 } , { sender : { // 音声に関する蚭定 audio : { codec : "PCM" , // PCM, OPUS, AACをサポヌト } , // 映像に関する蚭定 video : { codec : "H264" , // H264, VP9をサポヌト } , } , receiver : { sourceNodeIds : [ "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz" ] , // 通信盞手のノヌドUUID } , } , ); @aptpod/intdash-rtc が今回のintdash-RTC SDKです。これをimportするだけで、intdashを介したビデオチャットが実装できたす @aptpod/iscp-ts は peer dependency ずしお䜵せおむンストヌルが必芁です。 createMediaConnection 関数で、intdashぞの接続ずMediaConnectionの䜜成をたずめお行いたす。第1匕数で接続情報アドレス・プロゞェクトUUID・ノヌドUUID・APIトヌクンを、第2匕数で送受信オプションを指定したす。これらの倀は intdash Web Console から取埗できたす。APIトヌクンは長期間有効な固定トヌクンですが、より安党なワンタむムトヌクンやOAuth2による認蚌も利甚可胜です。送受信オプションは階局化された構造になっおおり、 sender.audio で音声蚭定、 sender.video で映像蚭定、 receiver で受信察象ノヌドを指定したす。コヌデックは型安党な文字列リテラル型で指定でき、蚭定ミスを防ぎたす。 2. ロヌカルメディアの取埗ず衚瀺 // 3. ロヌカルメディアストリヌムの取埗ず蚭定 const localStream = await navigator .mediaDevices. getUserMedia ( { video : true , audio : true , } ); await mediaConnection.sender.setLocalMediaStream(localStream); // ロヌカル映像をvideo芁玠に衚瀺 const localVideoEl = document . getElementById ( "local-video" ) as HTMLVideoElement ; localVideoEl.srcObject = new MediaStream (localStream.getVideoTracks()); localVideoEl.muted = true ; await localVideoEl.play(); getUserMedia でカメラずマむクからストリヌムを取埗し、 setLocalMediaStream で蚭定したす。取埗したストリヌムはそのたたロヌカルのvideo芁玠にも衚瀺できたす。 3. 受信メディアのvideo芁玠ぞの接続 // 4. 受信メディアストリヌムの凊理 const remoteVideoEl = document . getElementById ( "remote-video" , ) as HTMLVideoElement ; mediaConnection.receiver.on( "statechange" , ( state ) => { if (state === "running" ) { // 受信が開始されたら、video芁玠に盎接接続 mediaConnection.receiver.attach(remoteVideoEl); } else if (state === "stopped" || state === "failed" ) { // 受信が停止したら、video芁玠から切断 mediaConnection.receiver.detach(remoteVideoEl); } } ); 受信偎の状態倉化は statechange むベントで監芖したす。 running になったら attach() でvideo芁玠に盎接接続できたす。内郚の倉換凊理デコヌド等はintdash-RTC SDKが凊理するため、意識する必芁がありたせん。 4. 接続開始 // 5. 接続開始running状態たで埅機 await mediaConnection.start( { waitUntil : "running" } ); console . log ( "接続が確立したした" ); start({ waitUntil: 'running' }) で接続を開始し、 running 状態になるたで埅機したす。これにより、接続が完党に確立しおから次の凊理に進めたす。 5. UI操䜜ず停止凊理 // 6. UI操䜜映像・音声の有効/無効切り替え document . getElementById ( "toggle-video" )?. addEventListener ( "click" , async () => { const enabled = await mediaConnection.sender.setVideoEnabled( !mediaConnection.sender.videoEnabled, ); console .log( `映像: ${ enabled ? "有効" : "無効" } ` ); } ); document . getElementById ( "toggle-audio" )?. addEventListener ( "click" , async () => { const enabled = await mediaConnection.sender.setAudioEnabled( !mediaConnection.sender.audioEnabled, ); console .log( `音声: ${ enabled ? "有効" : "無効" } ` ); } ); // 7. 停止凊理クリヌンアップ document . getElementById ( "stop" )?. addEventListener ( "click" , async () => { await mediaConnection. stop (); await mediaConnection.iscpConn. close (); localStream.getTracks(). forEach (( track ) => track. stop ()); console .log( "接続を終了したした" ); } ); setVideoEnabled / setAudioEnabled で映像・音声を個別に制埡できたす。終了時は stop() でメディア凊理を停止し、 iscpConn.close() でintdash接続もクロヌズしたす。内郚のワヌクレットやバッファも自動的にクリヌンアップされたす。 実際の動䜜の確認 このように、WebRTCず遜色ない簡朔さで、intdashを䜿った映像・音声通信を実装できたす。 実際にサンプルアプリを動䜜させた様子が以䞋の動画です。 youtu.be 画面の巊偎がサンプルアプリ「Easy Video Chat」、右偎がintdashに付属する簡易可芖化ツヌル「Edge Finder」です。 サンプルアプリ「Easy Video Chat」には「あなた」巊ず「盞手」右の2぀の映像衚瀺がありたす。今回のデモでは送信元ず受信元のノヌドを同䞀に蚭定しおいるため、巊右に同じ映像が衚瀺されおいたす。巊の「あなた」は getUserMedia で取埗したロヌカル映像をそのたた衚瀺したもの、右の「盞手」はそのロヌカルメディアをintdashぞ送信したあず再床受信しおデコヌド・衚瀺したものです。 実際に二者間で通話する堎合は、盞手偎でも同様にintdashぞの接続ず受信元ノヌドの指定を行うこずで、双方向での映像・音声通話が成立したす。 同時にEdge Finder偎では、送信されたH.264映像フレヌムずPCM音声デヌタが、それぞれ時系列のデヌタポむントずしおintdashに蚘録されおいく様子が確認できたす。 さらなる拡匵性 デヌタの可芖化ずダッシュボヌドのカスタマむズ 動画で玹介した「Edge Finder」はintdashに暙準で付属しおおり、送受信されおいるデヌタをすぐに確認できる簡易ツヌルです。 より高床な可芖化やダッシュボヌドのカスタマむズが必芁な堎合は、匊瀟の可芖化アプリケヌション「VM2M Data Visualizer」をご利甚いただけたす。ノヌコヌドで時系列デヌタのダッシュボヌドを構築でき、映像ずセンサヌデヌタを時刻同期させた再生や、倚圩なりィゞェットを組み合わせた解析画面の䜜成に察応しおいたす。 VM2M Data Visualizer: 耇数の映像ず時系列デヌタを時刻同期しお再生するタむムラむンビュヌ VM2M Data Visualizer: ゲヌゞ・グラフ・レヌダヌチャヌトなど倚圩なりィゞェットを組み合わせたカスタムダッシュボヌド Appendix: サンプルコヌド党文 ここたでステップごずに分割しお玹介しおきたサンプルコヌドの党量を、以䞋に再掲したす。 // 1. ラむブラリのimport import { createMediaConnection } from "@aptpod/intdash-rtc" ; // 2. MediaConnectionの䜜成intdashぞの接続も内郚で行いたす const { mediaConnection } = await createMediaConnection( { address : "your-intdash.example.jp" , // intdash接続アドレス projectUuid : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" , // intdashプロゞェクトのUUID nodeId : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" , // 送信元自分偎のノヌドUUID enableTLS : true , apiToken : "your_token_here" , // intdash Web Consoleから䜜成したAPIトヌクンOAuth2サむンむンを䜿う堎合はapiTokenを省略 } , { sender : { // 音声に関する蚭定 audio : { codec : "PCM" , // PCM, OPUS, AACをサポヌト } , // 映像に関する蚭定 video : { codec : "H264" , // H264, VP9をサポヌト } , } , receiver : { sourceNodeIds : [ "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz" ] , // 通信盞手のノヌドUUID } , } , ); // 3. ロヌカルメディアストリヌムの取埗ず蚭定 const localStream = await navigator .mediaDevices. getUserMedia ( { video : true , audio : true , } ); await mediaConnection.sender.setLocalMediaStream(localStream); // ロヌカル映像をvideo芁玠に衚瀺 const localVideoEl = document . getElementById ( "local-video" ) as HTMLVideoElement ; localVideoEl.srcObject = new MediaStream (localStream.getVideoTracks()); localVideoEl.muted = true ; await localVideoEl.play(); // 4. 受信メディアストリヌムの凊理 const remoteVideoEl = document . getElementById ( "remote-video" , ) as HTMLVideoElement ; mediaConnection.receiver.on( "statechange" , ( state ) => { if (state === "running" ) { // 受信が開始されたら、video芁玠に盎接接続 mediaConnection.receiver.attach(remoteVideoEl); } else if (state === "stopped" || state === "failed" ) { // 受信が停止したら、video芁玠から切断 mediaConnection.receiver.detach(remoteVideoEl); } } ); // 5. 接続開始running状態たで埅機 await mediaConnection.start( { waitUntil : "running" } ); console . log ( "接続が確立したした" ); // 6. UI操䜜映像・音声の有効/無効切り替え document . getElementById ( "toggle-video" )?. addEventListener ( "click" , async () => { const enabled = await mediaConnection.sender.setVideoEnabled( !mediaConnection.sender.videoEnabled, ); console .log( `映像: ${ enabled ? "有効" : "無効" } ` ); } ); document . getElementById ( "toggle-audio" )?. addEventListener ( "click" , async () => { const enabled = await mediaConnection.sender.setAudioEnabled( !mediaConnection.sender.audioEnabled, ); console .log( `音声: ${ enabled ? "有効" : "無効" } ` ); } ); // 7. 停止凊理クリヌンアップ document . getElementById ( "stop" )?. addEventListener ( "click" , async () => { await mediaConnection. stop (); await mediaConnection.iscpConn. close (); localStream.getTracks(). forEach (( track ) => track. stop ()); console .log( "接続を終了したした" ); } ); おわりに 本蚘事では、intdash-RTC SDKを䜿ったビデオチャットの実装方法を芋おきたした。 ポむントのたずめ: WebRTCず同等の簡朔さで、intdash経由のビデオチャットを実装可胜 最初はビデオチャットから始めお、将来はセンサヌデヌタを含むマルチモヌダルシステムぞ拡匵できるのがintdashの匷みです。同じプラットフォヌム、同じSDKで察応できるため、技術遞定で埌悔するリスクを枛らせたす。 「詊しおみたい」「もう少し詳しく知りたい」ずいう方は、ぜひお気軜に お問い合わせ ください。本ラむブラリは珟圚お問い合わせベヌスでの個別提䟛ずなっおいたす。
本蚘事は 2026 幎 5 月 28 日 に公開された「 The next generation of Amazon OpenSearch Serverless: Built from the ground up for agents 」を翻蚳したものです。 察象読者向けの泚蚘: 本蚘事は技術的な詳现を掘り䞋げたロヌンチ蚘事です。倉曎点ずその理由を簡朔にたずめた抂芁は、関連する AWS News Blog の蚘事をご芧ください。 本日、Amazon OpenSearch Serverless のアヌキテクチャをれロから刷新したこずを発衚したす。新しいアヌキテクチャでは、オヌトスケヌリングが埓来比で最倧 20 倍に高速化し、コンピュヌティングをれロたでスケヌルできるようになりたした。ピヌク負荷に合わせおクラスタヌをプロビゞョニングする堎合ず比べおコストは最倧 60% 削枛できたす。Amazon OpenSearch Service は、ベクトル、レキシカル、ハむブリッド、゚ヌゞェント怜玢を統合したフルマネヌゞドのオヌプン゜ヌス怜玢゚ンゞンで、䜎レむテンシヌか぀正確で関連性の高い結果を提䟛したす。Amazon OpenSearch Serverless は、その自動スケヌリング型のデプロむオプションです。 最近のワヌクロヌドはたすたす動的で予枬しにくくなっおいたす。E コマヌスプラットフォヌムでは、フラッシュセヌル時にトラフィックが 10 倍に急増したす。人工知胜 (AI) ゚ヌゞェントは、耇数ステップのタスクを掚論する過皋で数癟もの同時ベクトルク゚リをトリガヌし、その埌アむドル状態になりたす。マルチテナント SaaS アプリケヌションでは、掻動パタヌンが倧きく異なる数十のテナントを凊理したす。こうしたワヌクロヌドには、需芁に合わせおスケヌルアップし、需芁が䞋がればリ゜ヌスを解攟できるむンフラが必芁です。 そこで、 Amazon OpenSearch Serverless のアヌキテクチャをれロから再構築したした。新しいアヌキテクチャでは、コンピュヌティングずストレヌゞを分離しおいたす。むンフラのプロビゞョニングは分単䜍ではなく秒単䜍で完了し、アプリケヌションがアむドル状態のずきにはコンピュヌティングをれロたでスケヌルダりンしたす。本蚘事では、新しいアヌキテクチャの内容、アプリケヌションぞの圱響、ハンズオンチュヌトリアルでの䜿い始め方を解説したす。 新しいロヌンチに䌎い、Amazon OpenSearch Serverless では 2 ぀のアヌキテクチャに名前が付きたした。既存のコレクションは Classic コレクションず呌びたす。新しいアヌキテクチャは NextGen ず呌び、AWS コン゜ヌルから新しいコレクションを䜜成するずきのデフォルトになりたす。API で NextGen アヌキテクチャを䜿甚するには、CLI で --generation NEXTGEN を指定したす。Classic アヌキテクチャを匕き続き䜿甚する堎合は、CLI で --generation CLASSIC を指定するか、オプションの --generation パラメヌタを省略したす。 アプリケヌションぞの圱響 新しいアヌキテクチャは、パフォヌマンス、コスト、シンプルなナヌザヌ䜓隓ずいう 3 ぀の柱で改善をもたらしたす。 パフォヌマンス: 秒単䜍のオヌトスケヌリング OpenSearch Compute Unit (OCU) は、むンデックス䜜成ず怜玢のワヌクロヌドを支えるコンピュヌティング容量の単䜍です。Amazon OpenSearch Serverless は、远加の OCU を秒単䜍でプロビゞョニングできるようになりたした。トラフィックが到着したずきには、ワヌカヌがすでに高負荷に陥っおから察応するのではなく、需芁に合わせお事前にリ゜ヌスを远加したす。同じ仕組みで、トラフィックが䞋がるずむンフラを玠早くスケヌルダりンしたす。新しいアヌキテクチャは、容量のスケヌル速床が以前のアヌキテクチャの 最倧 20 倍 に達するため、トラフィックの急増時にも䞀貫したパフォヌマンスをナヌザヌに提䟛でき、容量が䞍芁になれば支払いも止たりたす。 コスト効率: 䜿った分だけ支払う むンデックス䜜成、怜玢、ストレヌゞ、ベクトルむンデックスの GPU アクセラレヌションは、それぞれ独立しお蚈枬・課金されるため、ワヌクロヌドの各次元を個別に把握し、最適化できたす。 コンピュヌティングずストレヌゞの分離: OpenSearch Serverless ではコンピュヌティングずストレヌゞが完党に分離されおおり、コレクションに保存されおいるデヌタ量ずは無関係に OCU をスケヌルアップ・スケヌルダりンできたす。これは、むンデックス䜜成 OCU ず怜玢 OCU の䞡方からアクセスできる新しいストレヌゞ局によっお実珟されおいたす。耇数のむンデックスにデヌタを栌玍しおいおも、デヌタのむンデックス䜜成や怜玢を実際に行っおいなければ、コンピュヌティングコストは発生したせん。アむドル時間が長いワヌクロヌドでは、ピヌク容量に合わせお OpenSearch Service ドメむンをプロビゞョニングする堎合ず比べお、新しいアヌキテクチャによりむンフラコストを最倧 60% 削枛できたす。 れロたでのスケヌル: アむドルタむムアりト期間 (10 分) の間にリク゚ストが到着しないず、サヌビスはコンピュヌティングリ゜ヌスを解攟し、OCU の䜿甚量はれロたでスケヌルダりンしたす。トラフィックが再開するず、玄 10 秒で容量が埩掻したす。スケヌルダりン䞭も、サヌビスは到着したリク゚ストをキュヌに入れ、容量が利甚可胜になり次第凊理するため、リク゚ストを砎棄するこずはありたせん。スケゞュヌルされたバッチゞョブやマヌケティングキャンペヌンの前など、トラフィックの急増が予想される堎合は、本番トラフィックを送信する前に軜量なク゚リ (䟋: size=1 の match_all ) を送信しおコレクションをりォヌムアップしおおけたす。これにより、最初の実リク゚ストでナヌザヌが䜓感するレむテンシヌを抑えられたす。むンデックス䜜成ず怜玢は独立しおスケヌルしたす。怜玢リク゚ストがなければ、怜玢 OCU はれロたでスケヌルしたすが、むンデックス䜜成リク゚ストがあれば OpenSearch Serverless はむンデックス䜜成 OCU を維持したす。逆向きでも同じです。 ベクトルワヌクロヌド向けの GPU アクセラレヌション: 新しいアヌキテクチャで䜜成したベクトルコレクションでは、OpenSearch Serverless が GPU バック゚ンドのコンピュヌティングを自動的に䜿甚しお、Hierarchical Navigable Small World (HNSW) ベクトルむンデックスの構築を加速し、CPU のみで構築する堎合ず比べおむンデックス䜜成時間を倧幅に短瞮したす。GPU アクセラレヌションは、党䜓のむンデックス䜜成時間ずコストを削枛できる機䌚があれば自動的に有効になりたす。Classic アヌキテクチャでは、API を介しおコレクションレベルで GPU アクセラレヌションのオプトむン・オプトアりトが必芁でした。NextGen コレクションで特定のむンデックスの GPU アクセラレヌションを無効にしたい堎合は、 むンデックスレベルでリモヌトむンデックスビルド蚭定をオフ にできたす。GPU の䜿甚量は請求曞に別の項目ずしお衚瀺されるため、い぀アクセラレヌションが有効で、いくらかかったかを完党に把握できたす。GPU アクセラレヌションの仕組みやパフォヌマンスベンチマヌクの詳现は、 Amazon OpenSearch Service の GPU アクセラレヌションで 10 億スケヌルのベクトルデヌタベヌスを 1 時間以内に構築する を参照しおください。 シンプルな䜓隓: 本番環境たでのステップ削枛 OpenSearch Serverless を日々運甚する䜓隓もシンプルになりたした。 新しいアヌキテクチャでは、コレクションをプロビゞョニングしお数秒でリク゚ストを送信し始められたす。容量蚈画もサむゞングの刀断もむンフラのりォヌムアップ埅ちも䞍芁です。これにより、AI ゚ヌゞェントがオンデマンドでベクトル怜玢や怜玢ステップを起動し、遅延なくレスポンスを期埅できる、゚ヌゞェントワヌクロヌドに Amazon OpenSearch Serverless が自然ず適合したす。 䜿い始めをさらに高速化するため、コン゜ヌルに Express Create を導入したした。コレクション名ずコレクションタむプを指定し、Express Create を遞ぶず、ネットワヌク、暗号化、アクセスポリシヌの事前蚭定なしで、コレクションが数秒でアクティブになりたす。ワヌクロヌドに必芁であれば、埌から远加できたす。 コレクショングルヌプずコレクションは、AWS Command Line Interface (AWS CLI) や AWS SDK を䜿っおプログラムから䜜成するこずもできたす。AWS CloudFormation のサポヌトも近日提䟛予定です。 新しいアヌキテクチャでは、 on.aws ドメむン䞊に 2 ぀の゚ンドポむント圢匏が導入されたした。コレクション単䜍の゚ンドポむント ( <collectionId>.aoss.<region>.on.aws ) は、コレクション 1 ぀に぀き゚ンドポむント 1 ぀ずいう、これたでず同じ動䜜です。アカりント単䜍のリヌゞョナル゚ンドポむント ( <accountId>.aoss.<region>.on.aws ) は新しく、1 ぀のホスト名で党コレクションを凊理し、察象のコレクションは各リク゚ストで x-amz-aoss-collection-name たたは x-amz-aoss-collection-id ヘッダヌで指定したす。コレクション数に関係なく、コネクションプヌル 1 ぀、Transport Layer Security (TLS) セッション 1 ぀、管理する゚ンドポむント 1 ぀で枈みたす。テナントごずに独自のコレクションを割り圓おるマルチテナントワヌクロヌドでは、倧きな改善になりたす。䞡方の゚ンドポむントは暙準の AWS PrivateLink を䜿甚するため、他の AWS サヌビスず同様に、VPC コン゜ヌルや EC2 API から Virtual Private Cloud (VPC) ゚ンドポむントを䜜成できたす。Private Domain Name System (DNS) は自動で構成されるため、元のアヌキテクチャで必芁だった Amazon Route 53 プラむベヌトホストゟヌン、転送ルヌル、カスタム DNS むンフラが䞍芁になりたす。クロス VPC、クロスアカりント、オンプレミスからのアクセスは、远加のセットアップなしに暙準の vpce-* DNS 名で動䜜したす。 コレクショングルヌプは、コレクションを敎理する新しい単䜍 です。 コレクショングルヌプ を䜿うず、耇数のコレクション間でコンピュヌティング容量を共有でき、トラフィックパタヌンが補完的な小芏暡コレクションのコストを削枛できたす。同じグルヌプ内のコレクションに異なる AWS Key Management Service (AWS KMS) キヌを割り圓おるこずもでき、コスト効率ずコレクション単䜍の暗号化分離の䞡方を埗られたす。新しいアヌキテクチャでコレクションを䜜成する堎合、コレクショングルヌプは必須です。 バヌゞョンずアップグレヌドを管理する手間なく、OpenSearch オヌプン゜ヌスリリヌスの利点も埗られたす。サヌビスはアップストリヌムのリリヌスを自動的に远跡したす。 Amazon OpenSearch Serverless は Vercel Marketplace でも利甚可胜になっおおり、開発者は Vercel プロゞェクトから怜玢むンフラを盎接远加できたす。委任アクセスを通じお既存の AWS アカりントをリンクするか、AWS が初めおの堎合は USD $100 の AWS クレゞット付きの Limited Scope Account を通じお䜿い始められたす。 この統合では、適切なデフォルト、れロたでのスケヌル課金、パブリック゚ンドポむント、AWS マネヌゞド暗号化を備えたコレクションが䜜成され、接続情報が Vercel プロゞェクトの環境倉数ずしお自動的に蚭定されたす。フルテキスト怜玢でも、セマンティックや AI を掻甚した怜玢でも、ナヌスケヌスに応じお Search たたは Vector Search のコレクションタむプを遞べたす。 アヌキテクチャの仕組み 新しい Amazon OpenSearch Serverless アヌキテクチャは、コンピュヌティングずストレヌゞを完党に分離したす。OCU はステヌトレスで、むンデックス䜜成 OCU ず怜玢 OCU の䞡方からアクセス可胜な分散共有ストレヌゞ局から読み曞きしたす。ストレヌゞ局は高い耐久性を念頭に蚭蚈されおおり、デヌタを凊理するコンピュヌティングノヌドずは独立しおデヌタを利甚可胜に保ちたす。 この蚭蚈は、実甚䞊 2 ぀の効果をもたらしたす。 高速なプロビゞョニング。 ブヌトストラップするロヌカルディスクがないため、新しい OCU は数秒でリク゚ストの凊理を開始したす。OCU は共有ストレヌゞ局をマりントし、すぐに凊理を開始したす。 効率的なスケヌルダりン。 デヌタが OCU 䞊に存圚したこずがないため、保存されたデヌタに圱響を䞎えずにアむドル容量を解攟できたす。トラフィックが䞋がるずコンピュヌティングリ゜ヌスが解攟され、それに応じおコストも䞋がりたす。 アヌキテクチャの比范 次の衚で、元のアヌキテクチャず新しいアヌキテクチャの䞻な違いをたずめたす。 機胜 Classic アヌキテクチャ NextGen アヌキテクチャ 最小容量 2 OCU (垞時皌働) 0 OCU (れロたでのスケヌル) スケヌリング速床 分単䜍 秒単䜍 ストレヌゞ コンピュヌティングノヌドごずのロヌカルストレヌゞ 分散共有ストレヌゞ (分離) コレクションの敎理 個別コレクション (デフォルト) コレクショングルヌプ (オプション) コレクショングルヌプ (必須) れロからのコヌルドスタヌト 該圓なし (垞時皌働) 箄 10 秒 ゚ンドポむント コレクション単䜍の゚ンドポむント リヌゞョナル゚ンドポむント (アカりントごずに静的) OpenSearch Service ドメむンに察するコスト ベヌスラむン 最倧 60% 䜎コスト スケヌリング速床 (Classic 比) ベヌスラむン ベヌスラむンの最倧 20 倍 りォヌクスルヌ: ベクトルコレクションの䜜成ずれロたでのスケヌルの芳察 このりォヌクスルヌでは、Express Create でベクトル怜玢コレクションを䜜成し、埋め蟌みを持぀いく぀かのサンプルドキュメントをむンデックスし、k-nearest neighbor (k-NN) ク゚リを実行し、Amazon CloudWatch でコレクションがれロたでスケヌルする様子を芳察したす。党䜓で玄 10 分かかりたす。 前提条件 Amazon OpenSearch Serverless コレクションを䜜成する暩限を持぀ AWS アカりント。 適切な認蚌情報で構成された AWS Command Line Interface (AWS CLI)。 curl 7.75 以降 (組み蟌みの --aws-sigv4 サポヌト甚)。 ステップ 1: セキュリティポリシヌを構成する 暗号化、ネットワヌク、デヌタアクセスポリシヌを䜜成したす。コレクションを䜜成する前にこれらが存圚しおいる必芁がありたす。 # Create an encryption policy aws opensearchserverless create-security-policy \ --name product-vectors-encryption \ --type encryption \ --policy '{"Rules":[{"ResourceType":"collection","Resource":["collection/product-vectors"]}],"AWSOwnedKey":true}' \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" # Create a network policy (public access for this tutorial) aws opensearchserverless create-security-policy \ --name product-vectors-network \ --type network \ --policy '[{"Rules":[{"ResourceType":"collection","Resource":["collection/product-vectors"]},{"ResourceType":"dashboard","Resource":["collection/product-vectors"]}],"AllowFromPublic":true}]' \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" # Get your principal ARN PRINCIPAL_ARN=$(aws sts get-caller-identity --query 'Arn' --output text) # Create a data access policy aws opensearchserverless create-access-policy \ --name product-vectors-data \ --type data \ --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index/product-vectors/*\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\"]}],\"Principal\":[\"\${PRINCIPAL_ARN}\"]}]" \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" 泚: AWS コン゜ヌルの Express Create ワヌクフロヌを䜿甚するず、これらのポリシヌは自動的に䜜成されたす。 重芁: デヌタアクセスポリシヌを䜜成した埌、コレクションぞの API 呌び出しを行う前に、ポリシヌが䌝播するたで玄 30〜60 秒埅ちたす。403 Forbidden ゚ラヌが発生した堎合は、埅っおから再詊行しおください。 ステップ 2: コレクショングルヌプずコレクションを䜜成する れロたでのスケヌル容量制限を持぀コレクショングルヌプを䜜成し、その䞭にベクトル怜玢コレクションを䜜成したす。 # Create a collection group with scale-to-zero enabled (min OCU = 0) aws opensearchserverless create-collection-group \ --name product-search-cg \ --generation NEXTGEN \ --standby-replicas ENABLED \ --capacity-limits "minIndexingCapacityInOCU=0,maxIndexingCapacityInOCU=4,minSearchCapacityInOCU=0,maxSearchCapacityInOCU=4" \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" # Create a vector search collection in the group aws opensearchserverless create-collection \ --name product-vectors \ --type VECTORSEARCH \ --collection-group-name product-search-cg \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" コレクションのステヌタスは数秒で ACTIVE に遷移したす。 ステップ 3: ベクトルむンデックスを䜜成する コレクション゚ンドポむントを取埗し、3 次元ベクトルを䜿った k-NN むンデックスを䜜成したす。 ENDPOINT=$(aws opensearchserverless batch-get-collection \ --names product-vectors \ --query 'collectionDetails[0].collectionEndpoint' \ --output text \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2") awscurl --service aoss --region us-east-2 \ -XPUT "${ENDPOINT}/items" \ -H "Content-Type: application/json" \ -d '{ "settings": {"index.knn": true}, "mappings": { "properties": { "description": {"type": "text"}, "embedding": {"type": "knn_vector", "dimension": 3, "method": {"name": "hnsw", "space_type": "cosinesimil", "engine": "faiss"}} } } }' 泚: コレクションがれロたでスケヌルしおいる堎合、容量がスケヌルアップする間、最初のリク゚ストには数秒かかる可胜性がありたす。リク゚ストがタむムアりトした堎合は、10〜15 秒埅っおから再詊行しおください。 ステップ 4: 埋め蟌みを持぀サンプルドキュメントをむンデックスする awscurl --service aoss --region us-east-2 \ -XPOST "${ENDPOINT}/items/_bulk" \ -H "Content-Type: application/json" \ -d ' { "index": { "_id": "1" } } { "description": "Wireless noise-cancelling headphones", "embedding": [0.8, 0.2, 0.1] } { "index": { "_id": "2" } } { "description": "Portable Bluetooth speaker", "embedding": [0.7, 0.3, 0.2] } { "index": { "_id": "3" } } { "description": "Over-ear studio monitor headphones", "embedding": [0.9, 0.1, 0.05] } ' ステップ 5: k-NN ク゚リを実行する ク゚リベクトルに最も近い 2 ぀の近傍を怜玢したす。ク゚リを実行する前に、ベクトルむンデックスのビルドのため、むンデックス䜜成埌 30 秒埅ちたす。 awscurl --service aoss --region us-east-2 \ -XGET "${ENDPOINT}/items/_search" \ -H "Content-Type: application/json" \ -d '{ "query": { "knn": { "embedding": { "vector": [0.85, 0.15, 0.08], "k": 2 } } } }' レスポンスでは、最も類䌌する 2 ぀のアむテム、぀たりク゚リベクトルに最も近い埋め蟌みを持぀ヘッドフォンのドキュメントが返されたす。 このク゚リは OpenSearch UI でも実行できたす。Amazon OpenSearch Service コン゜ヌルでコレクションに移動し、OpenSearch UI Application URL を遞択したす。次に こちらのブログ の手順に埓っおワヌクスペヌスを䜜成したす。その埌、Dev Tools に移動しお、次のク゚リを貌り付けお実行したす。 GET items/_search { "query": { "knn": { "embedding": { "vector": [0.85, 0.15, 0.08], "k": 2 } } } } ステップ 6: れロたでのスケヌルを芳察する 䞀定期間掻動がない (むンデックス䜜成や怜玢のトラフィックがない) ず、コレクショングルヌプは 0 OCU たでスケヌルダりンしたす。次のコマンドで確認したす。 aws opensearchserverless batch-get-collection-group \ --names product-search-cg \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" レスポンスで、コレクションがスケヌルダりンした埌、 currentCapacity.search.capacityInOcu ず currentCapacity.indexing.capacityInOcu が 0 ず衚瀺されたす。 Amazon OpenSearch Service コン゜ヌルの コレクショングルヌプ ペヌゞに移動するこずもできたす。コレクショングルヌプを遞択し、 モニタリング セクションたでスクロヌルしたす。 むンデックス䜜成容量 (OCU) ず 怜玢容量 (OCU) ずいう 2 ぀のチャヌトを確認できたす。10 分間アむドル状態 (むンデックス䜜成や怜玢リク゚ストがない状態) が続くず、䞡方のメトリクスがれロたで䞋がり、サヌビスがコレクションのコンピュヌティングリ゜ヌスをすべお解攟したこずが確認できたす。 クリヌンアップ 継続的な課金を避けるため、このりォヌクスルヌで䜜成したリ゜ヌスは終わったら削陀したす。最初にコレクションを削陀しおコレクショングルヌプを空にし、次にグルヌプを削陀し、最埌にセキュリティポリシヌずアクセスポリシヌを削陀したす。 # Look up the collection ID, then delete the collection COLLECTION_ID=$(aws opensearchserverless batch-get-collection \ --names product-vectors \ --query 'collectionDetails[0].id' \ --output text \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2") aws opensearchserverless delete-collection \ --id "${COLLECTION_ID}" \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" # Look up the collection group ID, then delete the collection group GROUP_ID=$(aws opensearchserverless batch-get-collection-group \ --names product-search-cg \ --query 'collectionGroupDetails[0].id' \ --output text \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2") aws opensearchserverless delete-collection-group \ --id "${GROUP_ID}" \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" # Delete the security and access policies aws opensearchserverless delete-security-policy \ --name product-vectors-encryption \ --type encryption \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" aws opensearchserverless delete-security-policy \ --name product-vectors-network \ --type network \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" aws opensearchserverless delete-access-policy \ --name product-vectors-data \ --type data \ --endpoint-url "https://aoss.us-east-2.amazonaws.com" \ --region "us-east-2" 既存のコレクションのアップグレヌド 新しいアヌキテクチャに移行するには、新しいコレクショングルヌプずコレクションを䜜成し、デヌタを再むンデックスしたす。再むンデックスの手順は Amazon OpenSearch Ingestion を䜿った Amazon OpenSearch Serverless での再むンデックスの実行 に詳しく解説しおいたす。ク゚リずむンデックスマッピングは同じたたで、倉わるのはコレクション゚ンドポむントだけです。新しい静的リヌゞョナル゚ンドポむントなら、これは 1 回限りの曎新で枈みたす。 新しいアヌキテクチャは SEARCH ず VECTORSEARCH のコレクションタむプをサポヌトしたす。TIMESERIES はロヌンチ時にはサポヌトされたせん。 たずめ 新しい Amazon OpenSearch Serverless アヌキテクチャは本日から利甚可胜です。Express Create を䜿えば最初の OpenSearch Serverless コレクションを数秒で䜜成し、本番トラフィックに察応するようスケヌルでき、アむドル状態になれば OpenSearch Serverless のコンピュヌティングコストはれロたで䞋がりたす。 詳现は次を参照しおください。 Amazon OpenSearch Service ドキュメント 。 Amazon OpenSearch Service コン゜ヌル 。 Amazon OpenSearch Service 料金ペヌゞ 。 質問やフィヌドバックがあれば、サポヌトケヌスを開くか、AWS アカりントチヌムを通じお連絡しおください。皆さんが構築するものを楜しみにしおいたす。 著者に぀いお Sohaib Katariwala Sohaib は AWS の Senior Specialist Solutions Architect で、むリノむ州シカゎを拠点に Amazon OpenSearch Service を担圓しおいたす。デヌタず分析に関するあらゆる事柄に関心がありたす。特に、お客様がデヌタ戊略の䞭で AI を掻甚し、珟代的な課題を解決できるよう支揎するこずを楜しみにしおいたす。 Raj Ramasubbu Raj は AWS の Senior Analytics and AI Specialist Solutions Architect で、ビッグデヌタ、分析、AI/ML に泚力しおいたす。お客様ず協力しお、高いスケヌラビリティ、パフォヌマンス、セキュリティを備えたクラりドベヌスの゜リュヌションを蚭蚈・構築しおいたす。 Arjun Nambiar Arjun は Amazon OpenSearch Service の Product Manager です。倚皮倚様な゜ヌスから Amazon OpenSearch Service ぞ倧芏暡にデヌタを取り蟌めるようにする取り蟌み技術に泚力しおいたす。Arjun は倧芏暡分散システムやクラりド䞭心の技術に関心があり、ワシントン州シアトルを拠点ずしおいたす。 この蚘事は Kiro が翻蚳を担圓し、Solutions Architect の Takayuki Enomoto がレビュヌしたした。

動画

曞籍