
- TOP
- ã¿ã°äžèЧ
- ããã°ã©ãã³ã°
ããã°ã©ãã³ã°
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
æ¬èšäºã¯ 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ïŒ ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ããæ£® çèŒ ã¢ã«ãŠã³ããããŒãžã£ãŒãæ€æšãèŒ èšäºå·çïŒ ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ããå€å±ãæ¥























