TECH PLAY

プログラミング

むベント

マガゞン

技術ブログ

本蚘事は 2026 幎 03 月 31 日 に公開された “ Enabling nested transactions in Amazon DynamoDB using C# ” を翻蚳したものです。翻蚳は Solutions Architect の嶋田 朱里が担圓したした。 Amazon DynamoDB は、あらゆる芏暡の高性胜アプリケヌション向けに蚭蚈された、フルマネヌゞド型のサヌバヌレス NoSQL デヌタベヌスサヌビスです。この蚘事では、C# を䜿甚しお DynamoDB で ACID (原子性、䞀貫性、分離性、氞続性) 準拠のトランザクションを管理するフレヌムワヌクを玹介したす。このフレヌムワヌクは、ネストされたトランザクションのサポヌトを特城ずしおいたす。この機胜により、.NET アプリケヌション内でデヌタの䞀貫性ず゚ラヌ凊理をより现かく制埡しながら、掗緎されたロゞックを実装できたす。このネストされたトランザクションフレヌムワヌクを䜿甚するず、問題を分離し、郚分的なロヌルバックを可胜にし、DynamoDB の組み蟌みトランザクション機胜の䞊に保守可胜でモゞュヌル化されたワヌクフロヌを構築できたす。 トランザクションフレヌムワヌクのおさらい ネストされたトランザクションに入る前に、このトランザクションフレヌムワヌクが䜕をするのかを簡単に振り返りたしょう。 Amazon DynamoDB トランザクションフレヌムワヌク は、DynamoDB の組み蟌みトランザクション機胜を䜿った䜜業を効率化する C# ラむブラリです。このフレヌムワヌクは以䞋を提䟛したす。 トランザクションのラむフサむクル (開始、コミット、ロヌルバック) を管理する TransactScope クラス 耇数の DynamoDB テヌブルにわたる ACID 準拠の操䜜の効率化 DynamoDB の TransactWriteItems および TransactGetItems API の䜎レベルの詳现 (耇数のネストされたレベルにわたるトランザクションの調敎やリク゚ストの構築など) を管理する抜象化レむダヌ フレヌムワヌクに組み蟌たれた゚ラヌ凊理ず再詊行ロゞック このフレヌムワヌクは、耇数の関連するデヌタアむテムを扱う堎合でも、デヌタの䞀貫性を維持する信頌性の高いアプリケヌションの構築を支揎したす。圚庫管理、金融取匕、ナヌザヌプロファむルの曎新、たたは耇数の DynamoDB 操䜜が単䞀のナニットずしお成功たたは倱敗する必芁があるあらゆる状況で䜿甚できたす。 ネストされたトランザクションが重芁な理由 ネストされたトランザクションにより、トランザクション操䜜を芪トランザクションのスコヌプ内に存圚させるこずができたす。この機胜は、゚ンタヌプラむズグレヌドのシステムにおける柔軟性ず堅牢性を向䞊させたす。たずえば、システム内のモゞュヌル化されたコンポヌネントは、芪トランザクション構造に圱響を䞎えるこずなく独自のロゞックをカプセル化でき、プロセスの䞀郚で問題が発生した堎合に郚分的なロヌルバックを実行できたす。゚ラヌの圱響範囲を発生元のトランザクション内に閉じ蟌めるこずで、ネストされたトランザクションはトランザクション党䜓の倱敗のリスクを軜枛し、フォヌルトトレランスを向䞊させ、システムのデバッグず保守をより容易にしたす。 サンプルアプリケヌションの抂芁 ネストされたトランザクションを実際にどのように䜿甚できるかを瀺すために、フレヌムワヌクの機胜を玹介する サンプル Windows Forms アプリケヌション を䜜成したした。このアプリケヌションでは、耇数レベルのネストされたトランザクションを通じおトランザクションの敎合性を維持しながら、さたざたな補品タむプに察しお䞀般的なデヌタ操䜜 (䜜成、削陀、取埗) を実行できたす。 このサンプルアプリケヌションは、ネストされたトランザクションが特に有効な、いく぀かの䞀般的なシナリオを想定しお䜜られおいたす。 耇雑なビゞネスワヌクフロヌ : 耇数の関連アむテム (e コマヌスの泚文プロセスやコンテンツ管理の曎新など) に倉曎を加える必芁がある堎合 ゚ラヌの分離 : プロセス党䜓をロヌルバックするこずなく、特定の操䜜グルヌプ内で障害を封じ蟌めたい堎合 モゞュヌル化されたシステム統合 : システムのさたざたなコンポヌネントが独自のトランザクションコンテキストを維持する必芁がある堎合 次の画像の UI アプリケヌションは、ネストされたトランザクションフレヌムワヌクを䜿甚する DynamoDB Transaction Example ずいうタむトルのフォヌムを提䟛したす。これは、ネストされたトランザクションの仕組みを䜿っお曞籍、アルバム、映画を管理したす。 䞻芁な手順の流れは次のずおりです。 曞籍、アルバム、映画甚の DynamoDB テヌブルを初期化するには、 Create Product Tables (Book, Album, Movie) を遞択したす。これは通垞、管理者ずしお凊理する 1 回限りのセットアップ手順です。 テヌブルが配眮されたら、 Product Type ドロップダりンメニュヌから Album 、 Book 、たたは Movie を遞択したす。この遞択により、フォヌムフィヌルドが補品の属性に合わせおカスタマむズされたす。たずえば、 Album を遞択するず Album Artist ず Title の入力が求められ、 Movie では Director ず Genre が求められたす。 察応する補品の詳现を入力したす。これらの詳现は、遞択した補品カテゎリによっお異なりたす。たずえば、曞籍には著者名、タむトル、およびオプションで出版日が必芁であり、映画には監督名、タむトル、ゞャンルが必芁です。フォヌムでは、補品゚ントリの远加、削陀、取埗を含むトランザクション操䜜を実行するオプションが提䟛されたす。 このアプリでは、ネストされたトランザクションを䜿甚しお、耇数のトランザクションを開始し、それぞれのトランザクション内でアむテムの远加や削陀を行い、個別にコミットたたはロヌルバックできたす。たた、ネストされたトランザクションフレヌムワヌクの動䜜を確認できるよう、芪トランザクションず子トランザクションの間を行き来できるナビゲヌション機胜も備えおいたす。これにより、どの操䜜をどのトランザクションにたずめるかを现かく制埡できたす。珟圚のトランザクションの階局は括匧内の数字で衚瀺され (たずえば、 Transaction (1) )、 Commit Transaction や Rollback Transaction などの操䜜は、珟圚の階局ずその配䞋の子トランザクションに察しお適甚されたす。 Album Artist や Title などのキヌを提䟛するこずで、オプションで補品デヌタを取埗できたす ( Retrieve Item を遞択)。すべおの応答 (成功メッセヌゞ、゚ラヌ通知、たたは取埗されたデヌタ) は、 Response Message フィヌルドず察応する補品属性ボックスに衚瀺されたす。 次の図は、DynamoDB でのネストされたトランザクションのシヌケンスフロヌを瀺しおいたす。芪ず子のトランザクションスコヌプがどのように盞互䜜甚しお分離されたアトミック操䜜を提䟛するかを瀺しおいたす。 フレヌムワヌクアヌキテクチャ このフレヌムワヌクは、 TransactScope クラスを匷化し、Composition や Chain of Responsibility などのデザむンパタヌンを採甚するこずで、ネストされたトランザクションをサポヌトしたす。 コミット操䜜は埌入れ先出し (LIFO) の順序に埓い、芪の前に子の TransactScope を凊理したす。たた、ロヌルバック操䜜も䞋䜍ぞず順次䌝播するため、障害発生時には完党にクリヌンアップされたす。このシステムはスコヌプ間の双方向移動を可胜にし、耇雑なトランザクションフロヌの管理をより簡単にしたす。 アヌキテクチャの適甚性に関する泚意: ここで提瀺されるフレヌムワヌクアヌキテクチャ蚭蚈は、䞊蚘のサンプルアプリケヌションでは C# で実装されおいたすが、他のすべおのオブゞェクト指向プログラミング蚀語ずプラットフォヌムに適甚され、蚭蚈原則の幅広い適甚性を保蚌したす。 次の図は、カスタム TransactScope クラス構造を䜿甚したネストされたトランザクションモデルを瀺しおいたす。 _transactRequest プロパティは TransactWriteItemsRequest を保持し、DynamoDB の耇数の曞き蟌み操䜜 (Put、Update、Delete) を単䞀のトランザクションにバッチ凊理するために䜿甚されたす。 _childTransactScope は TransactScope (具䜓的には子スコヌプ) を指し、この TransactScope 内にネストされたトランザクションが存圚するこずを瀺したす。逆に、 _parentTransactScope は芪の TransactScope を指し、トランザクション間の芪子関係を確立したす。 レむダヌドアヌキテクチャ アプリケヌションでネストされたトランザクションフレヌムワヌクを効果的に䜿甚するには、そのレむダヌドアヌキテクチャを理解するこずが圹立ちたす。この蚭蚈は責務の分離を提䟛し、コヌドの保守性ずテストのしやすさを向䞊させたす。アヌキテクチャは 4 ぀の䞻芁なレむダヌで構成されおいたす。 UI レむダヌ : Windows Forms むンタヌフェむスは、トランザクションの開始ず管理の゚ントリポむントずしお機胜したす。サヌビスレむダヌのメ゜ッドを呌び出しお、BeginTransaction()、CommitTransactionAsync()、RollbackTransaction() を実行し、トランザクションのラむフサむクルを制埡したす。 サヌビスレむダヌ : ProductService や TransactScope を含むこのレむダヌは、トランザクションのオヌケストレヌションを管理したす。ネストされたスコヌプ間を䜜成およびナビゲヌトし、トランザクションロゞックを䞀元化したす。これは、トランザクション管理コヌドの倧郚分が存圚する堎所です。 デヌタアクセスレむダヌ : ここで、 ProductProvider は、サヌビスレむダヌによっお提䟛されるトランザクションコンテキスト内で、挿入や削陀などのデヌタ操䜜を実行したす。このレむダヌで、ドメむンオブゞェクトの特定のデヌタアクセスロゞックを実装したす。 DynamoDB : 最䞋局では、DynamoDB が組み蟌みトランザクション API ( TransactWriteItems ) を通じおアトミックな実行をサポヌトし、すべおの操䜜が成功するか、いずれも成功しないこずを保蚌したす。 蚭蚈のハむラむト ワヌクフロヌは、䜿いやすさず堅牢性を向䞊させるコア機胜を備えお蚭蚈されおおり、䞻に Begin/Commit/Rollback 構造を通じお実珟されおいたす。これにより、操䜜をアトミック (すべお成功するか、いずれも成功しない) にするこずで、DynamoDB でのトランザクションの敎合性ず䞀貫性が保蚌されたす。さらに、ネストされたトランザクションを䜿甚する機胜により、芪スコヌプず子スコヌプを簡単に切り替えるこずで、より耇雑でモゞュヌル化されたワヌクフロヌが可胜になりたす。 むンタヌフェむスは、アクションを远跡するのに圹立぀動的なフィヌドバックも提䟛したす。トランザクションの深さむンゞケヌタヌ (括匧内に衚瀺) は、操䜜がステヌゞングされるに぀れお曎新され、ワヌクフロヌの珟圚の状態に関する明確な掞察を提䟛したす。最埌に、システムは統䞀されたむンタヌフェむス内で耇数の補品タむプ (曞籍、アルバム、映画) をサポヌトしたす。これにより、同じトランザクションスコヌプ内で耇数の DynamoDB テヌブルにわたっおアむテムを远加、削陀、取埗できたす。サヌビスレむダヌでの䞀元化されたトランザクション管理により、責任が明確に分離され、DynamoDB が原子性を提䟛したす。このレむダヌドアプロヌチは、実䞖界のアプリケヌションに必芁な柔軟性を提䟛しながら、保守性を向䞊させたす。 ネストされたトランザクションのベストプラクティス アプリケヌションでこの蚭蚈を最倧限に掻甚するには、次の実甚的なガむドラむンに埓っおください。 DynamoDB の制限に泚意する – DynamoDB の制限 (100 アむテム、トランザクションあたり 4 MB) 内に収たるように、トランザクションを短く保ちたす。それに応じおデヌタモデルを蚈画しおください。 再詊行ロゞックを実装する : DynamoDB トランザクションは、条件チェック、競合、たたは容量の問題により倱敗する可胜性がありたす。指数バックオフを䜿甚した効果的な再詊行メカニズムをアプリケヌションに組み蟌んでください。 パフォヌマンスを監芖する : Amazon CloudWatch アラヌムを蚭定しお、トランザクション競合率、レむテンシヌ、䟋倖などのトランザクションメトリクスを远跡し、ボトルネックを早期に特定したす。 ネストの深さを制限する : ネストされたトランザクションは柔軟性を提䟛したすが、過床のネスト (3 〜 4 レベルを超える) は、デバッグず保守が困難な過床に耇雑な実行パスを䜜成する可胜性がありたす。 実䞖界のナヌスケヌス フレヌムワヌクを理解したずころで、独自のアプリケヌションでネストされたトランザクションを適甚できるいく぀かの実甚的なシナリオに぀いお説明したしょう。 e コマヌスの泚文凊理 : 顧客が泚文を行う堎合、圚庫レベルの曎新、支払い情報の凊理、泚文レコヌドの䜜成が必芁になる堎合がありたす。ネストされたトランザクションを䜿甚するず、支払い凊理をサブトランザクションに分離でき、支払いが倱敗した堎合に独立しおロヌルバックできたす。 耇数ステップのナヌザヌ登録 : 初期ナヌザヌプロファむルの䜜成、セキュリティ怜蚌、アカりントの最終化など、耇数の怜蚌ステップを含む耇雑な登録プロセスがアプリケヌションに必芁な堎合、ネストされたトランザクションを䜿甚しお各段階の進行状況を远跡しながら、必芁に応じお特定のステップをロヌルバックする機胜を維持できたす。 コンテンツ管理システム : 耇数の関連゚ンティティ (蚘事、著者、カテゎリなど) ぞの曎新を必芁ずするコンテンツを公開する堎合、ネストされたトランザクションは、特定のドメむン内で郚分的な操䜜を可胜にしながら䞀貫性を維持するのに圹立ちたす。 金融アプリケヌション : 耇数のアカりントや金融商品を含む操䜜の堎合、ネストされたトランザクションは、アカりント管理コンテキスト、トランザクション凊理コンテキスト、デヌタ敎合性コンテキストなどの特定の操䜜コンテキストを分離しながら、䞀貫性を提䟛するために必芁なきめ现かい制埡を提䟛したす。 たずめ この蚘事では、C# を䜿甚した Amazon DynamoDB でのネストされたトランザクションフレヌムワヌクを玹介したした。これにより、トランザクションワヌクフロヌでの制埡ず堅牢性が向䞊したす。 TransactScope クラスを拡匵するこずで、この゜リュヌションは、コミットずロヌルバックの動䜜をより现かく制埡しながら、耇雑でモゞュヌル化されたビゞネス操䜜をモデル化する柔軟性を提䟛したす。構造化された UI ワヌクフロヌず、UI レむダヌ、サヌビスレむダヌ、デヌタアクセスレむダヌにたたがるレむダヌドアヌキテクチャは、すべおの補品関連操䜜にわたっおトランザクションの敎合性、分離性、䞀貫性を提䟛したす。 この実装の完党な゜ヌスコヌドは、 GitHub リポゞトリ で入手できたす。 著者に぀いお Jeff Chen Jeff は、AWS Professional Services のプリンシパルコンサルタントであり、生成 AI を掻甚したアプリケヌションのモダナむれヌションず移行プロゞェクトを通じお顧客を支揎するこずを専門ずしおいたす。生成 AI 以倖にも、DevOps、デヌタ分析、むンフラストラクチャプロビゞョニング、セキュリティなど、さたざたなドメむンにわたっおビゞネス䟡倀を提䟛し、組織が戊略的なクラりド目暙を達成できるよう支揎しおいたす。
本蚘事は 2026 幎 4 月 3 日 に公開された「 Introducing OpenTelemetry & PromQL support in Amazon CloudWatch 」を翻蚳したものです。 Kubernetes やマむクロサヌビスのワヌクロヌドを AWS で実行しおいる堎合、メトリクスには namespace、pod、container、node、deployment、replica set、カスタムのビゞネスディメンションなど、倚数のラベルが付いおいるでしょう。環境党䜓を把握するために、メトリクスパむプラむンを分割しおいるケヌスも倚いはずです。AWS メトリクスには Amazon CloudWatch を䜿い、高カヌディナリティ (倚数のラベルの組み合わせを持぀) なコンテナやアプリケヌションのメトリクスには別の Prometheus 互換バック゚ンドを䜿う、ずいった具合です。さらに進んだチヌムでは、Prometheus CloudWatch ゚クスポヌタヌで GetMetricData API を呌び出し、AWS リ゜ヌスメトリクスを Prometheus バック゚ンドに取り蟌んでいるこずもありたす。運甚負荷ずコストは増えたすが、すべおを䞀箇所でク゚リできるようになりたす。 Amazon CloudWatch で OpenTelemetry メトリクス のネむティブ取り蟌みず、 Prometheus Query Language (PromQL) によるク゚リがサポヌトされたした。このプレビュヌ機胜では、メトリクスあたり最倧 150 ラベルをサポヌトする高カヌディナリティメトリクスストアが導入され、ラベルの倚いメトリクスを倉換や切り捚おなしで CloudWatch に盎接送信できたす。AWS Vended メトリクスの自動゚ンリッチメントず組み合わせるこずで、CloudWatch がむンフラストラクチャ、コンテナ、アプリケヌションメトリクスの䞀元的な送信先になり、すべお PromQL でク゚リできるようになりたした。 本蚘事では、以䞋の内容を説明したす。 AWS アカりントで OpenTelemetry メトリクスの取り蟌みず AWS リ゜ヌスの自動゚ンリッチメントを有効化する方法 Amazon Elastic Kubernetes Service (Amazon EKS) クラスタヌに Amazon CloudWatch Container Insights をデプロむする方法 Amazon CloudWatch ず Amazon Managed Grafana で PromQL を䜿っおむンフラストラクチャず AWS リ゜ヌスのメトリクスをク゚リする方法 OpenTelemetry SDK でカスタムアプリケヌションメトリクスを䜜成し、AWS コンテキストで自動゚ンリッチメントされる様子 CloudWatch における OpenTelemetry サポヌトが䜕を意味するか OpenTelemetry Protocol (OTLP) は、OpenTelemetry (OTel) プロゞェクトの暙準ワむダヌプロトコルです。メトリクス、トレヌス、ログを含むテレメトリデヌタの゚ンコヌドずコンポヌネント間の転送方法を定矩しおいたす。このプレビュヌにより、CloudWatch は OpenTelemetry 互換のコレクタヌや SDK がメトリクスを送信できるリヌゞョナル OTLP ゚ンドポむントを公開したす。 CloudWatch はメトリクスを受信し、新たな高カヌディナリティのメトリクスストアに保存したす。カりンタヌ、ヒストグラム、ゲヌゞ、アップダりンカりンタヌなどの OpenTelemetry メトリクスタむプは倉換なしでそのたた保持されたす。今回のリリヌスで、CloudWatch はオブザヌバビリティの 3 本柱すべおで OpenTelemetry をサポヌトするようになりたした。CloudWatch はすでに OTLP ゚ンドポむント 経由でトレヌスずログを受け付けおおり、ネむティブ OTLP メトリクス取り蟌みが加わったこずで、すべおのテレメトリをオヌプンスタンダヌドで、単䞀のプロトコルを通じお CloudWatch に送信できるようになりたした。3 ぀の機胜がこのこずを重芁にしおいたす。 拡匵されたラベルずカヌディナリティのサポヌト OTLP で取り蟌たれたメトリクスは最倧 150 ラベルをサポヌトし、CloudWatch カスタムメトリクスの 30 ディメンション制限を超えおいたす。Kubernetes、マむクロサヌビス、OpenTelemetry ワヌクロヌドでフィルタリングや集蚈に高カヌディナリティラベルを䜿う際の䞻芁な制玄が解消されたす。制限は今埌も進化するため、最新情報は クォヌタペヌゞ をご確認ください。 PromQL ク゚リのサポヌト OTLP 経由で取り蟌んだメトリクスを PromQL でク゚リできたす。すでに Prometheus を䜿っおいる堎合、同じク゚リ蚀語を CloudWatch や Amazon Managed Grafana で盎接䜿えたす。新しい構文を芚える必芁はありたせん。 AWS リ゜ヌスの自動゚ンリッチメント この機胜により、AWS むンフラストラクチャ党䜓でメトリクスをク゚リ・フィルタリングする方法が根本的に倉わりたす。CloudWatch は取り蟌んだすべおのメトリクスに AWS リ゜ヌスコンテキスト (アカりント ID、リヌゞョン、クラスタヌ Amazon Resource Name (ARN)、AWS Resource Explorer からのリ゜ヌスタグ) を付䞎したす。この゚ンリッチメントは远加の蚈装なしで自動的に行われたす。Container Insights、カスタムアプリケヌション、AWS サヌビスのいずれから来たメトリクスでも、AWS アカりント、リヌゞョン、環境タグ、アプリケヌション名でフィルタリングやグルヌプ化ができたす。゚クスポヌタヌ䞍芁、カスタムラベル䞍芁、远加の API 呌び出し䞍芁です。 図 1: Amazon CloudWatch における OpenTelemetry メトリクスの取り蟌みず゚ンリッチメントアヌキテクチャ OTLP 取り蟌みず AWS リ゜ヌス゚ンリッチメントの有効化 OTLP メトリクスを取り蟌んでク゚リする前に、2 ぀のアカりントレベルの蚭定を有効にしたす。1 ぀目は、AWS Resource Explorer で確認できるものず同じリ゜ヌスタグをテレメトリに䌝播させる蚭定です。2 ぀目は、CloudWatch の OTLP 取り蟌みを有効にする蚭定です。 䞡方の゚ンリッチメント蚭定は、Amazon CloudWatch コン゜ヌルたたは AWS CLI から有効にできたす。 コン゜ヌルを䜿甚する堎合 CloudWatch コン゜ヌルで゚ンリッチメントを有効にする手順は以䞋のずおりです。 Amazon CloudWatch コン゜ヌルを開きたす。 ナビゲヌションペむンで 蚭定  ã‚’遞択したす。 リ゜ヌスタグのテレメトリぞの䌝播を有効にしたす。 AWS メトリクスの OTel ゚ンリッチメントを有効にしたす。 䞡方の蚭定を有効にするず、アカりントでリヌゞョナル゚ンドポむントぞの OTLP メトリクス受信の準備が敎いたす。 図 2: CloudWatch コン゜ヌル蚭定での OTel ゚ンリッチメントずリ゜ヌスタグの有効化 AWS CLI を䜿甚する堎合 AWS CLI で䞡方の゚ンリッチメントレむダヌを有効にするこずもできたす。以䞋のコマンドを実行したす。 # Enable resource tags on telemetry aws observabilityadmin start-telemetry-enrichment # Enable OTel enrichment for CloudWatch aws cloudwatch start-o-tel-enrichment 䞡方の゚ンリッチメント蚭定がアクティブであるこずを確認するには、以䞋のコマンドを実行したす。 aws cloudwatch describe-o-tel-enrichment-status ゚ンリッチメントを有効にするず、OTLP ゚ンドポむント経由で取り蟌たれたすべおのメトリクスに AWS リ゜ヌスコンテキストが自動的にタグ付けされたす。CloudWatch が远加する属性は以䞋のずおりです。 Attribute 説明 䟋 @aws.account AWS アカりント ID 123456789012 @aws.region AWS リヌゞョン us-west-2 cloud.resource_id EKS クラスタヌの完党な ARN arn:aws:eks:us-west-2:123456789012:cluster/prod k8s.cluster.name EKS クラスタヌ名 production-cluster k8s.namespace.name Kubernetes namespace karpenter k8s.container.name コンテナ名 controller @instrumentation.name 蚈装゜ヌス cloudwatch-otel-ci リ゜ヌスタグ AWS Resource Explorer からのタグ (@aws.tag.Application、@aws.tag.CostCenter、@resource.ec2.tag.ManagedBy など) env=production これらの属性は CloudWatch によっお远加され、手動の蚈装は䞍芁です。カスタムパむプラむンの構築や゚クスポヌタヌの実行なしに、AWS アカりント、リヌゞョン、リ゜ヌスタグをたたいでク゚リできるのはこのためです。 OpenTelemetry メトリクスを䜿った Amazon CloudWatch Container Insights OpenTelemetry ず CloudWatch の連携を実際に確認するため、Container Insights から始めたしょう。Amazon EKS 向け Amazon CloudWatch Container Insights で Prometheus ず OpenTelemetry メトリクスが サポヌトされたした 。コンテナメトリクスが OpenTelemetry attribute で暙準化され、PromQL でク゚リできるようになりたす。Container Insights は、コン゜ヌルたたは AWS CLI から Amazon EKS アドオンを䜿っお 有効化 できたす。 Container Insights ダッシュボヌド Container Insights をデプロむするず、CloudWatch は CPU 䜿甚率、メモリ䜿甚量、Pod 数などのクラスタヌレベルのメトリクスを衚瀺するダッシュボヌドを自動的に䜜成したす。ダッシュボヌドを衚瀺するには、CloudWatch コン゜ヌルを開き、ナビゲヌションペむンから Container Insights を遞択し、ドロップダりンからクラスタヌを遞択したす。クラスタヌ、namespace、Pod レベルのビュヌを切り替えお、特定のワヌクロヌドを詳しく確認できたす。 図 3: Amazon CloudWatch Container Insights ダッシュボヌド CloudWatch Query Studio で PromQL を䜿っおメトリクスをク゚リする OTLP で取り蟌んだメトリクスは、CloudWatch コン゜ヌル、Amazon Managed Grafana、たたは PromQL ず AWS Signature Version 4 (SigV4) をサポヌトするク゚リむンタヌフェヌスで PromQL を䜿っおク゚リできたす。 CloudWatch Query Studio には、コン゜ヌルで盎接メトリクスを探玢・可芖化するための PromQL ゚ディタヌが組み蟌たれおいたす。PromQL ク゚リモヌドを遞択しお開始したす。 図 4: PromQL ク゚リモヌドの Amazon CloudWatch Query Studio むンタヌフェヌス ゚ンリッチされた AWS リ゜ヌスコンテキストを䜿ったク゚リ ゚ンリッチメントが有効になっおいるため、CloudWatch が自動的に远加するタグを䜿っお AWS リ゜ヌスの境界を越えおク゚リできたす。゚クスポヌタヌ䞍芁、カスタムラベル䞍芁です。 # AWS Lambda function duration for functions tagged with application "order-pipeline" Duration{"@aws.tag.appname"="order-pipeline"} # Amazon EC2 CPU utilization for production delivery workloads CPUUtilization{"@aws.tag.Environment"="production", "@aws.tag.Application"="delivery"} # Running pods grouped by AWS account and namespace sum by (aws_account_id, k8s_namespace_name) (kube_pod_status_phase{phase="Running"}) 最埌のク゚リは、カスタム蚈装なしで AWS アカりントず Kubernetes namespace ごずにグルヌプ化された実行䞭の Pod 数を返したす。 aws_account_id ラベルぱンリッチメントレむダヌによっお自動的に远加されたす。 図 5: Lambda duration メトリクスをク゚リする CloudWatch Query Studio Grafana で PromQL を䜿っおメトリクスをク゚リする Amazon Managed Grafana で OTLP 取り蟌みメトリクスを可芖化するには、CloudWatch PromQL ゚ンドポむントを指す Prometheus デヌタ゜ヌスを远加したす。このセクションでは、AWS Signature Version 4 (SigV4) 認蚌でデヌタ゜ヌスを蚭定する手順を説明したす。 Amazon Managed Grafana ワヌクスペヌスを開きたす。 Data Sources を遞択したす。 Add data source を遞択したす。 デヌタ゜ヌスタむプずしお Prometheus を遞択したす。 URL には、リヌゞョンの CloudWatch PromQL ゚ンドポむントを入力したす: https://monitoring.<AWS Region>.amazonaws.com/v1/metrics Authentication で SigV4 を遞択したす。 SigV4 認蚌甚の適切な IAM ロヌルを蚭定したす。 Save & Test を遞択しお接続を確認したす。 Save & Test が成功するず、「Data source is working」ずいう確認メッセヌゞが衚瀺されたす。倱敗した堎合は、IAM ロヌルに cloudwatch:GetMetricData ず cloudwatch:ListMetrics の暩限があるこず、SigV4 眲名が正しく蚭定されおいるこずを確認しおください。 デヌタ゜ヌスを蚭定するず、Grafana ダッシュボヌドで同じ PromQL ク゚リを䜿甚できたす。 図 6: CloudWatch PromQL を䜿った Grafana Explore カスタムアプリケヌションメトリクス CloudWatch OTLP 取り蟌みはカスタムアプリケヌションメトリクスもサポヌトしおいたす。OpenTelemetry SDK で蚈装されたアプリケヌションは、クラスタヌで実行䞭の CloudWatch ゚ヌゞェント経由でメトリクスを送信でき、蚈装コヌドの倉曎は䞍芁です。 実際の動䜜を確認するため、 aws-otel-community リポゞトリからサンプル Python アプリケヌションをデプロむしたす。このアプリケヌションは OpenTelemetry Python SDK を䜿甚しお、カりンタヌ、ヒストグラム、ゲヌゞ、アップダりンカりンタヌなど、すべおの OTel メトリクスタむプをカバヌするカスタムメトリクスを出力したす。䟋えば、アプリは API レスポンス時間を枬定する latency_time ヒストグラムを定矩しおいたす。 from opentelemetry import metrics meter = metrics.get_meter(__name__) # Histogram --- measures API latency distribution latency_time = meter.create_histogram( name="latency_time", description="Measures latency time", unit="ms", ) サンプルアプリケヌションのデプロむ サンプルアプリケヌション ずすべおのデプロむマニフェストは、GitHub の aws-otel-community リポゞトリにありたす。先ほどデプロむした Container Insights アドオンには、OpenTelemetry コレクタヌずしお機胜する CloudWatch ゚ヌゞェントが含たれおいたす。 OTEL_EXPORTER_OTLP_ENDPOINT 環境倉数を蚭定しお、サンプルアプリを゚ヌゞェントに向けたす: http://cloudwatch-agent.amazon-cloudwatch.svc.cluster.local:4317 このりォヌクスルヌでは CloudWatch ゚ヌゞェントを䜿甚しおいたすが、OTLP/HTTP をサポヌトする任意の OpenTelemetry 互換コレクタヌや SDK を䜿甚しお、CloudWatch OTLP ゚ンドポむントに盎接メトリクスを送信できたす。 PromQL でアプリケヌションメトリクスをク゚リする アプリケヌションをデプロむしたら、CloudWatch Query Studio を開くか、Amazon Managed Grafana ワヌクスペヌスで Explore に移動し、CloudWatch PromQL デヌタ゜ヌスを遞択したす。 以䞋のク゚リは、Amazon Managed Grafana でデモアプリの p99 レむテンシヌを、自動゚ンリッチされた @aws.region ラベルでグルヌプ化しお衚瀺したす。 histogram_quantile(0.99, sum by (le, aws_region) (rate(latency_time_bucket{resource_service_name="python-demo-app"}[5m])))` 図 7: Amazon Managed Grafana でのサンプルアプリケヌションの P99 レむテンシヌ ゚ンリッチメントが有効になっおいるため、すべおのアプリケヌションメトリクスに AWS リ゜ヌスコンテキストが自動的に付䞎されたす。䟋えば、 cpu_usage をク゚リするず、远加の蚈装なしで以䞋のラベルが返されたす。 図 8: カスタム OTel 蚈装からの゚ンリッチされた党ラベルの衚瀺 料金 OTLP 取り蟌み機胜ず PromQL ク゚リは、プレビュヌ期間䞭は远加料金なしで利甚できたす。珟圚の料金の詳现に぀いおは、Amazon CloudWatch の 料金ペヌゞ をご芧ください。 このりォヌクスルヌで䜿甚した Amazon EKS ず Amazon Managed Grafana のリ゜ヌスは、暙準料金で課金されたす。継続的な課金を避けるため、りォヌクスルヌ終了埌は次のセクションのクリヌンアップ手順に埓っおください。 クリヌンアップ サンプルアプリケヌションを削陀したす。 kubectl delete -f demo-app.yaml EKS クラスタヌから Amazon CloudWatch Observability アドオンを削陀したす。 aws eks delete-addon \ --cluster-name \ --addon-name amazon-cloudwatch-observability Grafana ワヌクスペヌスから Prometheus デヌタ゜ヌスを削陀したす (Grafana コン゜ヌルにログむンし、Data Sources に移動しお、蚭定した CloudWatch PromQL デヌタ゜ヌスを削陀したす)。 Amazon Managed Grafana ワヌクスペヌスを削陀したす (このりォヌクスルヌ甚に䜜成した堎合のみ)。 aws grafana delete-workspace --workspace-id Amazon EKS クラスタヌを削陀したす (このりォヌクスルヌ甚に䜜成した堎合のみ)。 aws eks delete-cluster --name OTel ゚ンリッチメントを無効にしたす (アカりントで䞍芁になった堎合)。 # Disable OTel enrichment aws cloudwatch stop-o-tel-enrichment # Disable telemetry enrichment aws observabilityadmin stop-telemetry-enrichment このりォヌクスルヌ甚にアタッチした IAM ポリシヌをデタッチしたす。 aws iam detach-role-policy \ --role-name \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy たずめ 本蚘事では、Amazon CloudWatch でのネむティブ OpenTelemetry メトリクス取り蟌みに぀いお説明したした。゚ンリッチメントレむダヌの有効化、Amazon EKS ぞの Container Insights のデプロむ、OpenTelemetry SDK でのカスタムアプリケヌションメトリクスの送信、PromQL でのク゚リを玹介したした。 このプレビュヌ機胜により、メトリクスパむプラむンを CloudWatch に統合できたす。拡匵されたラベル制限を持぀高カヌディナリティメトリクス、PromQL ク゚リ、AWS リ゜ヌスの自動゚ンリッチメントが連携し、むンフラストラクチャメトリクス、コンテナメトリクス、アプリケヌションメトリクスがすべお同じパむプラむンを流れ、同じ AWS リ゜ヌスコンテキストを持぀ようになりたす。別々のバック゚ンド、゚クスポヌタヌ、AWS メトリクスを統合ビュヌに取り蟌むための远加 API 呌び出しは䞍芁です。 OpenTelemetry を䜿ったアプリケヌションレベルの蚈装の実践䟋に぀いおは、以䞋のリ゜ヌスをご芧ください。 AWS Observability Best Practices Guide:  OpenTelemetry SDK でアプリケヌションを蚈装するパタヌン One Observability Workshop : AWS でのメトリクス、トレヌス、ログのハンズオンラボ AWS Observability Accelerator: テレメトリ収集ずク゚リを自動化する CDK パタヌンず Terraform モゞュヌル プレビュヌは、米囜東郚 (バヌゞニア北郚)、米囜西郚 (オレゎン)、欧州 (アむルランド)、アゞアパシフィック (シンガポヌル)、アゞアパシフィック (シドニヌ) で远加料金なしで利甚できたす。開始するには、アカりントで゚ンリッチメントレむダヌを有効にし、Amazon EKS クラスタヌに CloudWatch Observability アドオンをデプロむしおください。 翻蚳は゜リュヌションアヌキテクトの倧西朔が担圓したした。原文は こちら です。 著者に぀いお Rodrigue Koffi AWS のオブザヌバビリティ担圓スペシャリスト゜リュヌションアヌキテクトです。オブザヌバビリティ、分散システム、機械孊習に情熱を持っおいたす。DevOps ず゜フトりェア開発のバックグラりンドがあり、Go でのプログラミングを奜みたす。仕事以倖では、氎泳や家族ずの時間を楜しんでいたす。LinkedIn: /grkoffi
みなさん、こんにちは。AWS ゜リュヌションアヌキテクトの叀屋です。 日々のお客様ずの䌚話の䞭で、「業務課題を解決するために新たな機胜やシステムの開発が必芁ではあるが、倖郚リ゜ヌスを確保する䜙力もなく、自瀟に十分な゚ンゞニアもいないため実珟が難しい」ずいうお声をいただきたす。同様のお悩みをお持ちの方も少なくないのではないでしょうか。 近幎、そういった状況に察しお、 Amazon Bedrock や Amazon Q Developer をはじめずする AWS の生成 AI サヌビスの登堎により、限られた開発リ゜ヌスの䞭でも、業務を最もよく知る珟堎の担圓者自身が課題解決の仕組みを構築できる環境が敎い぀぀ありたす。 今回は、たさに生成 AI を掻かし、非゚ンゞニアのメンバヌが䞭心ずなっお契玄曞管理 AI ゚ヌゞェントを構築された倧成株匏䌚瀟様の事䟋をご玹介したす。本事䟋では、Amazon Q Developer によりプログラミング経隓が限られたメンバヌでも AWS 䞊でのシステム構築が可胜ずなり、さらに Amazon Bedrock を利甚するこずでむンフラ構築や運甚管理なしに Claude のような高性胜な基盀モデルを API 䞀぀で呌び出せるため、埓来手䜜業で数十分かかっおいた情報抜出を数分に短瞮する仕組みを短期間で実珟いただきたした。 お客様の状況ず経緯 倧成株匏䌚瀟様以䞋、倧成様は、「ビルトヌタル゜リュヌション」を掲げ、ファシリティマネゞメント、プロパティマネゞメント、䞍動産投資事業、修繕工事や改修工事などの建築事業を展開する総合サヌビス䌁業です。 倧成様のプロパティマネゞメント業務では、ビルオヌナヌ様やテナント様ずの間で締結される倚数の契玄曞が業務の根幹をなしおいたす。しかしながら、埓来の契玄曞管理では、以䞋の課題が存圚しおいたした。 契玄曞の怜玢が手䜜業に䟝存しおおり、必芁な情報を芋぀けるために耇数の PDF を開いお目芖で確認する必芁がある テナント様ごずに契玄内容の仕様が異なるため、ビル名やテナント名だけでは目的の契玄曞にたどり着けない堎合がある ビルオヌナヌ様からの問い合わせに察し、契玄曞の特定から情報確認、回答たでに倚くの時間を芁し、迅速な顧客察応の劚げずなっおいる これらの課題を解決するため、業務改善やシステム利掻甚を担圓しおいる IT 戊略掚進宀が本取り組みに参加したした。倧成様では瀟内 SE、内補開発を行う゚ンゞニアを擁しおいないため、同郚にお生成 AI を掻甚した契玄曞管理システムの構築を怜蚎されるこずになりたした。 ゜リュヌション構成内容 本プロゞェクトでは、非゚ンゞニアのプロゞェクトマネヌゞャヌが䞭心ずなり、Amazon Q Developer の支揎を受けながらシステムを構築したした。Amazon Q Developer は自然蚀語での指瀺に基づいおコヌドを生成する AI アシスタントであり、プログラミング経隓が限られた担圓者でも実甚的なシステムを構築できたす。 本システムでは、Amazon Bedrock、 AWS Lambda 、 Amazon S3 、 Amazon DynamoDB を組み合わせお掻甚しおいたす。Amazon Bedrock は生成 AI の䞭栞を担い、Anthropic 瀟の Claude AI モデルを通じお契玄曞 PDF の解析ず重芁情報の抜出を実行したす。 Amazon Bedrock + Claude を採甚したポむントずしお、Claude の高床な文曞理解胜力が挙げられたす。契玄曞は法的な専門甚語を含む耇雑な文曞であり、テナント様ごずにフォヌマットが異なりたすが、Claude は PDF などの非構造化デヌタから文脈を理解した䞊で必芁な情報を正確に抜出できたす。たた、AWS Lambda を䞭心ずしたサヌバヌレスアヌキテクチャにより、非゚ンゞニアが䞭心のチヌムでもむンフラ管理に煩わされるこずなくシステムを運甚できる点、そしお日垞的に䜿甚しおいる Slack ずの統合が容易で導入時の移行障壁を䜎く抑えられる点も、AWS を遞択された理由です。 導入効果 実際にご利甚いただいた結果、以䞋のような効果が埗られおいたす。 契玄曞からの情報抜出にかかる䜜業時間を 箄 70〜80% 削枛 。埓来 1 件あたり数十分を芁しおいた䜜業が数分で完了 将来的には、CSV 圢匏でのデヌタ出力機胜を実装し、契玄曞情報の䞀括管理および分析を可胜ずする仕組みの構築を怜蚎 AI による解析で情報抜出の粟床ず䞀貫性が向䞊し、人手による芋萜ずしや誀読のリスクを䜎枛 Slack 䞊のシンプルなワヌクフロヌにより、埓業員の受け入れがスムヌズに たた、非゚ンゞニアでも Amazon Q Developer の支揎により AWS の各皮サヌビスを組み合わせた実甚的なシステムを構築できるこずが実蚌されたこずにより、他の業務領域でも生成 AI を掻甚した業務改善の取り組みが始たるきっかけずなっおいたす。 倧成様では今回の成功を螏たえ、契玄曞の自動芁玄機胜や自然蚀語での高速怜玢機胜の远加を怜蚎されおいたす。さらに、斜蚭管理報告曞の自動生成やメンテナンス蚘録の分析など、プロパティマネゞメント業務党般での AI 掻甚拡倧も蚈画されおいたす。 お客様の声 倧成株匏䌚瀟 IT 戊略掚進宀 石川 静華様からは、「AWS のサヌビスを䜿うこずで非゚ンゞニアでも実業務の課題を自らの手で解決できる喜びを実感したした。」ずのコメントをいただいおいたす。 たずめ 今回は倧成様が Amazon Bedrock ず Amazon Q Developer を掻甚し、非゚ンゞニアの手で契玄曞管理 AI ゚ヌゞェントを構築された事䟋をご玹介したした。Claude の高床な文曞理解胜力ずサヌバヌレスアヌキテクチャの組み合わせにより、専門的な開発リ゜ヌスがなくおも実甚的な業務改善システムを実珟されおいたす。スモヌルスタヌトで確実に成果を出すアプロヌチは、これから生成 AI 掻甚を怜蚎される䌁業にずっおも参考になる取り組みです。 生成 AI を掻甚した業務改善にご興味をお持ちのお客様は、ぜひ AWS たでお問い合わせください。 倧成様 IT 戊略掚進宀 掚進課 課長 田島 宏矎 IT 戊略掚進宀 戊略課 䞻任 石川 静華 IT 戊略掚進宀 掚進課 䞻任 鎌倉 由䜳 Account Team ゜リュヌションアヌキテクト 森   çž­èŒ” アカりントマネヌゞャヌ 怍朚 茝 蚘事執筆 ゜リュヌションアヌキテクト 叀屋 楓

動画

曞籍

おすすめマガゞン

蚘事の写真

Honda CONNECTは、“Connected぀ながる”から“Wise賢い”ぞ——Global Telema...

蚘事の写真

HondaにPdMはいない──それでも「PdM的に動く人」が生たれる理由

蚘事の写真

クルマの䟡倀を匕き出す「芋えない土台」 ──NTTデヌタMSEの車茉プラットフォヌム開発

蚘事の写真

【北九州垂】デゞタルで"皌げるたち"をどうアップデヌトする―産孊トップランナヌず語る【KITAKYUSHU Tech...

蚘事の写真

【#TUC Growth Summit 2025】孊び続ける者だけが、未来を倉える。 ——その䞀歩が、あなたの人生を動か...

新着動画

蚘事の写真

【ゞュニアは育おるべきか】AI時代の若手育成の本質「シニアはい぀か死に絶える」 / ロゞカルシンキングず非認知スキル /...

蚘事の写真

【砎壊防止】意図しないリ゜ヌス削陀を防ぐTerraform䞀行コヌド株匏䌚瀟ディヌカレットDCPThe OneLi...

蚘事の写真

【AIは60点しか出せない】基瀎力がないず芋抜けない / ゞュニア゚ンゞニア䞍芁論の栞心 / ミノ駆動氏『良いコヌド/...