ããã«ã¡ã¯ãSCSKã®åæšã§ãã æ¬èšäºã§ã¯ã ä¿åååŠç ã®äžã§ãèšç®åŠçã«çŠç¹ãåœãŠã以äžã®3ã€ã®æ©èœã«ã€ããŠãå
·äœçãªèšå®äŸã亀ããªãã解説ããŸãã 乿° å·®å 1ç§ãããã®å·®å ä¿åååŠçã«ã€ã㊠ä¿åååŠçãšã¯ãZabbixãç£èŠå¯Ÿè±¡ããååŸããããŒã¿ã ããŒã¿ããŒã¹ã«ä¿åããçŽåã«ããã®å€ãå å·¥ã»å€æããããã®æ©èœ ã§ããäŸãã°ãååŸããããŒã¿ã®åäœã倿ïŒãã€ãâããããªã©ïŒãããã环ç©ãç¶ããããŒã¿ãããååããã©ãã ãå¢ãããããšããå·®åãé床ãèšç®ãããã§ããŸãã ããã«ãããäžèŠãªããŒã¿ãä¿åããã«æžãããããŒã¿ããŒã¹ã®è² è·ã軜æžã§ããã»ããããŒã¿ãæŽåœ¢ããããšã§ãããæè»ã§é«åºŠãªç£èŠãåãããããã°ã©ãæç»ãå®çŸã§ããŸãã 2 アイテムの値の保存前処理 www.zabbix.com 乿° ååŸããããŒã¿ã«å¯ŸããŠã æå®ããæ°å€ãæãç®ããŠä¿åããåŠç ã§ããæŽæ°ã ãã§ãªããå°æ°ïŒ0.5ãªã©ïŒãç§åŠç衚èšïŒ1e+2ãªã©ïŒã䜿çšå¯èœã§ãã ãŠãŒã¹ã±ãŒã¹ åäœã®å€æã: ãã€ã(B)ãããã(bit)ã«å€æãããããªç§ãç§ã«å€æãã åçã®èª¿æŽã: 0.0ïœ1.0ã§è¡šãããå€ãã0ïœ100(%)ã®è¡šèšã«çŽã ç©çéã®è£æ£: ã»ã³ãµãŒçã®çããŒã¿ã«ä¿æ°ãæããŠæ£ããé»å§ã枩床ã«ãã å®äŸ byteåäœã§åºåãããOSããããã¯ãŒã¯æ©åšãè¿ãçã®ããŒã¿ããbitåäœã§ç£èŠããèšå®ãããŸãã ã¢ã€ãã ããã³ä¿åååŠçã®èšå®ã¯ä»¥äžã®ãšããã§ãã ã乿°ãã®ä¿åååŠçã§ã¯ããã©ã¡ãŒã¿ã«å
¥åããæ°å€ããååŸããå
ããŒã¿ã«æããŠããŒã¿ããŒã¹ã«ä¿åããŸãã ä»åèšå®ããä¿åååŠçã¯ãååŸããå€ã«8ãæããèšå®ãšãªã£ãŠããŸãã ãã¡ãã®ããã«ååŸãããŸãã å·®å (çŸåšã®å€) ïŒ (ååã®å€) ãèšç®ãããã®å·®åéãä¿åããåŠç ã§ããååãã§ãã¯æãããã©ãã ãå€ãå¢ããïŒãŸãã¯æžã£ãïŒãããèšé²ããŸãã ãŠãŒã¹ã±ãŒã¹ 环ç©ã«ãŠã³ã¿ã®å¢å éç£èŠ: ããµãŒãèµ·åæããã®ç·ã¢ã¯ã»ã¹æ°ãããç·ãšã©ãŒæ°ãã®ãããªã环ç©ããŠããããŒã¿ã«å¯ŸããŠã ãååã®ç£èŠããäœä»¶å¢ãããããç¥ãããå Žå ãã¡ã€ã«ã®å¢å ãµã€ãºãã: ãã°ãã¡ã€ã«ã®ãµã€ãºç£èŠãªã©ã§ãååããäœãã€ãæžã蟌ãŸããããç¥ãããå Žå å®äŸ ãã¡ã€ã«ãµã€ãºã®å·®åãè¿ãèšå®ãããŸãã ã¢ã€ãã ããã³ä¿åååŠçã®èšå®ã¯ä»¥äžã®ãšããã§ãã ãå·®åãã®ä¿åååŠçã¯ããã©ã¡ãŒã¿ãèšå®ãããååã®é
ç®ãããå·®åããéžæããã ããšãªã£ãŠããŸãã ãã¡ãã®ããã«ååŸãããŸãã 1ç§åœããã®å·®å (çŸåšã®å€ ïŒ ååã®å€) ÷ (ååããã®çµéç§æ°) ãèšç®ããåŠç ã§ãããããããé床ïŒã¬ãŒãïŒããç®åºããããã«äœ¿çšããŸãã ãŠãŒã¹ã±ãŒã¹ ãã©ãã£ãã¯ç£èŠ (bps): 环ç©è»¢ééãããçŸåšã®éä¿¡é床ãç®åºãã ãã£ã¹ã¯I/O (IOPS)ã : 环ç©èªã¿æžãåæ°ããã1ç§éãããã®åŠçåæ°ãç®åºãã CPUã¹ã€ããåæ°ããã: ã³ã³ããã¹ãã¹ã€ããã®çޝç©åæ°ãããçŸåšã®è² è·ç¶æ³ïŒæ¯ç§ã®åãæ¿ãåæ°ïŒãç®åºãã å®äŸ ã乿°ãã®å®äŸã§äœæããåä¿¡ããåèšãããæ°ãååŸããã¢ã€ãã ãããã1ç§ãããã®å·®åããåã£ãŠã€ã³ããŠã³ã垯å(bps)ãæ±ããèšå®ãããŸãã ã¢ã€ãã ã¯ã乿°ãã®ãã®ãšåãã§ãããä¿åååŠçã¯ã乿°ãã®ä¿åååŠçã«å ããŠã1ç§ãããã®å·®åãã远å ããèšå®ãšãªã£ãŠãããŸãã ã1ç§ãããã®å·®åãã®ä¿åååŠçã¯ããã©ã¡ãŒã¿ãèšå®ãããååã®é
ç®ããéžæããã ããšãªããŸãã ä¿åååŠçã¯ãèšå®ããã¹ãããã®äžããé çªã«å®è¡ãããŸããä»åã®äŸã§ã¯ããŸãã乿°ãã§ãã€ãããããã«å€æãããã®å€æåŸã®å€ã䜿ã£ãŠã1ç§ãããã®å·®åããèšç®ããŠããŸãã ãã¡ãã®ããã«ååŸãããŸãã ãŸãšã æ¬èšäºã§ã¯ãZabbixã®ä¿åååŠçæ©èœã®äžãããèšç®åŠçãè¡ãã乿°ããå·®åãã1ç§ãããã®å·®åãã«ã€ããŠè§£èª¬ããŸããã ç£èŠå¯Ÿè±¡ããååŸã§ããããŒã¿ã¯ãå¿
ããããã®ãŸãŸç£èŠãã°ã©ãåã«é©ãã圢åŒã§ãããšã¯éããŸãããããããä¿åååŠçãé©åã«çµã¿åãããããšã§ã以äžã®ãããªã¡ãªãããåŸãããŸãã ããŒã¿ã®æå³ä»ã: åãªãæ°å€ïŒãã€ãæ°ãªã©ïŒããçŽæçã«åãããããåäœïŒbpsãªã©ïŒã«å€æã§ãã å€åã®å¯èŠåãã: 环ç©å€ã§ã¯ãªããå¢å åŸåãé床ãå¯èŠåããããšã§ãé害ã®äºå
ãæãããããªã DBè² è·ã®è»œæžã : äžèŠãªçããŒã¿ãä¿åãããå¿
èŠãªå å·¥æžã¿ããŒã¿ã®ã¿ãä¿åã§ãã ã¹ã¯ãªãããSQLã§ã®å å·¥ã«é ŒãããZabbixã®èšå®ã ãã§æè»ãªããŒã¿åŠçãå¯èœã§ãããã²ãããã®æ©èœã掻çšããŠãããå¹ççã§ç²ŸåºŠã®é«ãç£èŠç°å¢ãæ§ç¯ããŠã¿ãŠãã ããã æåŸãŸã§ãèªã¿ããã ãããããšãããããŸããïŒ âŒ Zabbixã«é¢ããããããèšäº ãZabbixãä¿åååŠçãŸãšã -ããã¹ãç·š- Zabbixã®ä¿åååŠçïŒããã¹ãç·šïŒã培åºè§£èª¬ãæ£èŠè¡šçŸã眮æãæåååé€ãªã©5ã€ã®ææ³ã䜿ããã³ãã³ãåºåããã°ããå¿
èŠãªå€ãæœåºãããã¯ããã¯ãå
·äœäŸã§ç޹ä»ãæªå å·¥ã®ããŒã¿ãæŽåœ¢ããç£èŠã®è³ªãåäžããããæ¹å¿
èŠã§ãã blog.usize-tech.com 2025.12.04 ãZabbixãUserParameterã§ã¹ã¯ãªããå®è¡çµæãç£èŠããæ¹æ³ Zabbixã®UserParameterèšå®ã¬ã€ããç¬èªã®ç£èŠé
ç®ã远å ããæ¹æ³ãåŒæ°ã䜿ã£ãã³ãã³ãã®äœ¿ãåããsystem.runãšã®éããå
·äœäŸã§ç޹ä»ãç£èŠæ¥åãå¹çåãããæ¹ã¯ãã²ã blog.usize-tech.com 2025.11.06 ãZabbixãsystem.runã§ã¹ã¯ãªããå®è¡çµæãç£èŠããæ¹æ³ Zabbixã®system.runèšå®æ¹æ³ãã¹ããããã€ã¹ãããã§è§£èª¬ãæšæºã¢ã€ãã ã«ãªãã«ã¹ã¿ã ç£èŠãå®çŸãããããzabbix_agentd.confã®ä¿®æ£ãå®å
šãªAllowKeyã®äœ¿ãæ¹ãã¹ã¯ãªããã®æš©éèšå®ãŸã§ãç¶²çŸ
ãåå¿è
ã§ãå®å¿ã®ã¬ã€ãã§ãã blog.usize-tech.com 2025.11.04 åŒç€Ÿã§ã¯Zabbixé¢é£ãµãŒãã¹ãå±éããŠããŸãã以äžããŒãžããåç
§ãã ããã â
Zabbixã®åºç€ããŸãšããeBookãå
¬éããŠãããŸãïŒâ
Zabbixè³æããŠã³ããŒãïœSCSK Plus ãµããŒã for Zabbix Zabbixç£èŠæ§ç¯ã«å¿
èŠãªç¥èãšææ°æ©èœã«ã€ããŠã®è³æãããŠã³ããŒãã§ããããŒãžã§ããäžçã§æã人æ°ã®ãããªãŒãã³ãœãŒã¹çµ±åç£èŠããŒã«ãZabbixãã®å°å
¥æ§ç¯ããéçšä¿å®ãŸã§SCSKã匷åã«ãµããŒãããŸãã www.scsk.jp â
SCSK Plus ãµããŒã for Zabbixâ
SCSK Plus ãµããŒã for Zabbix äžçã§æã人æ°ã®ãããªãŒãã³ãœãŒã¹çµ±åç£èŠããŒã«ãZabbixãã®å°å
¥æ§ç¯ããéçšä¿å®ãŸã§SCSKã匷åã«ãµããŒãããŸãã www.scsk.jp â
SCSK Zabbixãã£ã³ãã«â
SCSK Zabbixãã£ã³ãã« SCSK Zabbixãã£ã³ãã«ã§ã¯ãææ°ã®Zabbixãã¬ã³ããå®éã®å°å
¥äºäŸãåç»ã§è§£èª¬ãææ¥ãã䜿ããå®è·µçãªããŠããŠãæäŸããŸãã ä»ãããã£ã³ãã«ç»é²ããŠãææ°æ
å ±ãåãåããïŒ www.youtube.com
ããã«ã¡ã¯ãSCSKã®åå·ã§ãã ä»åã¯ServiceNowã®ãã¬ããžç®¡çã«ããããã£ãŒãããã¯æ©èœã«ã€ããŠãŸãšããŸããã æ¬èšäºã¯å·çæç¹ïŒ2026幎1æïŒã®æ
å ±ã§ããææ°ã®æ
å ±ã¯è£œåããã¥ã¡ã³ããåèã«ããŠãã ããã ãã¬ããžèšäºã®ãã£ãŒããã㯠ããã£ãŒãããã¯ã㯠ãŠãŒã¶ãŒããã¬ããžèšäºã®æçšæ§ãæ¹åç¹ãè©äŸ¡ã»ã³ã¡ã³ãã§ããæ©èœ ã§ãããã®æ©èœã掻çšããããšã«ãããèšäºã®å質åäžãç¶ç¶çãªæ¹åãå¯èœã«ãªããŸãã ãã¬ããžèšäºã®ãã£ãŒãããã¯ãéä¿¡ããïŒã€ã®æ¹æ³ èšäºã«ãã©ã°ãèšå®ããã èšäºãè©äŸ¡ããã [圹ã«ç«ã¡ãŸãããïŒ] ã®è³ªåã« [ã¯ã] ãŸã㯠[ããã] ãšåçããã èšäºã«ã³ã¡ã³ãã远å ããã ã³ã¡ã³ã远å åŸâ ãŠãŒã¶ãŒããã¬ããžèšäºã«é¢ãããã£ãŒãããã¯ãéä¿¡åŸããã¬ããžãã£ãŒãããã¯ããŒãã« (kb_feedback) ã«ã¬ã³ãŒããäœæãããŸãã ãã£ãŒãããã¯ã¿ã¹ã¯ ãã¬ããžãã£ãŒãããã¯ã¿ã¹ã¯ã¯ããŠãŒã¶ãŒããã®æ¹åèŠæãäœè©äŸ¡ãã¿ã¹ã¯åããæ
åœè
ã察å¿ã§ããããã«ããä»çµã¿ã§ãã æ¹å察å¿ã®æŒããé²ãããã¬ããžèšäºã®å質ãç¶ç¶çã«åäžãããããšãã§ããŸãã ã¿ã¹ã¯ãäœæãããæ¡ä»¶ã¯ä»¥äžã®ããããã£ã«ãŠèšå®å¯èœã§ãã glide.knowman.feedback.enable_actionable_feedback_for_helpful èšäºã圹ã«ç«ããªããšããŒã¯ãããŠããå Žåã«ã¢ã¯ã·ã§ã³å¯èœãªãã£ãŒãããã¯ã¿ã¹ã¯ãäœæããŸãã glide.knowman.feedback.enable_actionable_feedback_for_rating èšäºããã®å€ä»¥äžã«è©äŸ¡ãããŠããå Žåãã¢ã¯ã·ã§ã³å¯èœãªãã£ãŒãããã¯ã¿ã¹ã¯ãäœæããŸãã0 ãŸãã¯å€ãèšå®ãããŠããªãå Žåãã¬ãŒãã¿ã€ãã®ãã£ãŒãããã¯ã«å¯ŸããŠã¢ã¯ã·ã§ã³å¯èœãªãã£ãŒãããã¯ã¿ã¹ã¯ãæå¹ã«ãªã£ãŠããªãããšã瀺ããŸãã ãŸãšã ä»åã¯ãã¬ããžç®¡çã«ããããã£ãŒãããã¯æ©èœãã玹ä»ããŸããã ãã£ãŒãããã¯ã掻çšãããã¬ããžèšäºã®å質ãç¶ç¶çã«åäžãããŸãããã
ããã«ã¡ã¯ãSCSKã®äºäžã§ãã ãã®èšäºã§ã¯ãNew Relicã®Infrastructure ãšãŒãžã§ã³ãå°å
¥åŸã«ãã€ã³ãã©åºç€ãç£èŠããããã®ç»é¢ã®èŠæ¹ã解説ããŸããCPUãã¡ã¢ãªããããã¯ãŒã¯ãã©ãã£ãã¯ãªã©ã®èŠ³æž¬æ¹æ³ãçè§£ããããšã§ãã€ã³ãã©åºç€ã®ããã«ããã¯ãææ¡ã§ããããã«ãªããŸãã ã¯ããã« ã¢ããªã±ãŒã·ã§ã³ãå®å®ããŠåäœãããããã«ã¯ãã€ã³ãã©åºç€ãæ£åžžã«çšŒåãããããšãäžå¯æ¬ ã§ããããŒããŠã§ã¢æ§èœã«é¢ããããŒã¿ã芳枬ããã€ã³ãã©é¢é£ã®æ
å ±ãäžå
管çããããšã§ãã·ã¹ãã å
šäœãææ¡ããå¥å
šæ§ãé«ããããšãå®å®ãããµãŒãã¹æäŸã«ã€ãªãããŸãããã®èšäºãèªãã§ãInfrastructureæ©èœãå°ãã§ãçè§£ããã ãããšå¹žãã§ãã InfrastructureãšãŒãžã§ã³ãã®å°å
¥æ¹æ³ã«ã€ããŠã¯ãéå»ã®èšäºããã確èªããã ããŸãã ãNew RelicãInfrastructureãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«ãšèšå®(Linuxç) ãã®èšäºã§ã¯ãNew Relicã®InfrastructureãšãŒãžã§ã³ãã®å°å
¥æ¹æ³ã«ã€ããŠè§£èª¬ããŸããæé ã説æããåã«ãããããçåã«è§ŠããŠããŸãã®ã§ãçè§£ãæ·±ããŠããå®éã®æé ã«æãã§ãããŸãã blog.usize-tech.com 2026.01.14 Infrastructureã®UIæ§æ ãã®ç»é¢ã§Infrastructureã®èŠæ¹ã解説ããŸãããµãŒããŒãã³ã³ããããšãã£ãåºç€å
šäœã®ç¶æ
ã俯ç°ã§ããŸããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã远ãã ãã§ã¯èŠããªãããã¹ãã¬ãã«ã®ãªãœãŒã¹ç¶æ³ãã€ãã³ãå±¥æŽãã€ã³ãã³ããªå€åãªã©ãçµ±åçã«ãã§ãã¯ã§ãããããæ¥ã
ã®éçšç£èŠããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«æ¬ ãããªãUIã§ãã äž»èŠéšåUI Infrastructureã®æ©èœã¯äž»èŠ3ã»ã¯ã·ã§ã³ã«åãããŠããŸããHostsã¯ãªãœãŒã¹ç£èŠãInventoryã¯æ§æç®¡çãEventsã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«æŽ»çšãªã©ãããããã€ã³ãã©åºç€ã芳枬ããäžã§ã®å¿
èŠãªæ©èœãåãã£ãŠããŸãã ã»ã¯ã·ã§ã³ æŠèŠ Overview ã€ã³ãã©UIã®äž»èŠããŒãžã ã» Hosts ïŒãã¹ãã®ç¶æ
ãäžèŠ§è¡šç€º ã» Kubernetes ïŒK8sã€ã³ãã°ã¬ãŒã·ã§ã³ã®ããŒã¿ ã» Network ïŒãããã¯ãŒã¯ããã©ãŒãã³ã¹ç£èŠ ã» Inventory ïŒæ§ææ
å ±ã®ç¢ºèªïŒã¢ããã°ã¬ãŒããèšå®ããªããïŒ ã» Events ïŒéèŠãªã·ã¹ãã ã¢ã¯ãã£ããã£ã®ã¿ã€ã ã©ã€ã³ Integrations ã€ã³ãã©çµ±åã®ãã¬ã¡ããªã衚瀺ã ã»ã¯ã©ãŠããµãŒãã¹ïŒAWSãAzureãGCPãOCIïŒ ã»ãµãŒãããŒãã£ãµãŒãã¹ïŒApacheãCassandraãRabbitMQãªã©ïŒ Settings ã·ã¹ãã èšå®é¢é£ã ã» Alerts ïŒã¢ã¯ãã£ããªã€ã³ã·ãã³ããå«ãã¢ã©ãŒãæŠèŠ ã€ã³ãã©ã¹ãã©ã¯ãã£ç£èŠ UI ã®çŽ¹ä» | New Relic Documentation An introduction to the New Relic infrastructure monitoring UI pages. docs.newrelic.com å
šãã¹ãã®ãµããªã確èªãããå Žå ãã®ç»é¢ã§ã¯Infrastructure ãšãŒãžã§ã³ããå°å
¥ããããã¹ãã®ã¡ããªã¯ã¹ããŒã¿ã確èªããããšãã§ããŸãã 察象ç»é¢ å©çšã·ãŒã³ ãµããªæ
å ± æè¿ã®è² è·å€åãç°åžžããã°ãã確èªããããšã ã·ã¹ãã æ
å ±(CPU/ã¡ã¢ãªç) é·æçãªåŸåãå±¥æŽãåæããããšã Networkæ
å ± ãããã¯ãŒã¯ã®ããã«ããã¯ãè² è·åæ£ã®å¿
èŠæ§ã倿ããããšã ããã»ã¹æ
å ± é«è² è·ããã»ã¹ãç°åžžãªåäœãç¹å®ããããšã ãã£ã¹ã¯æ
å ± ãã£ã¹ã¯å®¹éäžè¶³ãI/Oç°åžžãæ©æã«æ€ç¥ããããšã ä»ã®ã¡ããªã¯ã¹ã確èªãããå Žå New Relicã§ã¯ã調æ»ã«å¿
èŠãªããŸããŸãªã¡ããªã¯ã¹ãåéããŠããŸãããã®ä»ã®ã¡ããªã¯ã¹ã確èªãããå Žåã¯ãç»é¢ã®èµ€æ ã§ç€ºãããã«ããŠã³ã¡ãã¥ãŒããéžæã§ããŸããå·çæç¹ã§ç¢ºèªå¯èœãªã¡ããªã¯ã¹äžèЧãåèãšããŠè¡šã§èšèŒããŸãã New Relicã§èŠ³æž¬ã§ããã¡ããªã¯ã¹æ
å ±äžèЧ ã«ããŽãª ã¡ããªã¯ã¹å 説æ CPU CPU (%) CPUå
šäœã®äœ¿çšç CPU user (%) ãŠãŒã¶ãŒããã»ã¹ã«ããCPU䜿çšç CPU system (%) ã·ã¹ãã ããã»ã¹ã«ããCPU䜿çšç CPU i/o wait (%) I/OåŸ
ã¡ã«ããCPU䜿çšç CPU idle (%) CPUã¢ã€ãã«æéã®å²å CPU steal (%) é çªåŸ
ã¡ããŠããCPUæéã®å²å ããŒãã¢ãã¬ãŒãž Load average 1 min çŽè¿1åéã®å¹³åè² è· Load average 5 min çŽè¿5åéã®å¹³åè² è· Load average 15 min çŽè¿15åéã®å¹³åè² è· ã¡ã¢ãª Memory used (%) ã¡ã¢ãªäœ¿çšç Memory free (%) ã¡ã¢ãªç©ºãç Memory free bytes 空ãã¡ã¢ãªå®¹é Memory total bytes ã¡ã¢ãªç·å®¹é Memory used bytes 䜿çšã¡ã¢ãªå®¹é ã¹ã¯ãã Swap free bytes 空ãã¹ã¯ãã容é Swap total bytes ã¹ã¯ããç·å®¹é Swap used bytes 䜿çšã¹ã¯ãã容é ãã£ã¹ã¯ Disk free bytes 空ããã£ã¹ã¯å®¹é Disk free (%) 空ããã£ã¹ã¯ç Disk total bytes ãã£ã¹ã¯ç·å®¹é Disk used bytes 䜿çšãã£ã¹ã¯å®¹é Disk used (%) ãã£ã¹ã¯äœ¿çšç Disk utilization (%) ãã£ã¹ã¯å
šäœå©çšç Disk read utilization (%) èªã¿åãæã®ãã£ã¹ã¯å©çšç Disk write utilization (%) æžãèŸŒã¿æã®ãã£ã¹ã¯å©çšç Disk reads per second 1ç§ãããã®ãã£ã¹ã¯èªã¿åãåæ° Disk writes per second 1ç§ãããã®ãã£ã¹ã¯æžã蟌ã¿åæ° ã¢ããªã±ãŒã·ã§ã³ Application response time ã¢ããªã±ãŒã·ã§ã³å¿çæéïŒAPMæå¹æã®ã¿ïŒ Application throughput ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã«ãŒãããïŒAPMæå¹æã®ã¿ïŒ Application error rate ã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒçïŒAPMæå¹æã®ã¿ïŒ åã
ã®ãã¹ãã確èªãããå Žå å
šãã¹ããäžèЧã§ç¢ºèªããç¹å®ã®ãã¹ãã ããªãœãŒã¹äœ¿çšçãé«ãããšãããã£ãããããã¹ãæ°ãçµãããå Žåãªã©ã¯ãç»é¢å³äžã® ã Filter ã ãã¯ãªãã¯ããŠå¯Ÿè±¡ãã¹ããçµã蟌ãããšãã§ããŸãã åã
ã®ãã¹ãã1ã€ã®ç»é¢ã§ç¢ºèªãããå Žå ç¹å®ã®1ã€ã®ãã¹ãã ãã確èªãããå Žåã¯ãSummaryæ¬ãã該åœã®ãã¹ããã¯ãªãã¯ããããšã§ããã®ãã¹ãã«é¢ãã芳枬ããŒã¿ã確èªããããšãã§ããŸãã 1.ç»é¢äžéšãSummaryãæ¬ã«ãã¹ãæ
å ±ã衚瀺ãããŠããŸãã衚瀺ããããã¹ããã¯ãªãã¯ããŸãã 2.該åœã®ãã¹ãæ
å ±ã衚瀺ãããŸãããã®ç»é¢ã§ã¡ããªã¯ã¹ãããã°ãªã©ã確èªããããšãã§ããŸãã ã€ã³ãã©ã¹ãã©ã¯ãã£ãã¹ãUI | New Relic Documentation For New Relic infrastructure monitoring, use the Hosts UI page to view the most important metrics from across your serve... docs.newrelic.com ã€ã³ãã³ããªUI ãã®ç»é¢ã§ã¯ãInfrastructureãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããããã¹ãå
ã®OSãã¢ããªã±ãŒã·ã§ã³ã®æ§æèŠçŽ ãã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžãªã©ãããã¹ãã«ãã°ã€ã³ããã«ç¢ºèªã§ããŸããæ§ææ
å ±ã¯ãã¹ãããéä¿¡ãããææ°ããŒã¿ãå³åº§ã«UIã«åæ ãããŸãããã¹ããã·ã£ããããŠã³ããããšãŒãžã§ã³ãã忢ããŠNew Relicãžã®ããŒã¿éä¿¡ãã§ããªããªã£ãå Žåã§ããæåŸã«å ±åãããã€ã³ãã³ããªæ
å ±ã¯æå€§24æéUIã«ä¿æãããŸãã å©çšã·ãŒã³ãšããŠã¯ä»¥äžã®äŸãæããããŸãã ã»ã»ãã¥ãªãã£å¯ŸçïŒè匱æ§å¯Ÿå¿åŸãå€ãããã±ãŒãžãæ®ã£ãŠããªãã ã»ããŒãžã§ã³æ¯èŒ ïŒæ¬çªç°å¢ãšãã¹ãç°å¢ã®ããã±ãŒãžãèšå®ãã¡ã€ã«ã®å·®ç°ãæ¯èŒ ã»æ§æç®¡ç ïŒããã«ãŠã§ã¢ããµãŒãã¹ã®ã€ã³ã¹ããŒã«ç¶æ³ãææ¡ ã€ã³ãã©ã¹ãã©ã¯ã㣠ã€ã³ãã³ã㪠UI ããŒãž | New Relic Documentation Use the New Relic infrastructure inventory page to monitor package and kernel versions across your entire architecture. docs.newrelic.com ã€ãã³ãUI ã·ã¹ãã ããã¹ãã®éèŠãªã¢ã¯ãã£ããã£ããªã¢ã«ã¿ã€ã ã§ç¢ºèªã§ããŸããã€ã³ãã©ã¹ãã©ã¯ãã£ãŒã®å€æŽãã¢ã¯ãã£ããã£ãæç³»åã§è¡šç€ºããç¹å®ã®æéã«çºçããã€ãã³ããäžå
管çã§ããŸãããã¹ãããšã«ã€ãã³ããæ€çŽ¢ã§ããŸããã ç»é¢å³äžã§æå®ããæéç¯å²å
ã®ã€ãã³ãã®ã¿ã衚瀺 ãããŸããåºç¯å²ã調ã¹ããå Žåã¯ãæéç¯å²ãæ¡å€§ããå¿
èŠããããŸãã®ã§ã泚æãã ããã å©çšã·ãŒã³ãšããŠã¯ä»¥äžã®äŸãæããããŸãã ã»é害ã®åå ç¹å® ïŒã¹ãã€ã¯ãç°åžžå€ãçºçããæé垯ã«ãã©ããªã€ãã³ãããã£ãããç¢ºèª ã»å€æŽå±¥æŽã®ç£æ» ïŒã€ã³ãã³ããªïŒKernelãMetadataãPackagesãServicesãSessionsïŒã®å€æŽå±¥æŽãèšé² ã»ãŠãŒã¶ãŒã»ãã·ã§ã³ã®ç£èŠïŒãŠãŒã¶ãŒã®æ¥ç¶ã»åæã€ãã³ããèšé²ããã»ãã¥ãªãã£ãéçšç¶æ³ãææ¡ ã»æ§æå€æŽã®åœ±é¿åæ ïŒèšå®å€æŽãããã±ãŒãžæŽæ°ãªã©ã®ã€ãã³ããšãCPUãã¡ã¢ãªãªã©ã®ã¡ããªã¯ã¹ãæ¯èŒ ã€ã³ãã©ã¹ãã©ã¯ã㣠ã€ãã³ã UI ããŒãž | New Relic Documentation The New Relic infrastructure events UI page gives you a unified timeline of important changes and events in your archite... docs.newrelic.com Infrastructure æ©èœã䜿ãããªãããã« å€§èŠæš¡ãã€åçã«å€åããç°å¢ãç£èŠããããã«ããã¹ãŠã®ãã¹ãïŒDBã»WebãµãŒããŒãªã©ïŒãžãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããåäžã®ããã·ã¥ããŒãã§ããŒã¿ãäžå
çã«ç¢ºèªããããšã§ãããŒã éã§æ
å ±ãå
±æãããããªããŸãããŸããã¢ã©ãŒãæ¡ä»¶ã®èšå®ãã¯ã©ãŠãã€ã³ãã°ã¬ãŒã·ã§ã³ã®æå¹åãšãã£ããã¹ããã©ã¯ãã£ã¹ã«ããããªãã¶ãŒãããªãã£ãè¿
éã«åäžãããããšãã§ããŸããç¶ç¶çã«æ¹åãç¹°ãè¿ãããšã§ãé害çºçæã®åå ç¹å®ã埩æ§ãŸã§ã®æéïŒMTTRïŒã倧å¹
ã«ççž®ããã¯ã©ãŠãã»ãªã³ãã¬ãã¹ã«é¢ããããéçšããŒã¿ãçµ±åçã«ç®¡çã§ãããããä»¥äžæéããŸãšããããŠããŸãã é
ç® æŠèŠ 1. InfrastructureãšãŒãžã§ã³ããç°å¢å
šäœã«ã€ã³ã¹ããŒã« ãã¹ãŠã®ãã¹ãïŒDBãWebãµãŒããŒãªã©ïŒã«ãšãŒãžã§ã³ããå°å
¥ããã¿ã°ãã«ã¹ã¿ã 屿§ã§åé¡ã 2. EC2ã€ã³ãã°ã¬ãŒã·ã§ã³ãèšå® AWSã¿ã°ãšã¡ã¿ããŒã¿ãèªåã€ã³ããŒãããã¿ã°ã§ãã£ã«ã¿ãªã³ã°ãã¢ã©ãŒãèšå®ãå®çŸãæ°ããã€ã³ã¹ã¿ã³ã¹ãèªå远å ã 3. ã€ã³ãã°ã¬ãŒã·ã§ã³ãæå¹å AWSãµãŒãã¹ããã¹ãäžã®ã¢ããªãç£èŠãäºåèšå®ãããããã·ã¥ããŒããå©çšå¯èœã 4. ãã¹ãã°ã«ãŒããã¥ãŒã®äœæ ãšã³ãã£ãã£ãã£ã«ã¿ãŒã§ã°ã«ãŒãåãã皌åã¹ããŒã¿ã¹ãè²åã衚瀺ããåé¡ç®æãè¿
éã«ç¹å®ã 5. ã¢ã©ãŒãæ¡ä»¶ãäœæ ã¿ã°ããŒã¹ã§æ¡ä»¶ãäœæããæ°ãããã¹ãã«ãèªåé©çšã 6. InfrastructureããŒã¿ãAPMããŒã¿ãšçµ±å Application Performance Monitoring(APM)ãšInfrastructureã䞊ã¹ãŠè¡šç€ºããæ ¹æ¬åå ãè¿
éã«ç¹å®ããµãŒãã¹ãããã§ã¢ããªãšã€ã³ãã©ã®é¢é£æ§ãå¯èŠåã 7. ã¡ããªã¯ã¹ãšã€ãã³ããæŽ»çš ã«ã¹ã¿ã ããã·ã¥ããŒããäœæãããŒã ã§å
±æããã€ã³ãã©ãšã¢ããªã®å¥å
šæ§ãäžå
管çã 8. ãšãŒãžã§ã³ãã宿çã«æŽæ° æ°æ©èœãæ¹åãæŽ»çšãããããææ°ããŒãžã§ã³ãžã®æŽæ°ãæšå¥šã Infrastructureã¢ãã¿ãªã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ã¬ã€ã | New Relic Documentation Best practices to make dynamic infrastructure and server monitoring even easier with New Relic. docs.newrelic.com ãããã« ãã®èšäºã§ã¯ãNew Relic Infrastructure ã®äž»èŠãªæ©èœã«ã€ããŠè§£èª¬ããŸãããNew Relic ã¯å€æ©èœãªãã©ãããã©ãŒã ã§ãããã€ã³ãã©ç£èŠã²ãšã€ããšã£ãŠã芳枬ã§ããããŒã¿ã¯å€ãã§ãããã®ããããŸã åãäžããããŠããªãæ©èœããããæ·±ãæãäžãããããããã¯ãæ°å€ãååšããŸããä»åŸã¯ãå®éã®éçšã·ããªãªã§åœ¹ç«ã€èšå®äŸããããã·ã¥ããŒãæŽ»çšæ¹æ³ãã¢ã©ãŒããã¥ãŒãã³ã°ãã¯ã©ãŠããµãŒãã¹ãšã®çµ±åãªã©ãå®è·µçãªæ
å ±ã解説ããŠãããŸããåŒãç¶ããã¿ãªããŸã®ç°å¢éçšã«å°ãã§ãè²¢ç®ã§ããã°å¹žãã§ãã SCSKã¯New Relicã®ã©ã€ã»ã³ã¹è²©å£²ã ãã§ã¯ãªããå°å
¥ããå°å
¥åŸã®ãµããŒããŸã§äŒŽèµ°çã«å°å
¥æ¯æŽã宿œããŠããŸããããããã¯ä»¥äžããåç
§ã®ã»ã©ãããããé¡ãããããŸãã
æ¬èšäºã¯ æ°äººããã°ãã©ãœã³2025 1/22ä»ã®èšäºã§ãã ã¿ãªãããåããŸããŠãïŒïŒïŒïŒå¹ŽåºŠã«å
¥ç€Ÿããæ°äººã®æå±±ã§ãã AWSæŽã¯ãŸã ãŸã æµ
ãç§ã§ãããè³æ Œå匷ããã³ãºãªã³ããããŠå®éã®æ¡ä»¶å¯Ÿå¿ãéããŠãæ¥ã
åŠç¿ã«å±ãã§ããŸãïŒ ä»åŸããåŠãã ããšãæ°ã¥ããããšãªã©ãããã°ã§çºä¿¡ããŠãããŸãã®ã§ãAWSåå¿è
ã®å¥®éèšã«ãã²ãä»ãåããã ããïŒ ä»åã®èšäºã§ã¯ãç§ãå®éã«äœéšããAmazon SNS(Simple Notification Service)ã®ãµãã¹ã¯ãªãã·ã§ã³ãã誀ã£ãŠåé€ãããŠããŸãåå ãšããã®å¯ŸåŠæ³ã«ã€ããŠã玹ä»ããŸãã Amazon SNSãä»åŸäœ¿çšãããæ¹ã
ã®åèã«ãªãã°å¹žãã§ãïŒïŒ ã¯ããã« äºã®çºç«¯ã¯2025幎11æããšããæ¡ä»¶ã§ Amazon CloudWatch ïŒ Amazon SNS ã«ããã¢ã©ãŒã éç¥ãæ§ç¯ããããšã«ãªããæ€èšŒç°å¢ã§åäœç¢ºèªãè¡ã£ãŠããŸããã ããããããæ¥ãå¢ã« éç¥ã¡ãŒã«ãäžåå±ããªããªã ãšããäºæ
ãçºç!! äžå¯©ã«æããã³ã³ãœãŒã«ã§ãµãã¹ã¯ãªãã·ã§ã³ã®ç¶æ
ã確èªããŠã¿ããšããããªããšãIDãâ å逿žã¿ âãšãªã£ãŠããŸããã ããªãåé€ãããã®ãïŒããšåå ã調ã¹ãçµæããããªã³ã¯ã誀ã£ãŠã¯ãªãã¯ããŠããŸã£ãããšãåå ã§ããããšã倿ããã®ã§ãã ãã®ãªã³ã¯ãšã¯âŠïŒ éç¥ãæ¶ããæ²åã®åå Amazon SNSã§ã¯ããµãã¹ã¯ãªãã·ã§ã³ç»é²æãéç¥ã¡ãŒã«ã« “unsubscribeïŒç»é²è§£é€ïŒãªã³ã¯” ãèªåçã«æ¿å
¥ãããŠããŸãã ããã¯AWSã®ä»æ§ã§ããŠãŒã¶ãŒããã€ã§ãè§£é€ã§ããããã«ããããã®ä»çµã¿ã§ãã ãã®ãªã³ã¯ãã¯ãªãã¯ãããšã以äžã®ãããªç»é¢ã«é·ç§»ãããµãã¹ã¯ãªãã·ã§ã³ãç»é²è§£é€ãããŸãã åé¡ã¯ããã®ãªã³ã¯ã 誀ã£ãŠã¯ãªã㯠ããŠããŸãããšã ã¯ãªãã¯ãããšãSNSãããã¯ãããµãã¹ã¯ãªãã·ã§ã³ãåé€ãããéç¥ã¡ãŒã«ãå±ããªããªããŸãã ããã«ã確èªç»é¢ãèŠåã¯ã»ãšãã©ãªããã¯ã³ã¯ãªãã¯ã§è§£é€ããããããæå³ããã«ç»é²è§£é€ããŠããŸãã±ãŒã¹ãå€ãã®ã§ãã ã§ã¯ãæå³ããªãç»é²è§£é€ãé¿ããããã«ã©ããã£ãŠãã®è§£é€ãªã³ã¯ãç¡å¹åããã®ãïŒ æ¬¡ã®ç« ã§ã¯ãè§£é€ãªã³ã¯ãç¡å¹åããããã®å
·äœçãªæ¹æ³ã詳ãã解説ããŸãïŒ unsubscribeãªã³ã¯ãç¡å¹åããæ¹æ³ èšå®ã¯ ãSNSãµãã¹ã¯ãªãã·ã§ã³ã®äœæã ã ãâConfirm subscriptionâã®ãªã³ã¯ç»é²ã ã®ïŒã¹ãããã§è¡ããŸãã SNSãµãã¹ã¯ãªãã·ã§ã³ã®äœæ 察象ã®ãããã¯ç»é¢ã§ããµãã¹ã¯ãªãã·ã§ã³ã®äœæããã¯ãªãã¯ããŸãã 詳现ãå
¥åããç¶æ
ã§ããµãã¹ã¯ãªãã·ã§ã³ã®äœæããã¯ãªãã¯ããŸãã äœæãå®äºãããšãIDãâä¿çäžã®ç¢ºèªâã®ãµãã¹ã¯ãªãã·ã§ã³ã衚瀺ãããŸãã âConfirm subscriptionâã®ãªã³ã¯ç»é² ãµãã¹ã¯ãªãã·ã§ã³ã®äœæåŸããAWS Notification – Subscription Confirmationããšããã¡ãŒã«ãå±ããŸãã âConfirm subscriptionâã®ãªã³ã¯ãã¯ãªãã¯ããªãã§ãã ããïŒïŒ 代ããã«âConfirm subscriptionâã®ãªã³ã¯ã å³ã¯ãªãã¯ããŠã³ã㌠ããŸãã æ¬¡ã«ã³ã³ãœãŒã«ã«æ»ããããµãã¹ã¯ãªãã·ã§ã³ã®ç¢ºèªããã¯ãªãã¯ããŸãã å
ã»ã©ã³ããŒããURLãããŒã¹ãããããµãã¹ã¯ãªãã·ã§ã³ã®ç¢ºèªããã¯ãªãã¯ããŸãã URLã¯ä»¥äžã®åœ¢åŒã§ãã https://sns.<ãªãŒãžã§ã³>.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:<ãªãŒãžã§ã³>:<AWSã¢ã«ãŠã³ãID>:<ãããã¯å>&Token=<ããŒã¯ã³å€>&Endpoint=<ã¡ãŒã«ã¢ãã¬ã¹> Outlookäžã§URLãã³ããŒããéãMicrosoft Defender for Office 365ã®ãSafe Linksãæ©èœãæå¹ã«ãªã£ãŠããå Žåã¯ããªã³ã¯ãã»ãã¥ãªãã£ä¿è·ã®ããã«æžãæãããããããå
ã®URLã«ãã³ãŒãããå¿
èŠããããŸãã ãããšããµãã¹ã¯ãªãã·ã§ã³ã®IDã倿Žãããã¹ããŒã¿ã¹ãâ ç¢ºèªæžã¿ âã«ãªããŸãã ã§ã¯ãæ¬åœã«unsubscribeãªã³ã¯ãç¡å¹åãããã®ãïŒæ¬¡ã®ç« ã§åäœç¢ºèªãè¡ããŸãïŒ åäœç¢ºèª åäœæãããµãã¹ã¯ãªãã·ã§ã³ã«ç»é²ããã¡ãŒã«ã¢ãã¬ã¹å®ã«ããã¹ãã¡ãã»ãŒãžãéä¿¡ããŠã¿ãŸãããã ã³ã³ãœãŒã«äžã§ãç»é¢å³äžã«ãã ãã¡ãã»ãŒãžã®çºè¡ã ãã¯ãªãã¯ããŸãã æ¬¡ã«ãããšã³ããã€ã³ãã«éä¿¡ããã¡ãã»ãŒãžæ¬æã ã«ä»»æã®æååãå
¥åããç»é¢å³äžã® ãã¡ãã»ãŒãžã®çºè¡ã ãã¯ãªãã¯ããŸãã ãããšããã¹ãçšã®ã¡ãŒã«ãå±ããŸããã¡ãŒã«æ¬æã«ã¯ãåŸæ¥éã unsubscribeãªã³ã¯ ãå«ãŸããŠããŸãã ããã§ããã®ãªã³ã¯ãã¯ãªãã¯ããŠã¿ããšâŠ ãµãã¹ã¯ãªãã·ã§ã³ãè§£é€ãããªãããšã確èªã§ããŸããïŒ ãããã« ä»åã®èšäºã§ã¯ãAmazon SNSã®éç¥ã¡ãŒã«ã«å«ãŸãããunsubscribeãªã³ã¯ãã誀ã¯ãªãã¯ã«ãã£ãŠéç¥åæ¢ãåŒãèµ·ããåé¡ãšããã®å¯Ÿçã«ã€ããŠè§£èª¬ããŸããã ãã®æ¹æ³ã宿œããããšã§ã誀ã¯ãªãã¯ã«ããéç¥åæ¢ã®ãªã¹ã¯ã倧å¹
ã«æžããããšãå¯èœã§ãã ä»åã®æ¹æ³ããã²è©ŠããŠããéç¥ãæ¶ããæ²åãããã·ã¹ãã ãå®ããŸãããïŒ æåŸãŸã§èªãã§ããã ãããããšãããããŸããïŒ åèãµã€ã SNSãããã¯ã®unsubscribeã®ç¡å¹åèšå® - Qiita ã¯ããã« ä»åæ¥åã®äžã§SNSã®ãµãã¹ã¯ãªãã·ã§ã³ã誀ã£ãŠè§£é€ããŠããŸãã®ãç¡å¹åããããšããèŠä»¶ããã£ãããã調ã¹ãäžã§äœãçŽããå¿
èŠãšèšèŒã®ããèšäºãå€ããäœãçŽããªããŠãèšå®ã§ããã®ã§ãã¡ã¢ãšããŠæ®ãããšæããŸãã unsubscri... qiita.com
AWS ãåŠãã§ããŠãæãã ã Gatewayãšåã®ä»ããµãŒãã¹å€ããªããïŒ ã ãšæããããšããããŸããã Direct Connect GatewayãTransit GatewayãAPI GatewayãNAT Gatewayãã²ãŒããŠã§ã€å VPC ãšã³ããã€ã³ããªã©ã AWS SAP(Solutions Architect ProfessionalïŒã®å匷äžã«æ··ä¹±ããã®ãæ£çŽãªãšããã§ãã AWSã®Gatewayç³»ãµãŒãã¹ãäž»é¡ã«ãAzureãšã®æ¯èŒãéããŠåœ¹å²ãæŽçããŸããã AWSãäž»ã«æ±ã£ãŠããæ¹ã«ã¯ãAzureãšæ¯ã¹ãããšã§Gatewayãšåã®ä»ããµãŒãã¹ã®å€ããæããŠãããããã§ãã Gatewayãšã¯ äžè¬çãªITçšèªãšããŠã®ã²ãŒããŠã§ã€ã¯ãç°ãªããããã³ã«éã®éä¿¡ãäžç¶ããä»çµã¿ãæããŸãã ããããµãŒãã£ã³ããŠããšãã²ãŒããŠã§ã€ã解説ããSCSKã®ãµã€ããèŠã€ããŸããã ã²ãŒããŠã§ã€ãšã¯ïœITçšèªèŸå
žïœSCSK IT Platform Navigator ã²ãŒããŠã§ã€ïŒGatewayïŒãšã¯ãè±èªã§ãåºå
¥å£ããæå³ããèšèãç°ãªãéä¿¡ãããã³ã«ã䜿çšãããããã¯ãŒã¯éãäžç¶ããæ©åšãŸãã¯ä»çµã¿ãæãã www.scsk.jp äžæ¹ãAWSã«ãããŠã®Gatewayã¯ãå¿
ããããããã³ã«å€æãè¡ãããã§ã¯ãªãã ããããã¯ãŒã¯å¢çã®å
¥å£ããããã®æå³ã§äœ¿ãããŠãããã§ããïŒâ»åäººã®æèŠïŒ æ¯èŒè¡š AWSã®ãµãŒãã¹ãšAzureãæ¯èŒããŸããã äžå¯Ÿäžå¯Ÿå¿ã§ã¯ãªãã§ãããæŠå¿µçã«è¿ããµãŒãã¹ããŸãšããŠãŸãã AWSãµãŒãã¹ AWSãµãŒãã¹ã®æŠèŠ AzureãµãŒãã¹ Direct Connect ãªã³ãã¬ç°å¢ããAWSãžå°çšç·ãããã¯ãŒã¯ãæäŸ ExpressRoute Direct Connect Gateway Direct Connectæ¥ç¶ãè€æ°ã®ãªãŒãžã§ã³ã®VPCã§å
±æ ExpressRoute Global Reach Transit Gateway è€æ°ã®VPCéã»ãªã³ãã¬éã®ã«ãŒãã£ã³ã°ãéäžç®¡ç Virtual WAN Site-to-Site VPN ãªã³ãã¬ç°å¢ãä»ã¯ã©ãŠãã®ãããã¯ãŒã¯ãšAWSã®éä¿¡ãIPSecã䜿çšãã»ãã¥ã¢ã«éä¿¡ Azure VPN Gateway ã²ãŒããŠã§ã€å VPC ãšã³ããã€ã³ã S3ãšDynamoDBãªã©ã察象ã®ãšã³ããã€ã³ã Azure Vnet Service Endpoint ã€ã³ã¿ãŒãã§ã€ã¹å VPC ãšã³ããã€ã³ã å€ãã®ãµãŒãã¹ã察象ã§ãã©ã€ããŒãæ¥ç¶ãè¡ãéã®ãšã³ããã€ã³ã Private Endpoint API Gateway REST/HTTP/WebSocket API ã®ããã³ãã㢠API Management AWS NAT Gateway ãã©ã€ããŒããµããããå
ã®ã€ã³ã¹ã¿ã³ã¹ããã€ã³ã¿ãŒããããžã®æ¥ç¶ Azure Nat Gateway ããŸã ããã§ãæ§æå³ AWS SAPã§ããåºãŠããDirect ConnectãšTransit Gatewayã®ç°¡æçãªæ§æå³ãäœã£ãŠã¿ãŸããã çµã¿åããã§åºé¡ãããŠãã€ã¡ãŒãžã§ãå°è±¡ã«æ®ã£ãŠãŸãã AzureãNAT Gatwayãå¿
é ã« Azure Nat Gateway ã«ã€ããŠã Azureã§ã¯ãããŸã§NAT GatewayãäœæããªããŠãã€ã³ã¿ãŒãããéä¿¡ãå¯èœã§ããã䟿å©ã ãªãšæã£ãŠãŸããã èªåã§ azure-default-snat ãªããã®ãäœæãããŠããããã§ãã 詳ããã¯ãã¡ã ãAzureãAzure NAT Gateway ã®ããã æšä»ã¯Azureä»®æ³ãã·ã³ããå€éšSaaSã®ããŒã¿é£æºãããã±ãŒã¹ãå€ããããSaaSåŽã®ã»ãã¥ãªãã£å¯ŸçãšããŠç¹å®ã®ã°ããŒãã«IPã¢ãã¬ã¹ã®ã¿éä¿¡èš±å¯ããããšããããŸããéåžžãä»®æ³ãã·ã³ã«çšæãããŠããã°ããŒãã«IPã¢ãã¬ã¹ã¯AzureåŽã§äœæãããã°ããŒãã«IPã¢ãã¬ã¹ã§ããåèµ·åãAzureåŽã®ä»»æã®ã¿ã€ãã³ã°ã§æå³ãã倿ŽãããŠããŸãããšãããAzureNATGatewayãå©çšããããšã§ã°ããŒãã«IPã¢ãã¬ã¹ãåºå®å¯èœãšãªããŸãã blog.usize-tech.com 2024.01.26 ããã廿¢ãšãªãã2025幎10æä»¥éã«ã¯Azure NatGatewayçã®æç€ºçãªã¢ãŠãããŠã³ãæ§æãæšå¥šãããããã§ãã https://azure.microsoft.com/ja-jp/updates?id=default-internet-outbound-access-for-simplified-node-communication-batch-pools-without-public-ip-addresses-will-be-retired-on AWSã®å匷ããŠãŠé©ããAzureãã¥ãŒã¹ã§ããã åèæç® AWS ãš Azure ã®ãããã¯ãŒã¯ ãªãã·ã§ã³ã®æ¯èŒ - Azure Architecture Center Azure ãš AWS ã®ãããã¯ãŒã¯ ãªãã·ã§ã³ãæ¯èŒããŸãã ã¯ã©ãŠãä»®æ³ãããã¯ãŒã¯ãã¯ãã¹ãã¬ãã¹æ¥ç¶ãDNS 管çãªã©ã«ã€ããŠæ¯èŒããŸãã learn.microsoft.com AWS ãµãŒãã¹ã Azure ãµãŒãã¹ãš Google Cloud ãæ¯èŒãã  | Get started  | Google Cloud Documentation docs.cloud.google.com
ããã°ãªã¬ãŒ ååã®èšäº ã§ã¯ãããã¯ãšã³ãã®ãããããéœè€ãããèšäºã«ããŠãããŸããããæ¬æ¥ã¯ããã³ããšã³ãç·šãšããããšã§ãAWSãã©ã¡ãŒã¿ã·ãŒãèªåçæããŒã«ã®GUIãã©ã®ãããªæè¡ã䜿çšããŠå®çŸããããã玹ä»ã§ããã°ãšæããŸãïŒ ããã³ããšã³ãæŠèŠ ããã³ããšã³ãã¯äžèšã®ãããªæµãã§ããã¯ãšã³ãïŒãã©ã¡ãŒã¿ãŒã·ãŒãåºåïŒã«åŠçãåŒãç¶ãããŸãã äžèšåŠçã®ãã¡ãæ¬èšäºã®ããã³ããšã³ãã¯ãGUIããšãGUIãæäŸãããµãŒããŒãéšåãæ
åœããŠããŸãã 䜿çšããæè¡ ããã³ããšã³ãå®çŸã®ããã«äœ¿çšããäž»ãªæè¡ãšãã®åœ¹å²ã¯äžèšã®éãã§ãã æè¡ åœ¹å² JavaScript ã¯ã©ã€ã¢ã³ãåŽããµãŒããŒãµã€ãåŽã®ããžãã¯ãèšè¿°ããããã«äœ¿çšããèšèª Node.js JavaScriptã®å®è¡ç°å¢ã§ãããã¢ããªã±ãŒã·ã§ã³å
šäœã®å®è¡åºç€ Express.js WebãµãŒããŒããã³REST APIãªã©ã®ãµãŒããŒãµã€ãåŽã®æ©èœãæäŸããŠãããWebãã¬ãŒã ã¯ãŒã¯ HTML5 + CSS3 ç»é¢æ§é ãšãã¶ã€ã³ ããã³ããšã³ãã¯ãã¯ã©ã€ã¢ã³ãåŽããµãŒããŒãµã€ãåŽãäžè²«ããŠJavaScriptã䜿çšããŠå®è£
ããŠããŸãã ãµãŒããŒãµã€ãåŽã®éçºãšããŠãRuby + Rails ã Python + Django ãšãã£ãçµã¿åãããããäžã§ãJavaScript + Node.js ã䜿çšããçç±ãšããŠã¯ã以äžã®éãã§ãã æ¡ä»¶ã§ JavaScript ãè§Šãæ©äŒãããæ
£ããŠãã ããè³ã«ããçµã¿åããã§ãªãããã£ããã ãããããããã調ã¹ããšããè³ã«ããçç±ããããŸãããããã«ã€ããŠã¯ä»¥éã§èª¬æããŠãããããšæããŸãã Node.js Node.jsãšã¯ïŒ ããããNode.jsãšã¯äœè
ããšãããšã JavaScriptããµãŒããŒäžã§å®è¡ããããã®éçºç°å¢ ã§ãã å
ã
ãJavaScriptãšããèšèªã¯ä»ã®èšèªãšç°ãªãããã©ãŠã¶äžã§åäœããèšèªã§ãããããŒã«ã«ïŒOSäžïŒç°å¢ã§ã¯åäœãããããšãã§ããªãèšèªã§ããã ãã£ãŠããã©ãŠã¶äžã§ããåäœããªã JavaScript ã§ã¯ããŒã«ã«ç°å¢ã«ãããã¡ã€ã«ãèªã¿ã«ããããšãã§ããªããšããåé¡ããããŸããã ãã®å¶éãåã£æã£ãŠãããã®ããNode.jsãšããèš³ã§ãã Node.jsã®ç»å Žã®ãããã§ã ã¯ã©ã€ã¢ã³ãã»ãµãŒããŒãµã€ãã®äž¡è
ãåäžã®èšèªã§éçº ããããšãã§ããããã«ãªããŸããã Node.jsã®ç¹åŸŽ Node.jsã®ç¹åŸŽãšããŠã¯ãäž»ã«ä»¥äžã®3ã€ãæããããŸãã 1. ãã³ããããã³ã°I/OåŠç åã®ã¿ã¹ã¯ãå®äºããŠããªãç¶æ
ã§ã次ã®ã¿ã¹ã¯ãéå§ã§ãã éåæã§ã®åŠçãå®çŸ ããŠããã ãã®ããã倧éã®ã¢ã¯ã»ã¹ããã£ãŠã察å¿ãå¯èœã§ããã 2. ã·ã³ã°ã«ã¹ã¬ããã«ããåŠç ããã°ã©ã ãå®è¡ããéã«ã1ã€ãã€åŠçãè¡ã ã äžè¬çã«ã·ã³ã°ã«ã¹ã¬ããã ãšå€§éã®ã¢ã¯ã»ã¹ããã£ãå Žåã«å¶åŸ¡ããããšãé£ãããªããããã³ããããã³ã°I/OåŠçã«ãã£ãŠãå€ãã®ã¢ã¯ã»ã¹ããã£ãŠããªã¢ã«ã¿ã€ã ã§ã¬ã¹ãã³ã¹ãå¯èœã«ãªãã 3. è±å¯ãªã©ã€ãã©ãª ãµãŒããŒãµã€ãã¢ããªã±ãŒã·ã§ã³ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãã³ãã³ãã©ã€ã³ããŒã«ãªã©ã®å¹
åºãçšéã§äœ¿çšããããããéåžžã«å€ãã®ã©ã€ãã©ãªãããã npmãšããããã±ãŒãžç®¡çããŒã«ã䜿çšããããšã«ãããèšå€§ãªã©ã€ãã©ãªãç°¡åã«ã€ã³ã¹ããŒã«ã»ç®¡çããããšãã§ããã ãããã®ç¹åŸŽãããNode.js + JavaScript 㯠倧éã®åæåŠçããã°ãããªããã€æ§ã
ãªç®çã§äœ¿çšã§ããæ±çšçãªæè¡åºç€ ãšããŠäººæ°ããããšããèš³ã§ãã Express.js ãããŸã§ã§ãNode.jsã䜿çšããçç±ãçšéã¯çè§£ã§ããããšæããŸããããããŸã§ãNode.jsã¯ãµãŒããŒãµã€ãåŽã§JavaScriptãå®è¡ã§ããããã«ããå®è¡ç°å¢ã§ããããã ã®åºç€ã§ãã ããã³ããšã³ããäœæããäžã§ã¯ãåºç€ã®äžã«å®éã®æ©èœãäœæããŠãããå¿
èŠããããŸãã ãã®å®éã®æ©èœã¯äžããäœãå¿
èŠã¯ãªããæ¢ã«çšæãããã²ãªåœ¢ããäœæããããšãã§ããŸãã ããã«ãããã®ããExpress.jsã§ãã Express.jsãšã¯ïŒ Express.jsãšã¯ã Node.jsã®ããã®è»œéã§æè»ãªWebã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ ã§ãã ãã¬ãŒã ã¯ãŒã¯ãšã¯ã²ãªåœ¢ãšãèšãæããããšãã§ããæ§ã
ãªã²ãªåœ¢ãçšæãããŠããŸãã äŸãã°ãæ©èœéçºãç°¡åã«å®è£
ã§ãã以äžã®ãããªã²ãªåœ¢ãçšæãããŠããŸãã ã«ãŒãã£ã³ã°æ©èœ ãŠãŒã¶ãŒãç¹å®ã®URLã«ã¢ã¯ã»ã¹ããéã«ã ã©ã®ãããªã¬ã¹ãã³ã¹ïŒå¿çïŒãè¿ãããå®çŸ© ããããšãã§ããã äŸãã°ããŠãŒã¶ã / ã«ã¢ã¯ã»ã¹ãããããããããŒãžã衚瀺ããã/download/file.xlsx ã«ã¢ã¯ã»ã¹ãããããã¡ã€ã«ãããŠã³ããŒããããªã©ãããã REST APIæ©èœ ããã³ããšã³ãïŒãã©ãŠã¶ïŒããã®ãªã¯ãšã¹ããåãåãã Webäžã§ããŒã¿ããããšãããããã®æäœãå®çŸ© ããããšãã§ããããã®æäœã«ã¯ä»¥äžã®ãã®ããããããããå®çŸ©ããããšãã§ããã HTTPã¡ãœãã æäœ GET ãªãœãŒã¹ãååŸãã POST ãªãœãŒã¹ãäœæãã PUT æå®ããIDã®ãªãœãŒã¹ãæŽæ°ãã DELETE æå®ããIDã®ãªãœãŒã¹ãåé€ãã éçãã¡ã€ã«ã®é
ä¿¡ éçãã¡ã€ã«ïŒHTMLãCSSãJavaScriptãç»åãªã©ïŒããŠãŒã¶ãŒã«é
ä¿¡ããããšãã§ããã ãŸããHTTPããããŒã«ãããã£ãã·ã¥å¶åŸ¡ãå¯èœã§ãåããã¡ã€ã«ãžã®åãªã¯ãšã¹ãæã®ã¬ã¹ãã³ã¹æéãççž®ã§ããã ã©ãã«äœ¿çšããã®ïŒ ã§ã¯ãããã³ããšã³ãå®çŸã«ããã£ãŠã©ãã«æŽ»çšããã®ããšãããšäžèšã®éãã§ãã æ©èœ 䜿çšç®æ ã«ãŒãã£ã³ã°æ©èœ ãããããŒãžã®è¡šç€º ãã¡ã€ã«ã®ããŠã³ããŒã REST APIæ©èœ AWSãªãœãŒã¹äžèЧååŸ Excelçæãªã¯ãšã¹ãïŒããã¯ãšã³ããžã®ããªã¬ãŒïŒ éçãã¡ã€ã«ã®é
ä¿¡ HTML/CSS/JavaScriptãã¡ã€ã«ã®é
ä¿¡ èŠåŽããç¹ ãªãœãŒã¹ããšã«ç°ãªãJSONãã¡ã€ã« ããã³ããšã³ãã§ã¯ãAWSã®ãªãœãŒã¹ã®è©³çްæ
å ±ã衚瀺ããããã«ãAWS CLIã³ãã³ããå®è¡ãããªãœãŒã¹ã®äžèЧãååŸããŠããŠããŸãããã®äžèЧæ
å ±ã®æ§é ãããªãœãŒã¹ã«ãã£ãŠç°ãªãããªãœãŒã¹ããšã«ååŸããæ
å ±ãå®çŸ©ããŠãããããšãèŠåŽããŸããã äŸïŒ EC2ã€ã³ã¹ã¿ã³ã¹ã®å ŽåïŒ { “Reservations”: [ { “Instances”: [ { “InstanceId”: “i-xxxxx”, “State”: {…} } ] } ] } S3ãã±ããã®å ŽåïŒ { “Buckets”: [ { “Name”: “my-bucket”, “CreationDate”: “…” } ] } ãã®ããã«ãåãããªãœãŒã¹äžèЧãååŸããããšããåŠçã§ããé
ç®åãJSONãã¡ã€ã«ã®ãã¹ãæ§é ã®æ·±ããç°ãªããŸãããã®ããããã¹ãŠã®ãªãœãŒã¹ã«å¯ŸããŠãã©ã®ããŒããããŒã¿ãåãåºãããIDãšããŠäœã䜿ãããåå¥ã«å®çŸ©ããå¿
èŠããããŸããã äžæ¹ã§ãå
±éåã§ããéšåã¯å
±éåããã§ããã ãåæ§ã®ã³ãŒãã§è©³çްæ
å ±ãååŸã§ããããã«ããŠãããŸããããã¯ãã³ãŒãã®æé©åã«ã¯ãAIã䜿çšããŠãããã®ãå¹çããã£ãã§ãã ç¹æ®ãªãªãœãŒã¹ã®ååŸãã㌠äžè¬çãªãªãœãŒã¹ã®å ŽåãååŸãããŒã¯äžèšã®ããã«ãªããŸãã ãµãŒãã¹éžæ â ãªãœãŒã¹äžèЧããåºåããããªãœãŒã¹ãéžæ â ãã¬ãã¥ãŒç»é¢è¡šç€º â Excel åºå ãããããµãŒãã¹ã®äžã«ã¯äžçºã§äžèЧãååŸã§ããªããµãŒãã¹ããããŸãã äŸãã°ãELBã®ã¿ãŒã²ããã°ã«ãŒãã®å ŽåãELBã«çŽã¥ãã¿ãŒã²ããã°ã«ãŒããååŸããå¿
èŠãããããããŸãæåã«ELBã®äžèЧãååŸãããã®åŸã«ã¿ãŒã²ããã°ã«ãŒããååŸããå¿
èŠããããŸãããã£ãŠãäžèЧã®ååŸãããŒãšããŠã¯äžèšã®ããã«ãªããŸãã ãµãŒãã¹éžæïŒELBã¿ãŒã²ããã°ã«ãŒãïŒâ ãªãœãŒã¹äžèЧããåºåããããªãœãŒã¹ãéžæïŒELBïŒâ ãªãœãŒã¹äžèЧããåºåããããªãœãŒã¹ãéžæïŒã¿ãŒã²ããã°ã«ãŒãïŒâ ãã¬ãã¥ãŒç»é¢è¡šç€º â Excel åºå ãã®ããã«ãµãŒãã¹ã«ãã£ãŠã¯ãäžéã¹ããããååšãããã®ããããããã³ãŒããå
±éåããããšãã§ãããèŠåŽããŸããã ãŸãšã æ¬èšäºã§ã¯ãAWSãã©ã¡ãŒã¿ã·ãŒãèªåçæããŒã«ã®GUIã§ããããã³ããšã³ãã§äœ¿çšããæè¡ã«ã€ããŠç°¡åã«ç޹ä»ããŸããã å®ã¯ããã®åãçµã¿ã¯ããã³ããšã³ãã®ã¢ããªã±ãŒã·ã§ã³ãäœæããã€ããã¯ãªããããã¯ãšã³ãã®JSONãã¡ã€ã«ããã©ã¡ãŒã¿ã·ãŒãã«å€æããã¢ããªã±ãŒã·ã§ã³ã®ã¿ãæ§ç¯äºå®ã§ããããããã䜿çšãããŠãŒã¶ãŒç®ç·ã§èãããšããã¯ãGUIãã»ãããšããããšã«ãªããéçºã«åãçµã¿ãŸããã æ®æ®µã¯ã€ã³ãã©æ§ç¯ãæ
åœããéšçœ²ã®ãããåããŠè§Šããæè¡ãå€ããéçºã«ã¯3~4ãæã»ã©ããã£ãŠããŸããŸãããããã®åãçµã¿ãçµãŠã¢ããªã±ãŒã·ã§ã³ã®ç¥èãã€ããããšãã§ãããã«ã¹ã¿ãã¯ãšã³ãžãã¢ãžãšäžæ©è¿ã¥ããæ°ãããŸãã çããããã²ãæ¯æãããããŠæ®æ®µãšã¯ç°ãªãåéã®æè¡ã«è§ŠããŠã¿ãã®ã¯ãããã§ããããïŒ ãšããããã§ãç§ã®æçš¿ã¯ä»¥äžã§ãïŒ æ¬¡åã¯ãAWSãã©ã¡ãŒã¿ã·ãŒãèªåçæããŒã«ã䜿ã£ãŠã¿ããšããããšã§ãèªå
ããã«ããã³ã¿ããããŸãã®ã§ããã²ãã¡ããé²èЧããã ããã°ãšæããŸãã
ããã«ã¡ã¯ãã²ãããã¬ã§ãã é»åã¬ã³ãžãçæŽ»ã®äžã«åœããåã®ããã«æº¶ã蟌ãã§ããååšã§ãããã ã§ãããã¬ã³ãžããšã¯ã©ããããã£ãŠããèŠçŽ ã§ããããïŒ çºæå
ã®ã¢ã¡ãªã«ïŒè±èªïŒã§ã”microwave (oven)”ã§ããããã¬ã³ãžãã®èŠçŽ ã¯èŠåœãããŸãããã æŽå²ã蟿ããšãã³ãããããŸããã é»åã¬ã³ãžã®å ç±åçã¯ãã¢ã¡ãªã«ã®ã¬ã€ã»ãªã³ç€Ÿã«ãã£ãŠãã¬ãŒã㌠è£
眮 ã®å®éšäžã«ã èå ãã¬ãŒããŒã®ãã€ã¯ãæ³¢ã«ãã£ãŠ æº¶ ããŠããããšã«æ°ãä»ããããã«ãã³ããåŸãŠã ãã°ãããã³ã䜿ã£ã調çåšãã¬ãŒããŒã¬ã³ãžããšããŠè£œååãããŸããã åŒçšïŒäžè¬ç€Ÿå£æ³äºº æ¥æ¬é»æ©å·¥æ¥äŒã é»åã¬ã³ãžã®æŽå² ã ãé»åã¬ã³ãžããšããèšèãããããçãŸããã®ããç¥ããªãã§ãã¹ã ¹ ãã¬ã³ãžãã®ç±æ¥ããã®æå³ã«ã€ããŠãæç¢ºãªæç®ãèŠã€ããããšã¯ã§ããŸããã§ãããæ¥æ¬ã§ã¯ãã®åãããã¬ã¹ã¬ã³ãžïŒã¬ã¹ã³ã³ãïŒããšããåç§°ãåºãã£ãŠããã黿°çã«å ç±æçã§ãã調çåšå
·ãšããŠãé»åã¬ã³ãžããšã€ããããã®ã§ã¯ãªããããšãã説ãããããã§ãã ããŠãä»åã¯CloudFrontã®æ©èœã®äžã€ãLambda@Edgeã«ããããã°ã«ã€ããŠå°ãçŽè§£ããŠãããŸãã ããããããš Amazon CloudFrontã䜿ã£ãŠããããã®äžã§Lambda@Edgeã䜿çšããŠããŸãã ããã§ãLambda@Edgeããåºåããããã°ã«ã€ããŠãäºããã°ã®æå¹æéãèšå®ããŠããããå ŽåãèããŸãã æ¢å®ã§ã¯âŠ AWSã®å
¬åŒããã¥ã¡ã³ããªã©ã«ãèšèŒããããŸãããLambda@Edgeã§ã¯é¢æ°ãå®è¡ãããå Žæã«æãè¿ãAWSãªãŒãžã§ã³ã«ãã°ã°ã«ãŒããèªåã§äœæããããã°ã€ãã³ããä¿ç®¡ãããŸãã チュートリアル: 基本的な Lambda@Edge 関数 (コンソール) を作成する - Amazon CloudFront Amazon CloudFront ã§å®è¡ãããåºæ¬ç㪠Lambda@Edge 颿°ãã³ã³ãœãŒã«ã䜿çšããŠäœæããæ¹æ³ã«ã€ããŠèª¬æããŸãã docs.aws.amazon.com エッジ関数のログ - Amazon CloudFront Amazon CloudWatch Logs ã䜿çšããŠãLambda@Edge 颿°ãš CloudFront Functions ã®äž¡æ¹ã®ãšããžé¢æ°ã®ãã°ãååŸããŠãã ããã docs.aws.amazon.com ãŸããèªåã§äœæããããã°ã°ã«ãŒãã¯æå¹æéãæªèšå®ïŒå€±å¹ããªãïŒã®ãããæç€ºçã«åé€ããªããšãã°ãæ®ãã€ã¥ããŸãã ã³ã³ãã©ã€ã¢ã³ã¹ãèŠçŽäžããã°ã¯ãã¹ãŠä¿ç®¡ããå¿
èŠãããå Žåãªã©ã¯ãã®èšå®ã§ãåé¡ã¯ãããŸãããããã°ã€ãã³ãã®ä¿åã«ãæéã¯çºçããŸãã 2026幎1æçŸåšã§ã¯ãæ±äº¬ãªãŒãžã§ã³ã«ãããŠ1GBããã$0.033ã®ä¿åè²»çšãçºçããŸãã 課é¡ç¹ 以äžã®ããšãããLambda@Edgeã§ãã°ãä¿ç®¡ããå Žåãããã©ã«ãã®èšå®ã§ã¯ç¡æéã§ãã°ãæ®ãç¶ããäž»ã«è²»çšé¢ã§ã®è² æ
ãå¢å€§ããããªãç¹ãã説æããŸããã ã§ã¯ãäºããã°ã°ã«ãŒããäœæãããã°ã°ã«ãŒãã«å¯ŸããŠæå¹æéãèšå®ãããã®ã§ããâŠããã«ã¯ Lambda@Edgeãã©ãã§å®è¡ããããã®ãïŒã©ãã®AWSãªãŒãžã§ã³ã«ãã°ãåºåããããã®ãïŒ ããç¥ãå¿
èŠããããŸãã Lambda@Edgeãå®è¡ãããå Žæ ãããçè§£ããããã«ã¯ãAmazon CloudFrontã«ã€ããŠãç¥ãå¿
èŠããããŸãã CloudFrontã¯ããšããžãã±ãŒã·ã§ã³ïŒâ ãªãŒãžã§ã³ïŒããšåŒã°ããå Žæã§ãã£ãã·ã¥ãµãŒããŒãšããŠæ©èœããŠããŸãã ãšããžãã±ãŒã·ã§ã³ã«ãŠãã£ãã·ã¥ãããããªãã£ãå Žåã¯ããªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ïŒâ ãªãŒãžã§ã³ïŒãã«ã¢ã¯ã»ã¹ããããã§ããããããªãã£ãå Žåã¯ãªãªãžã³ããã³ã³ãã³ããååŸããŸãã åŒçšïŒ AWS Black Belt Online Seminar – Amazon CloudFront åºç€ç·š(P. 15) ãããŠãLambda@Edgeã¯ãäžèšã®ããªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãã«ãããã€ãããŠããŸãã CloudFront Functionsã«ã€ããŠã¯ããšããžãã±ãŒã·ã§ã³ãã«ãããã€ãããŠããŸãã ãã®ãããCloudFront Functionsã®æ¹ãå®è¡æéãæ©ãäžæ¹ããã£ãã·ã¥å®¹éãå°ãªãããã³ãŒã容éã®å¶éãå³ãããã®ã ãšåãããŸãã ããœã³ã³ã®CPUã«ãããL1ã»L2ãã£ãã·ã¥ãšã€ã¡ãŒãžãããšå°ãåãããããã§ããããâŠïŒ åŒçšïŒ AWS Black Belt Online Seminar – Amazon CloudFront (CloudFront Functions / Lambda@Edge ç·š) (P. 17) ã§ã¯ããã®ããªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãã¯ã©ãã«ããã®ã§ããããïŒ 2026幎1æçŸåšã§ã¯13åæã«èšå®ãããŠããŸãã ç±³åœæ±éš (ããŒãžãã¢åéš) â us-east-1 ç±³åœæ±éš (ãªãã€ãª) â us-east-2 ç±³åœè¥¿éš (åã«ãªãã©ã«ãã¢) â us-west-1 ç±³åœè¥¿éš (ãªã¬ãŽã³) â us-west-2 ã¢ãžã¢ãã·ãã£ã㯠(ã ã³ãã€) â ap-south-1 ã¢ãžã¢ãã·ãã£ã㯠(ãœãŠã«) â ap-northeast-2 ã¢ãžã¢ãã·ãã£ã㯠(ã·ã³ã¬ããŒã«) â ap-southeast-1 ã¢ãžã¢ãã·ãã£ã㯠(ã·ãããŒ) â ap-southeast-2 ã¢ãžã¢ãã·ãã£ã㯠(æ±äº¬) â ap-northeast-1 æ¬§å· (ãã©ã³ã¯ãã«ã) â eu-central-1 æ¬§å· (ã¢ã€ã«ã©ã³ã) â eu-west-1 æ¬§å· (ãã³ãã³) â eu-west-2 åç±³ (ãµã³ããŠã) â sa-east-1 æç€ºçãªäžèЧã¯å
¬åŒãµã€ãããã¯èŠãããšãã§ããªãã£ãã®ã§ã以äžã®è³æããèªã¿åããŸããã ïŒãã¹ãŠAWSãæäŸããè³æã§ãïŒ Amazon CloudFront çšã®ãªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãçºè¡š ãµãŒãã¹ã¢ããããŒã Edge Networking Services ç·š â P.8 Amazon CloudFront ã AWS ã®æ¬§å· (ã¢ã€ã«ã©ã³ã) ãªãŒãžã§ã³ã§æ°ãããªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãéå§ ãŸããCloudFrontã®ãŠãŒã¶ãŒããã¥ã¢ã«ãããLambda@Edgeã®ãµãŒãã¹ã«ãªã³ã¯ãããããŒã«ã®äœ¿çšããµããŒããããŠãããªãŒãžã§ã³ã«ãŠãåæ§ã®ãã®ãæããŠããŸãã ããããããŒã¬ã€ã – Amazon CloudFront â P. 935ïŒãLambda@Edge ãµãŒãã¹ãªã³ã¯ããŒã«ã§ãµããŒããããŠãã AWS ãªãŒãžã§ã³ ãïŒã«ãªãŒãžã§ã³äžèЧã®èšèŒããããŸãã 以äžã®ããšããããã¹ãŠã®AWSãªãŒãžã§ã³ã§ãªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãæäŸãããŠããããã§ã¯ãªãããšãåãããŸãããïŒäŸãã°ã倧éªãªãŒãžã§ã³ã§ã¯æäŸãããŠããªãããšãåãããããããšæããŸããïŒ çµè« 以äžã®ããšãããäºããã°ã°ã«ãŒããäœæãããã°ã°ã«ãŒãã«å¯ŸããŠæå¹æéãèšå®ãããå Žåã¯ãäžè¿°ããŸãã13åã®ãªãŒãžã§ã³ã«å¯ŸããŠãæå®ã®åœåèŠåãèšå®ã«æ²¿ã£ããã°ã°ã«ãŒããäœæããã°è¯ãããšããããšã«ãªããŸãã Lambda@Edgeã«ããããã°ã°ã«ãŒãåã®èŠåã«ã€ããŠã¯ã以äžããåç
§ãã ããã エッジ関数のログ - Amazon CloudFront Amazon CloudWatch Logs ã䜿çšããŠãLambda@Edge 颿°ãš CloudFront Functions ã®äž¡æ¹ã®ãšããžé¢æ°ã®ãã°ãååŸããŠãã ããã docs.aws.amazon.com ãªããä»åŸãªãŒãžã§ã³å¥ãšããžãã£ãã·ã¥ãæ¡å€§ããããšãèããããŸãã®ã§ãå
ãããŠä»ãªãŒãžã§ã³ïŒå€§éªãªãŒãžã§ã³ãªã©ïŒã§ãã°ã°ã«ãŒããäœæããŠããããšããã®ãäžæããšæãããŸãã ãã°ã°ã«ãŒãã®äœæèªäœã«ã¯AWSã®å©çšæéã¯çºçããŸããã äžæ¹ãæ¥æ¬åœå
ã«ã¢ã¯ã»ã¹ãéå®ããŠãããæµ·å€ããã®ã¢ã¯ã»ã¹ã¯é®æããŠããå Žåãªã©ã«ã€ããŠã¯ãæŽã«äºåã«äœæãããªãŒãžã§ã³ãçµã£ãŠããïŒæ±äº¬ãªãŒãžã§ã³ã®ã¿ããªã©âŠïŒããšæããŸãã çµããã« ä»åã¯ãCloudFrontã«Lambda@Edgeãçµã¿åãããŠäœ¿çšããå Žåã«ãããŠãã©ã®ãªãŒãžã§ã³ã«ãã°ã°ã«ãŒããå¿
èŠãªã®ãïŒâ Lambda@Edgeã®å®è¡ã«é¢é£ããAWSãªãŒãžã§ã³ãã©ããªã®ãïŒèª¿æ»ãã玹ä»ããŸããã å
¬åŒããã¥ã¡ã³ããªã©ã§ãèšåãã»ãšãã©ãããŠãããæ
å ±åéã«èŠæŠããŸããããåèã«ãªãæ¹ãããã£ããããŸããã幞ãã§ãã äœè«ã§ããããã¬ã³ãžã§ãã³ããšããèšèã¯æ»èªã«ãªã£ãŠããŸãæ¥ãããã®ã§ããããã ãã¬ãã«ãããããã£ã³ãã«åãããæ»èªã«ãªãã€ã€ããããã§ã⊠æè¿ã®é»åã¬ã³ãžã¯ããããŒããšããé³ããªã£ããããããããªé³æ¥œãæµããããã§ãããã¬ã³ãžã§ããŒãâŠïŒ
ããã«ã¡ã¯ãSCSKå°æŸ€ã§ãã çæAIãå©çšããŠèªç¶èšèªã«ããããŒã¿æ€çŽ¢ãèŠçŽãå¯èœã«ããŠããããSnowflake Intelligenceãäžè¬æäŸ(GA)ã«ãªããŸããã ååã®ããã°ã§ã¯ãSnowflake Intelligenceã®æŠèŠç޹ä»ããäŒŽèµ°æ¯æŽã®ãæ¡å
ããŠããŸããã â SCSKã¯Snowflake Intelligenceã®ããŒã³ãããŒãããŒãšãªããŸããïŒ Snowflake Intelligenceã§å§ããçæAIæŽ»çš â SCSKã䌎走ããŸã Snowflakeãæè¿GAããSnowflake Intelligenceã«ã€ããŠã®èšäºã§ããå©çšããçºã®éçšã»SCSKãªãã§ã¯ã®æ¯æŽã«ã€ããŠæ¡å
ããŸãïŒ blog.usize-tech.com 2025.12.08 SCSKã§ã¯ã瀟å
ã®ããŒã¿æŽ»çšåºç€ãšããŠãSnowflakeãæ¡çšããŠãããSnowflake Intelligenceã®å©çšã«ã€ããŠãåãçµãã§ããŸãã ä»åã¯Snowflake Intelligenceã®æŽ»çšPoCãå§ããæµãã«ã€ããŠã玹ä»ããããŸãïŒ SCSKã®ç€Ÿå
ããŒã¿æŽ»çš ããŒã¿æŽ»çšã®ã¢ãŒããã¯ã㣠SCSKã§ã¯ã以äžã®ãããªã¡ããªãªã³ã¢ãŒããã¯ãã£ãSnowflakeäžã«æ§ç¯ããŠããŒã¿ã管çããŠããŸãã ããã³ãºå±€ïŒ ãã¡ã€ã«ãã·ã¹ãã ã®ããŒã¿ããŒã¹ãªã©ãããŒã¿ãœãŒã¹ã®ããŒã¿ããã®ãŸãŸä¿æãã ã·ã«ããŒå±€ïŒ åæããããããã«æŽåœ¢ãããæ±çšçã«å©çšå¯èœãªããŒãã«ãããå±€ ãŽãŒã«ãå±€ïŒ BIã§å¯èŠåããããã«ãããã·ã¥ããŒãããšã«äœæããããŒãã«ãããå±€ ãŽãŒã«ãå±€ã«äœæããããŒãã«ãBIããŒã«ïŒPower BIïŒã§ã€ã³ããŒãããŠãããã·ã¥ããŒããäœæããŠããŸãã å®åããã·ã¥ããŒãäœæã«ããããŒã¿æŽ»çšã®èª²é¡ å®åããã·ã¥ããŒãäœæã«åºã¥ãããŒã¿æŽ»çšã«ã¯ä»¥äžã®ãããªèª²é¡ããããŸãã ããã·ã¥ããŒãå
¬éãŸã§ã®ãªãŒãã¿ã€ã ãé·ã ããŒãºã®ææ¡ããããã·ã¥ããŒãã®å
¬éãŸã§ãã¬ã€ã¢ãŠãæ€èšã»ããŒã¿ã¢ããªã³ã°ã»ã¹ãã¢ãããã·ãŒãžã£äœæã»BIããŒã«ã§ã®å®è£
ãªã©ãããã·ã¥ããŒãéçºã«ã¯å¿
èŠãªå·¥çšãå€ããããŸããç°¡åãªéèšå€ã®å¯èŠåã§ãã£ãŠããå®éã«èŠããããŒã¿ãèŠããããã«ãªããŸã§ã«ã¯ããªãŒãã¿ã€ã ãçºçããŸãã éå®çãªåæè»žã§ã®åæããã§ããªã ããã·ã¥ããŒãã§ã¯ãçµç¹å¥ã幎床å¥ãªã©ããããããæ±ºããããåæè»žã§ã®éèšå€ãã確èªããããšãã§ããŸãããããšãã°ã売äžã䌞ã³ãèŠå ãåæããããŠããããã·ã¥ããŒãã§è¡šç€ºãããŠãã以äžã®æ
å ±ãåŸãããšã¯ã§ãããçºçäºè±¡ã®çç±ãåæããããšãé£ããã§ãã ããããããã·ã¥ããŒãã§æ
å ±ãæ¢ãããšãé¢å ç§ãã¡ã¯ãã©ã€ããŒãã§ãæ¥åã§ãããªã«ããç¥ããããšãã«ã¯ãŸãçæAIã«åãåããããããªããŸããããã£ããããŒã¹ã§ã®æ€çŽ¢ã«æ
£ããããŠããŸããŸãããããã·ã¥ããŒããéç£ããŠãããŠãŒã¶ã¯èªåãæ¬²ããæ
å ±ãããããã·ã¥ããŒããããã«èŠã€ããããªããšã¹ãã¬ã¹ãæããããŒã¿æŽ»çšã®ã¢ãããŒã·ã§ã³ãäžãã£ãŠããŸããŸãã ãã®ããã«ãå®åœ¢ããã·ã¥ããŒãäœæã«ããããŒã¿ã®å¯èŠåã ãã§ã¯èª²é¡ããããŸãã ãå¿
èŠãªæ
å ±ã«ããã«ã¢ã¯ã»ã¹ã§ããããšããå€è§çãªåæã容æã«ã§ããããšãããä»åŸã®ããŒã¿æŽ»çšã«æ±ããããŠããŸãã Snowflake Intelligenceã®å°å
¥ Snowflake Intelligenceã¯ããããªèª²é¡ã解決ããŠããããµãŒãã¹ã§ãã SCSKã®ç€Ÿå
ããŒã¿æŽ»çšã«ãããŠãããã·ã¥ããŒãã®äœæãšäžŠè¡ããŠãSnowflake Intelligenceã®æŽ»çšæ€èšãè¡ãPoCãéå§ããŸããã Snowflake Intelligenceã¯ã以äžã®ãããªå
šäœåã«ãªããŸãã äžçªäžã®Dataãã蟿ã£ãŠãSnowflake Intelligenceã«è¡šç€ºãããŸã§ã®æµããã玹ä»ããŸãïŒ DataïŒåæå¯Ÿè±¡ãšããããŒã¿ã®éžå® ã¡ããªãªã³ã¢ãŒããã¯ãã£ã«ãããã·ã«ããŒå±€ã¯ãæ±çšçã«å©çšã§ããããŒãã«ãä¿æããå±€ã§ããã ããã·ã¥ããŒãéçºã§ã¯ããã®ã·ã«ããŒå±€ã®ããŒãã«ãããšã«ããã·ã¥ããŒãçšã®ããŒãã«ããŽãŒã«ãå±€ã«äœæããŸãããåœãããžã§ã¯ãã§ã¯Snowflake Intelligenceãããã®ã·ã«ããŒå±€ã®ããŒãã«ã«ãã®ãŸãŸã¢ã¯ã»ã¹ã§ããããããŸããã ããã«ããããŠãŒã¶ãŒãèªç±ã«åãåãããŠãå¹
åºãåæè»žã§ã®è¿çãåŸãããšãã§ããŸãã ãã£ã¡ã³ã·ã§ãã«ã¢ããªã³ã°ã«åºã¥ãããã§ã«çŽ100以äžã®ãã¡ã¯ã/ãã£ã¡ã³ã·ã§ã³ã®ããŒãã«ãçšæããŠããŸããããPoCãšããŠã¯ãã®ãã¡ã®ãPLããŒã¿ã»åŒåããŒã¿ã»äºç®ããŒã¿ãªã©äž»èŠãªããŒãã«ã察象ã«çµãããšãšããŸããã ããŒã¿æºåïŒSemantic Viewã®äœæ å
ã»ã©éžå®ããããŒãã«ã察象ã«ãSemantic ViewãäœæããŸãã Semantic Viewã®äœæã¯ãã¡ã¯ãããŒãã«ã ãã§ãªããé¢é£ãããã¹ã¿ããŒãã«ã®äœæãå¿
èŠã«ãªããŸãã ãã®ãããä»åPoCãšããŠéžå®ãããã¡ã¯ãããŒãã«ã¯5ããŒãã«çšã§ããããããããã®ãã¡ã¯ãããŒãã«ã«é¢é£ãããã¹ã¿ããŒãã«ãå«ãããšãçŽ15ããŒãã«ã®Semantic Viewã®äœæãå¿
èŠã«ãªããŸãã ããããã®ããŒãã«ã®ã«ã©ã ã«ã¯æ°åã®ã«ã©ã ããããSemantic Viewã®äœæãæçŽã«è¡ã£ãŠãããšãPoCããªããªãå§ããããŸããã ããã§ãSnowflake è
éæ§ãå
¬éãããŠãã Snowflake ã®ã»ãã³ãã£ãã¯ãã¥ãŒã AI ã§èªåçæããã ã®ã¹ãã¢ãããã·ãŒãžã£ã§ãSemantic ViewãèªåäœæããããšãšããŸããã å°æ¥çã«ã¯ãå
¬åŒæ©èœãšããŠSemantic Viewã®èªåäœææ©èœããªãªãŒã¹ãããããã§ãã 2026/1çŸåšã¯æªãªãªãŒã¹ã®ããã§ãããææ°ã®ãªãªãŒã¹ç¶æ³ãã確èªãã ããã åããŒãã«ã®Semantic ViewãäœæããåŸãããããã®Semantic ViewéïŒãã¡ã¯ãããŒãã« – ãã¹ã¿ããŒãã«éïŒã®ãªã¬ãŒã·ã§ã³ã®èšå®ãå¿
èŠã«ãªããŸãã ãªã¬ãŒã·ã§ã³ã®èšå®ã«ã¯ãåãSemantic Viewã®å®çŸ©å
ã«ãªã¬ãŒã·ã§ã³ã®èšå®å
ã®ãã¹ã¿ããŒãã«ã®å®çŸ©ãå«ããŠããå¿
èŠããããŸããè€æ°ã®ãã¡ã¯ãããŒãã«ïŒPLãåŒåïŒããåäžã®ãã¹ã¿ããŒãã«ïŒçµç¹ãã¹ã¿ãäŒæ¥ãã¹ã¿ïŒãåç
§ããå ŽåããããŸãããããããã®ãã¡ã¯ãããŒãã«ã®å®çŸ©ããšã«ããã¹ã¿ããŒãã«ã®å®çŸ©ãå«ããŠããå¿
èŠããããŸãã ãã®ããã以äžã®ããã«äœæããããã¹ã¿ããŒãã«ã®YAMLå®çŸ©ãã³ããŒããŠããã¡ã¯ãããŒãã«ã®YAMLå®çŸ©å
ã«ããŒãžãããŠããå¿
èŠããããŸãããã®åŸããã¹ã¿ããŒãã«ãžã®ãªã¬ãŒã·ã§ã³èšå®ãè¡ããŸãã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ïŒCortex Agentsã®äœæ äœæããSemantic Viewãå
ã«ãCortex AgentãäœæããŸãã Snowflake Intelligenceã®åç粟床ãäžããããã«ã¯ãé¢é£ã®ãªãããŒã¿ã®Semantic Viewã1ã€ã®Cortex Agentã«è©°ã蟌ãã¹ãã§ã¯ãããŸããã ãã®ãããä»åã¯PLãšãŒãžã§ã³ããåŒåãšãŒãžã§ã³ããªã©ãSemantic Viewã®ããããã§Cortex AgentãäœæããŠããŸãã ãŠãŒã¶ã«ã¯ãSnowflake Intelligenceã®ç»é¢äžããåãåããããå
容ã«åã£ããšãŒãžã§ã³ããéžæããŠããããŸãã ãã ããããããã®Cortex Agentã«å¯ŸããŠ1ã€ã®Semantic ViewsãäœæããŠãããšãæ±çšçã«åçã§ããã¯ãã®ãšãŒãžã§ã³ããšããŠã®æçšæ§ãèããŠããŸãéšåãããã®ã§ãã©ã®ããã«Cortex Agentã«ãŸãšããŠãããã¯èå¯ã®äœå°ããããŸãã Cortex Agentsã®èšå®ã§ã¯ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³æé ãã®èšå®ãéèŠã«ãªããŸãã ããšãã°ã”幎床åäœã§å£²äžãéèšããŠäžãã”ãšåãåãããå Žåã1ïœ12æã§éèšãããŠããŸãããã4ïœç¿3æã§éèšããŠãããããå Žåã«ã¯ä»¥äžã®ãããªããªãŒã±ã¹ãã¬ãŒã·ã§ã³æé ãã®èšå®ãè¡ããŸã㠓幎床”åäœã§ã®éèšã»å¯èŠåã®äŸé Œãæ¥ãå Žåã«ã¯ã4æãã3æã®12ã«æãéèšæéãšããŠãåæããé¡ãããããŸããäŸãã°ã2024幎床ã®å£²äžåæãããŠãã ããããšãã質åã«å¯ŸããŠã¯2024幎4æãã2025幎3æãŸã§ã®éèšæéã§å£²äžãåæããããã«ããŠãã ããã Snowflake Intelligenceã®å©çšã㢠Snowflake Intelligenceãå®éã«å©çšããŠã¿ãŸãã PLã«é¢ããåãåãããè¡ãããããããšãŒãžã§ã³ãã¯ãPLããæå®ããŠãããŸãã ãŸãã¯ãå©ççã®çµå¹Žæšç§»ãã¿ãŠã¿ãŸãã ãããšã2023/3ã«å©ççã倧ããäžãã£ãŠããããšã確èªã§ããŸããã ãããŸã§ã¯å®åããã·ã¥ããŒãã§ã確èªã§ããŸããããããã”ãªããããªã£ãŠããã®ãïŒ”ãæ·±å ããŠåæããŠãããããªããšã¯ãSnowflake Intelligenceã§ãªããšã§ããŸããã æ¬¡ã«ã2023/3ã«å©çãã¯ãŒã¹ã3ã®æ¡ä»¶ãååŸããŠã¿ãŸãã ç¹å®ã®æ¡ä»¶ãæœåºã§ããŸããã ãã®ã¯ãŒã¹ã1äœã®æ¡ä»¶ã«ã€ããŠãæå¥ã®å©çã®åŸåãèŠãŠã¿ãŸãã Snowflake Intelligenceã§ãã°ã©ãã§ã®å¯èŠåã«å ãããã¬ã³ãã®åæããªããã®ããã«ãªã£ããã®æšå¯ãŸã§è¡ã£ãŠãããŠããŸãã ãã®Snowflake Intelligenceã®åæçµæãèžãŸããŠã AIã«ããèå¯ãæ¡ä»¶æ
åœè
ã«äºå®ç¢ºèª æ¡ä»¶æªåãã¿ãŒã³ãåæ æªåã®å€èª¿ããšãããKPIèšå®ããããã·ã¥ããŒãã«è¿œå æªåæ¡ä»¶ãå€ãçµç¹ã®ç¹åŸŽæœåº ãªã©ãå®éã«ããžãã¹ãžã®ã¢ã¯ã·ã§ã³ã«ã€ãªããŠããããšãèããããŸãïŒ ç²ŸåºŠåäžã®ããã®ãã€ã³ã Snowflake Intelligenceãå®éã«æ¥åã§å©çšããŠããã«ã¯ãåçé床ã粟床ãåäžãããŠããå¿
èŠããããŸãã åçé床 çŸç¶ã¯åçãŸã§ã«30ç§ä»¥äžããã£ãŠããŸããã¢ãã¿ãªã³ã°ããå
èš³ã確èªããŠã¿ããšããSQLå®è¡ãã¯5ç§çšåºŠã§ããããã以å€ã®ãLLMã®èšç»ããLLMå¿ççæãã®æéãå€ãå ããŠããŸãã ãã®ãããªå ŽåããŠã§ã¢ããŠã¹ã®æ§èœãäžããŠã倧ããªæ¹åã¯èŠããããLLMã®åçé床ãåäžãããŠããå¿
èŠããããŸããLLMã®åçé床ãåäžãããããã«ã¯ãæ³å®ããã質åãããããããæ€èšŒæžã¿ã¯ãšãªããšããŠç»é²ããŠããããšãéèŠã§ãã åç粟床 AIæ©èœã䜿ã£ãŠèªåçæããSemantic Viewããã®ãŸãŸäœ¿ã£ãŠããããããŸã ãŸã åçãããæ°å€ã®ç²ŸåºŠãåºãŠããŸããã åçã®ç²ŸåºŠãåäžãããã«ã¯ãå®è¡ãããã¯ãšãªã確èªããŠæ£ãããã®ã¯ãæ€èšŒæžã¿ã¯ãšãªããšããŠç»é²ããããééã£ãŠããå Žåã¯å矩èªãèŠçŽããªã©ãå°éãªèª¿æŽãå¿
èŠã«ãªããŸãã Semantic View粟床åäžã®ããã«ãäž»ã«ä»¥äžã®èšå®ãèŠçŽãå¿
èŠããããŸãã ãŸãšã Snowflake Intelligenceãå®éã«å©çšãããŸã§ã®æé ã«ã€ããŠã玹ä»ããŸããã 瀟å
ã®ããŒã¿æŽ»çšã«ãããçŸç¶ãšããŠã¯ãŸã ãŸã åçã®ç²ŸåºŠãåŸããããSemantic Viewã®èšå®èŠçŽããªã©ãè¡ã£ãŠããŸãã åç粟床ãåäžãããããã®å
·äœçãªæé ã«ã€ããŠãæ€èšŒãã§ãããããŸãå
±æãããŠããã ããããšæããŸãïŒ
AWSãå©çšããããã§äžæçã«å¥ã®IAMããŒã«ã®æš©éã«åãæ¿ããŠäœæ¥ããããã«ã¹ã€ããããŒã«ãããããšãããããšæããŸãããããªäžã§æè¿ AWS CLI ãå©çšããŠã®ã¹ã€ããããŒã«ãããæ©äŒããã£ãã®ã§ãããããæ¹ãããããæéåã£ãã®ã§åå¿ãšããŠç޹ä»ã§ããã°ãšæããŸããããã§ã¯2ã€æ¹æ³ã玹ä»ããŸãã®ã§ããã²åèã«ããŠã¿ãŠãã ããã æ¹æ³1 -configãã¡ã€ã«ã®ä¿®æ£- äžã€ç®ã®æ¹æ³ã¯configãã¡ã€ã«ãä¿®æ£ããæ¹æ³ã§ãã 以äžãã¹ã«ãããã¡ã€ã«ãã¡ã¢åž³çã§éããŸãã "C:\Users\<ãŠãŒã¶å>\.aws\config" 以äžã远èšãä¿åããŸãã [profile <ä»»æã®ãããã¡ã€ã«å>] #ã¹ã€ããããŒã«å
ã®ARN role_arn = arn:aws:iam::<ã¹ã€ããããŒã«å
ã®ã¢ã«ãŠã³ãID>:role/<ããŒã«å> source_profile = default #ãªãŒãžã§ã³ ex:ap-northeast-1 region = <ãªãŒãžã§ã³å> #MFAèå¥åãMFAèªèšŒãããå Žå mfa_serial = arn:aws:iam::<ã¢ã«ãŠã³ãID>:mfa/ïŒãŠãŒã¶åïŒ ããšã¯ã³ãã³ãå®è¡æã«ãââprofile <ä»»æã®ãããã¡ã€ã«å>ããã€ããã ãã§ã¹ã€ããå
ã®ããŒã«ã§å®è¡ã§ããããã«ãªããŸãã aws sts get-caller-identity --profile <ä»»æã®ãããã¡ã€ã«å> ãã®æ¹æ³ã¯configãã¡ã€ã«ãä¿®æ£ããã³ãã³ãããšã«ã–profile <ä»»æã®ãããã¡ã€ã«å>ããã€ããã ããªã®ã§ç°¡åã§ãã æ¹æ³2 -äžæçãªã¢ã¯ã»ã¹ããŒã®ååŸ- 2ã€ç®ã®æ¹æ³ã¯äžæçãªã¢ã¯ã»ã¹ããŒãååŸãèšå®ããæ¹æ³ã§ãã 以äžã³ãã³ãã§ã¹ã€ããããŒã«å
ã®æ
å ±ãååŸããŸãã aws sts assume-role â-role-arn <ã¹ã€ããããŒã«å
ã®arn> --role-session-name <ä»»æã®ã»ãã·ã§ã³å> ãã®ã³ãã³ããå®è¡ãããšäžæçãªã¢ã¯ã»ã¹ããŒãã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãã»ãã·ã§ã³ããŒã¯ã³ã衚瀺ãããã®ã§ã以äžã³ãã³ããçšããŠããããèšå®ããŸã #ååŸããã¢ã¯ã»ã¹ããŒå
¥å set AWS_ACCESS_KEY_ID= <ã¢ã¯ã»ã¹ããŒ> #ååŸããã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒå
¥å set AWS_SECRET_ACCESS_KEY= <ã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒ> #ååŸããã»ãã·ã§ã³ããŒã¯ã³å
¥å set AWS_SESSION_TOKEN= <ã»ãã·ã§ã³ããŒã¯ã³> 以äžã³ãã³ãã§ã¹ã€ããããŒã«ããããšã確èªããŸãã aws sts get-caller-identity ããã§ã¹ã€ããããŒã«å®äºã§ããæ¹æ³1ãããã¯æéãããããŸãããæ¯åã–profile ~ããã€ããŠã³ãã³ãå®è¡ããã®ãé¢åãšãã人ã«ã¯è¯ããããããŸããã ãããã« ä»åã¯AWS CLIã§ã®ã¹ã€ããããŒã«ã«ã€ããŠç޹ä»ããŸããããã²åèã«ããŠãã ããã
1. ã¯ããã« ããã«ã¡ã¯ãSCSKå¿æã§ãã Azure Monitor Agentã§VMã®ã«ã¹ã¿ã ãã°ãåéããéã以äžã®ããã«ãã©ã«ãã§ã¯ã€ã«ãã«ãŒãæå®ããããããšããããšæããŸãã C:\bat\log**.log åŸæ¥ãAzure Monitor Agentã§ã¯ãã©ã«ãã«å¯Ÿããã¯ã€ã«ãã«ãŒãæå®ã¯ã§ããªãèªèã§ããããå
¬åŒãµã€ãã確èªãããšãã ããã¡ã€ã«ã®äžã€äžã®éå±€ã®ãã©ã«ãã¬ãã«ã§ã¯ã¯ã€ã«ãã«ãŒãæå®ãå¯èœã ãšèšèŒãããŠããŸããã Azure Monitor ã䜿çšããŠä»®æ³ãã·ã³ããããã¹ã ãã¡ã€ã«ãåéãã - Azure Monitor Azure Monitor ãšãŒãžã§ã³ãã䜿çšããŠä»®æ³ãã·ã³äžã®ããã¹ã ãã¡ã€ã«ãããã° ããŒã¿ãåéããããã«ããŒã¿åéã«ãŒã«ãæ§æããŸãã learn.microsoft.com èšå® 説æ ãã¡ã€ã« ãã¿ãŒã³ ããŒã«ã«ãã£ã¹ã¯äžã®ãã°ãã¡ã€ã«ã®å Žæãšååãæå®ããŸããæ°ããååã§æ¯æ¥ãã¡ã€ã«ãäœæãããå Žåãªã©ãç°ãªããã¡ã€ã«åã«ã¯ã¯ã€ã«ãã«ãŒãã䜿çšããŸããè€æ°ã®ãã¡ã€ã«ãã¿ãŒã³ãã«ã³ãã§åºåã£ãŠå
¥åã§ããŸãããã¡ã€ã«åã«ã¯ã¯ã€ã«ãã«ãŒãã䜿çšã§ãããã¡ã€ã«åã®äžã€äžã®ã¬ãã«ã®ãã©ã«ããŒåã®ã¿ã¯ã€ã«ãã«ãŒãæå®ãå¯èœã§ãã äŸïŒ – C:\Logs\MyLog.txt – C:\Logs\MyLog*.txt – C:\Logs\IIS*\*.logs – C:\App01\AppLog.txt, C:\App02\AppLog.txt – /var/mylog.log – /var/mylog*.log – /var/logs/*/* çŸæç¹ã§ã®ããã¥ã¡ã³ãã®æŽæ°æ¥ã¯2025幎4æ30æ¥ãšãªã£ãŠããŸãã å
¬åŒãµã€ãã®è©²åœããŒãžã®åããŒãžã§ã³ã確èªããŸãããããã©ã«ãã®ã¯ã€ã«ãã«ãŒãæå®ã®èšè¿°ã¯ãããŸããã§ããã â»ãã¡ã€ã«ã®ã¯ã€ã«ãã«ãŒãæå®ã¯ä»¥åããå¯èœã§ãã åããŒãžã§ã³ã®æŽæ°æ¥ã¯2024幎11æ14æ¥ã§ãã®ã§ããã®ã¿ã€ãã³ã°ä»¥éã«æ©èœã远å ããããšèããããŸãã ïŒ2025幎12æã«å
¬éæ
å ±ãžè¿œèšããããšã®æ
å ±ããããŸãããããã¥ã¡ã³ãæŽæ°æ¥ã®èšèŒãšã¯äžèŽããŸããããçŽè¿ã®æŽæ°ã®ããã§ããïŒ <2024幎11æ14æ¥ããŒãžã§ã³ã®èšèŒ> å
¬åŒãµã€ãã«èšèŒãããŠããéããå®éã«æ€èšŒãè¡ããŸããã 2. ãã©ã«ãã®ã¯ã€ã«ãã«ãŒãæå®ã®æ€èšŒ ããŒã¿ãœãŒã¹ã®æå®ã§ãã.txtããšããã«ã¹ã¿ã ããã¹ããã¡ã€ã«ãšããã®äžã€äžã®éå±€ã®ãã©ã«ããã*ãã§æå®ããŸãã ãŸãã察å¿ãã Azure Log Analytics Workspaces ã«ããŒãã«ãlog_test_01_CLããäœæããŠãããŸãã ãµãŒãäžã§äžèšãã¡ã€ã«ãæŽæ°ããŸããã C:\logtest\test01\test01.txt Log Analytics ã確èªãããšããã察象ãã¡ã€ã«ãååŸã§ããŠããããšã確èªã§ããŸããã ç°¡åãªç¢ºèªã§ã¯ãããŸããããã©ã«ãã®ã¯ã€ã«ãã«ãŒãæå®ãå¯èœã§ããããšã確èªã§ããŸããã 3. ãŸãšã Azure Monitor Agent ã®ã«ã¹ã¿ã ããã¹ããã¡ã€ã«åéã«ãŠããã©ã«ãã®ã¯ã€ã«ãã«ãŒãæå®ãå¯èœã«ãªããŸããã è€æ°ãã©ã«ãã«ãŸãããããã¹ããã¡ã€ã«ãåéããèšå®ãç°¡åã«ãªãããšãŠã䟿å©ãªã¢ããããŒãã§ããã ãªããã¯ã€ã«ãã«ãŒãã®äœ¿çšã¯ãã¡ã€ã«åã®äžã€äžã®ã¬ãã«ã®ãã©ã«ãåã®ã¿ã§å¯èœã§ããããšã«ã泚æãã ããã ãã®èšäºããAzure ã«ãããã«ã¹ã¿ã ãã°ãã¡ã€ã«åéã®èšèšã®ãåèã«ãªãã°å¹žãã§ãã
ããã«ã¡ã¯ãåºéã§ãã ã³ã³ããããã¿ã®ãªãœãŒã¹ã¯ CI/CD ç°å¢ããªããšãããã€ãããŸã§ãã³ãã³ãã ããã«ãªã£ãŠå«æ°ãããã®ã§ããã€ãæåã« CI/CD ç°å¢ãã€ããããšããå§ããŠããŸããAmazon Bedrock AgentCore Runtime 㯠Amazon S3 ã«é
眮ãããœãŒã¹ã³ãŒãããã®ç°¡åãªãããã€ãã§ããã®ã§ãããä»åŸã®ã¹ã±ãŒã«ãèããŠã³ã³ããã§æåããäœãããšæããŸããã ã¢ãŒããã¯ã㣠以äžã®ã¢ãŒããã¯ãã£ã§äœã£ãŠããŸãã 以åäœæããã³ã³ãã Lambda ã® CI/CD ç°å¢ ãš 9 å²ä»¥äžåãã§ãããããæžããŠãŠæããŸããã AgentCore Runtime ã¯ã³ã³ãã Lambda ãäœã£ãããšããã人ãªã銎æã¿æãã§ããã ã©ã®ããã«åãã éçºç°å¢ (IDE) ã§ã以äžã®ããã«å¿
èŠãªã³ãŒã矀ãé
眮ã㊠AWS CodeCommit ãªããžããªã« push ããŸãã ã³ãŒãã CodeCommit ã«ã¢ããããŒãããããšã以äžã®ããã« AWS CodePipeline ãåãåºããŸããç»åã¯æ£åžžå®äºåŸã®ãã®ã§ãã ãããã€ãå®äºãããšããããžã¡ã³ãã³ã³ãœãŒã«å
ã§ Amazon Bedrock AgentCore Runtime ãåºæ¥äžãã£ãããšã確èªã§ããŸãã ããã¹ããšã³ããã€ã³ãããæŒããŠåäœã確èªããŠã¿ãŸãã ä»åã¯ã AWS Knowledge MCP Server ã«åãåãããŠãããåçŽãªãšãŒãžã§ã³ããäœããŸããã®ã§ãAWS ã«é¢ãã質åãæããŠã¿ãŸããâ»åŸã»ã©ãšãŒãžã§ã³ãã®ã³ãŒãã¯è²Œãä»ããŸãã åçãé·ãã£ãã®ã§ç»åã¯éäžã§åããŠããŸã£ãŠããŸããããã£ãããšèª¬æããŠãããŸããã ãšãŒãžã§ã³ãã®ã³ãŒã IDE å
ã§äœæãããšãŒãžã§ã³ãçšã®ã³ãŒãã§ããããèªäœã¯å
šç¶å€§ãããã®ã§ã¯ãªãã§ããåãããµã³ãã«çšåºŠã«æã£ãŠäžããã app.py (ãšãŒãžã§ã³ãããžãã¯) ã·ã³ãã«ã«ãMCP ãµãŒããŒã«èãã«è¡ãã ãã®ãšãŒãžã§ã³ãã§ããLLM 㯠Amazon Nova 2 Lite ã䜿ã£ãŠããŸãã import os from strands import Agent from strands.tools.mcp import MCPClient from mcp.client.streamable_http import streamablehttp_client from bedrock_agentcore import BedrockAgentCoreApp os.environ["AWS_DEFAULT_REGION"] = "ap-northeast-1" app = BedrockAgentCoreApp() mcp = MCPClient( lambda: streamablehttp_client( "https://knowledge-mcp.global.api.aws" ) ) @app.entrypoint def invoke(payload): user_message = payload.get("prompt", "ããã³ããã®ååŸã«å€±æããã®ã§ãã®æšãŠãŒã¶ãŒã«äŒããŠãã ããã") try: with mcp: agent = Agent( model="global.amazon.nova-2-lite-v1:0", system_prompt="""ããªã㯠AWS ã®æè¡ä»æ§ã«ç²Ÿéããã·ãã¢ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã§ãã ãŠãŒã¶ãŒã®è³ªåã«å¯ŸããŠãæäŸãããããŒã«ã䜿çšã㊠AWS å
¬åŒããã¥ã¡ã³ãããæ£ç¢ºãªæ
å ±ãååŸãã äžå¯§ãã€å°éçã«åçããŠãã ãããæ
å ±ãèŠã€ãããªãå Žåã¯ãæšæž¬ã§çããæ£çŽã«äŒããŠãã ããã""", tools=mcp.list_tools_sync() ) result = agent(user_message) return {"result": result.message} except Exception as e: app.logger.error(f"ãšãŒãžã§ã³ããšã©ãŒ: {e}") return {"error": "ãšãŒãžã§ã³ãã®åŠçäžã«ãšã©ãŒãçºçããŸãã"} if __name__ == "__main__": app.run() requirements.txt ãããã·ã³ãã«ã«ãã€ã³ã¹ããŒã«ãå¿
èŠãª Python ã¢ãžã¥ãŒã«ã䞊ã¹ãã ãã§ãã strands-agents bedrock-agentcore mcp Dockerfile AWS CodeBuild ã§ãã«ããããšãã«äœ¿çšããŸãã FROM --platform=linux/arm64 public.ecr.aws/docker/library/python:3.14-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . EXPOSE 8080 ENTRYPOINT ["python", "app.py"] 䜿çšããã³ã³ããã€ã¡ãŒãžã¯ Python 3.14 ã®ã¹ãªã ãªãã®ã«ããŸãããAmazon S3 ãããããã€ãããšãã¯å·çæç¹ã§ã¯ Python 3.13 ãææ°ã®ããŒãžã§ã³ãšããŠéžã¹ãããã§ããããã³ã³ããã€ã¡ãŒãžã ãšãã«ãç°å¢ã®å¶çŽã«äŸåãããã§ãã requirements.txt ãå
ã«ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããapp.py ãé
眮ããŸãã buildspec.yml AWS CodeBuild ã§ãã«ããããšãã«äœ¿çšããŸãã Amazon Bedrock AgentCore Runtime 㯠ARM64 ã¢ãŒããã¯ãã£ã§åäœããã®ã§ãã³ã³ããã€ã¡ãŒãžããã«ãããã³ãã³ãã«æç€ºçã« ARM64 ã䜿çšãããªãã·ã§ã³ãä»ããŸãã$ããŒã¯ã®ç°å¢å€æ°ãèšèŒãããŠããŸããããã㯠CodeBuild ããæž¡ãããŸãã version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com build: commands: - echo Building the Docker image... - docker build --platform linux/arm64 -t $IMAGE_REPO_NAME:$IMAGE_TAG . - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG post_build: commands: - echo Pushing the Docker image... - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG artifacts: files: - cfn_agentcore_runtime.yml cfn_agentcore_runtime.yml ãããã€ãã§ãŒãºã§äœ¿çšããŸãã ãã«ããã§ãŒãºã§ã¯ããããŸã§ã®ãã¡ã€ã«ã䜿çšããŠã³ã³ããã€ã¡ãŒãžãäœæããAmazon ECR ãªããžããªã«ä¿åãããŸã§ãæ
åœããŸããã ãããã€ãã§ãŒãºã§ã¯ãäœæãããã³ã³ããã€ã¡ãŒãžãã Amazon Bedrock AgentCore Runtime ããããã€ããŸãããã®ãšããã¢ã¿ãããã IAM ããŒã«ãäœæããŸããä»åŸå¥ã®æ©èœã䜿çšããããšãæ³å®ããŠãåºãã«æš©éãä»ããŠããŸãã Parameters ã§å®çŸ©ãããŠãããã©ã¡ãŒã¿ã¯ãAWS CodePipeline ããç°å¢å€æ°ãæž¡ãããªãŒããŒã©ã€ããããŸããå€ã¯äœã§ãããã®ã§ãããã©ã¡ãŒã¿ã®å®çŸ©ãããŠãããªããšããšã©ãŒã«ãªããŸãã AWSTemplateFormatVersion: 2010-09-09 Description: The CloudFormation template that creates a Bedrock AgentCore runtime and a relevant IAM role. # ------------------------------------------------------------# # Input Parameters # ------------------------------------------------------------# Parameters: SystemName: Type: String Description: System name. use lower case only. (e.g. example) Default: example MaxLength: 10 MinLength: 1 SubName: Type: String Description: System sub name. use lower case only. (e.g. prod or dev) Default: dev MaxLength: 10 MinLength: 1 ImageTag: Type: String Default: xxxxxxxxxxxxxxxxxxxx MaxLength: 100 MinLength: 1 ImgRepoName: Type: String Default: xxxxxxxxxxxxxxxxxxxx MaxLength: 100 MinLength: 1 Resources: # ------------------------------------------------------------# # Bedrock AgentCore Runtime # ------------------------------------------------------------# AgentCoreRuntime: Type: AWS::BedrockAgentCore::Runtime Properties: AgentRuntimeName: !Sub ${SystemName}_${SubName}_agent Description: !Sub AI Agent for ${SystemName}-${SubName} AgentRuntimeArtifact: ContainerConfiguration: ContainerUri: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${ImgRepoName}:${ImageTag} NetworkConfiguration: NetworkMode: PUBLIC ProtocolConfiguration: HTTP RequestHeaderConfiguration: RequestHeaderAllowlist: - Authorization RoleArn: !GetAtt AgentCoreRuntimeRole.Arn Tags: Cost: !Sub ${SystemName}-${SubName} DependsOn: - AgentCoreRuntimeRole # ------------------------------------------------------------# # Bedrock AgentCore Runtime Role (IAM) # ------------------------------------------------------------# AgentCoreRuntimeRole: Type: AWS::IAM::Role Properties: RoleName: !Sub AgentCoreRuntimeRole-${SystemName}-${SubName} Description: This role allows Bedrock AgentCore Runtime to invoke models and push logs. AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - bedrock-agentcore.amazonaws.com Action: - sts:AssumeRole Condition: StringEquals: "aws:SourceAccount": !Ref AWS::AccountId ArnLike: "aws:SourceArn": !Sub "arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:*" Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess Policies: - PolicyName: !Sub AgentCoreRuntimePolicy-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - logs:DescribeLogStreams - logs:CreateLogGroup Resource: - !Sub arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/bedrock-agentcore/runtimes/* - Effect: Allow Action: - logs:DescribeLogGroups Resource: - !Sub arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:* - Effect: Allow Action: - logs:CreateLogStream - logs:PutLogEvents Resource: - !Sub arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:* - Effect: Allow Action: cloudwatch:PutMetricData Resource: "*" Condition: StringEquals: cloudwatch:namespace: bedrock-agentcore - Effect: Allow Action: - logs:CreateLogGroup - logs:PutDeliverySource - logs:PutDeliveryDestination - logs:CreateDelivery - logs:GetDeliverySource - logs:DeleteDeliverySource - logs:DeleteDeliveryDestination Resource: "*" - Sid: BedrockModelInvocation Effect: Allow Action: - bedrock:InvokeModel - bedrock:InvokeModelWithResponseStream - bedrock:ApplyGuardrail Resource: - arn:aws:bedrock:*::foundation-model/* - arn:aws:bedrock:*:*:inference-profile/* - !Sub arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:* - Effect: Allow Action: - ecr:BatchGetImage - ecr:GetDownloadUrlForLayer Resource: - !Sub arn:aws:ecr:${AWS::Region}:${AWS::AccountId}:repository/${ImgRepoName} - Effect: Allow Action: - ecr:GetAuthorizationToken Resource: "*" - Effect: Allow Action: - bedrock-agentcore:GetWorkloadAccessToken - bedrock-agentcore:GetWorkloadAccessTokenForJWT - bedrock-agentcore:GetWorkloadAccessTokenForUserId Resource: - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default/workload-identity/${SystemName}_${SubName}_agent-* - Effect: Allow Action: - bedrock-agentcore:GetResourceApiKey Resource: - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:token-vault/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:token-vault/default/apikeycredentialprovider/* - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default/workload-identity/* - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - !Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:bedrock-agentcore-identity!default/oauth2/* - !Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:bedrock-agentcore-identity!default/apikey/* - Effect: Allow Action: - bedrock-agentcore:GetResourceOauth2Token Resource: - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:token-vault/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:token-vault/default/oauth2credentialprovider/* - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default/workload-identity/${SystemName}_${SubName}_agent-* - Effect: Allow Action: - aws-marketplace:ViewSubscriptions - aws-marketplace:Subscribe Resource: "*" Condition: StringEquals: aws:CalledViaLast: bedrock.amazonaws.com - Effect: Allow Action: - bedrock-agentcore:StartCodeInterpreterSession - bedrock-agentcore:InvokeCodeInterpreter - bedrock-agentcore:StopCodeInterpreterSession - bedrock-agentcore:GetCodeInterpreter - bedrock-agentcore:GetCodeInterpreterSession - bedrock-agentcore:ListCodeInterpreterSessions Resource: - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:aws:code-interpreter/aws.codeinterpreter.v1 - Effect: Allow Action: - bedrock-agentcore:CreateWorkloadIdentity - bedrock-agentcore:GetWorkloadAccessTokenForUserId Resource: - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default - !Sub arn:aws:bedrock-agentcore:${AWS::Region}:${AWS::AccountId}:workload-identity-directory/default/workload-identity/* - Effect: Allow Action: sts:GetWebIdentityToken Resource: "*" # ------------------------------------------------------------# # Output Parameters # ------------------------------------------------------------# Outputs: # AgentCore AgentRuntimeArn: Value: !GetAtt AgentCoreRuntime.AgentRuntimeArn AgentRuntimeId: Value: !GetAtt AgentCoreRuntime.AgentRuntimeId AgentRuntimeVersion: Value: !GetAtt AgentCoreRuntime.AgentRuntimeVersion CI/CD ç°å¢ã® AWS CloudFormation ãã³ãã¬ãŒã æåŸã«ãªããŸãããããŸããããæµã㊠CI/CD ç°å¢ãæ§ç¯ããŸãããããããªããšäœãå§ãŸããªãã§ãã(ç§ã¯) AgentCore Runtime çšã«æ°ãä»ããã®ã¯ãARM64 çšã®ãã«ãç°å¢ã«ããããšã§ãã”aws/codebuild/amazonlinux-aarch64-standard:3.0″ ãšããã€ã¡ãŒãžãæå®ããŠããŸãã AWSTemplateFormatVersion: 2010-09-09 Description: The CloudFormation template that creates a CI/CD environment for the AI agent. The created container image runs in Amazon Bedrock AgentCore. # ------------------------------------------------------------# # Input Parameters # ------------------------------------------------------------# Parameters: SystemName: Type: String Description: System name. use lower case only. (e.g. example) Default: example MaxLength: 10 MinLength: 1 AllowedPattern: "^[a-z0-9]+$" SubName: Type: String Description: System sub name. use lower case only. (e.g. prod or dev) Default: dev MaxLength: 10 MinLength: 1 AllowedPattern: "^[a-z0-9]+$" Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: "General Configuration" Parameters: - SystemName - SubName Resources: # ------------------------------------------------------------# # S3 # ------------------------------------------------------------# S3BucketArtifact: Type: AWS::S3::Bucket Properties: BucketName: !Sub ${SystemName}-${SubName}-aiagent-artifact LifecycleConfiguration: Rules: - Id: AutoDelete Status: Enabled ExpirationInDays: 14 PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} S3BucketLogs: Type: AWS::S3::Bucket Properties: BucketName: !Sub ${SystemName}-${SubName}-aiagent-logs LifecycleConfiguration: Rules: - Id: AutoDelete Status: Enabled ExpirationInDays: 365 PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} # ------------------------------------------------------------# # ECR # ------------------------------------------------------------# EcrRepositoryAiAgent: Type: AWS::ECR::Repository Properties: RepositoryName: !Sub ${SystemName}-${SubName}-aiagent EncryptionConfiguration: EncryptionType: AES256 ImageScanningConfiguration: ScanOnPush: true ImageTagMutability: IMMUTABLE LifecyclePolicy: LifecyclePolicyText: | { "rules": [ { "rulePriority": 1, "description": "Keep only 5 images, expire all others", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 5 }, "action": { "type": "expire" } } ] } EmptyOnDelete: true Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} # ------------------------------------------------------------# # CodeCommit Repository # ------------------------------------------------------------# CodeCommitRepoAiAgent: Type: AWS::CodeCommit::Repository Properties: RepositoryName: !Sub ${SystemName}-${SubName}-aiagent RepositoryDescription: !Sub AI Agent for ${SystemName}-${SubName} Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} # ------------------------------------------------------------# # CodePipeline # ------------------------------------------------------------# CodePipelineAiAgent: Type: AWS::CodePipeline::Pipeline Properties: Name: !Sub ${SystemName}-${SubName}-aiagent PipelineType: V2 ArtifactStore: Location: !Ref S3BucketArtifact Type: S3 RestartExecutionOnUpdate: false RoleArn: !GetAtt CodePipelineServiceRoleAiAgent.Arn Stages: - Name: Source Actions: - Name: Source RunOrder: 1 ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: CodeCommit Configuration: RepositoryName: !GetAtt CodeCommitRepoAiAgent.Name BranchName: main PollForSourceChanges: false OutputArtifactFormat: CODEBUILD_CLONE_REF Namespace: SourceVariables OutputArtifacts: - Name: Source - Name: Build Actions: - Name: Build RunOrder: 1 Region: !Sub ${AWS::Region} ActionTypeId: Category: Build Owner: AWS Version: 1 Provider: CodeBuild Configuration: ProjectName: !Ref CodeBuildProjectAiAgent BatchEnabled: false EnvironmentVariables: | [ { "name": "IMAGE_TAG", "type": "PLAINTEXT", "value": "#{codepipeline.PipelineExecutionId}" } ] Namespace: BuildVariables InputArtifacts: - Name: Source OutputArtifacts: - Name: Build - Name: Deploy Actions: - ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: 1 Configuration: StackName: !Sub ${SystemName}-${SubName}-agentcore-runtime Capabilities: CAPABILITY_NAMED_IAM RoleArn: !GetAtt CodePipelineDeployCreateUpdateRoleAiAgent.Arn ActionMode: CREATE_UPDATE TemplatePath: Build::cfn_agentcore_runtime.yml ParameterOverrides: !Sub '{"SystemName":"${SystemName}","SubName":"${SubName}","ImageTag":"#{codepipeline.PipelineExecutionId}","ImgRepoName":"${EcrRepositoryAiAgent}"}' InputArtifacts: - Name: Build Name: CreateOrUpdate RoleArn: !GetAtt CodePipelineDeployCreateUpdateActionRoleAiAgent.Arn RunOrder: 1 Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} DependsOn: - CodePipelineServiceRoleAiAgent - CodeBuildProjectAiAgent - CodePipelineDeployCreateUpdateActionRoleAiAgent - EcrRepositoryAiAgent # ------------------------------------------------------------# # CodePipeline Service Role (IAM) # ------------------------------------------------------------# CodePipelineServiceRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub CpServiceRoleAiAgent-${SystemName}-${SubName} Description: This role allows CodePipeline to call each stages. AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - codepipeline.amazonaws.com Action: - sts:AssumeRole Path: / Policies: - PolicyName: !Sub CpServicePolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - "codecommit:CancelUploadArchive" - "codecommit:GetBranch" - "codecommit:GetCommit" - "codecommit:GetRepository" - "codecommit:GetUploadArchiveStatus" - "codecommit:UploadArchive" Resource: !GetAtt CodeCommitRepoAiAgent.Arn - Effect: Allow Action: - "codebuild:BatchGetBuilds" - "codebuild:StartBuild" - "codebuild:BatchGetBuildBatches" - "codebuild:StartBuildBatch" Resource: "*" - Effect: Allow Action: - "cloudwatch:*" - "s3:*" Resource: "*" - Effect: Allow Action: - "lambda:InvokeFunction" - "lambda:ListFunctions" Resource: "*" - Effect: Allow Action: "sts:AssumeRole" Resource: - !GetAtt CodePipelineDeployCreateUpdateActionRoleAiAgent.Arn DependsOn: - CodeCommitRepoAiAgent - CodePipelineDeployCreateUpdateActionRoleAiAgent # ------------------------------------------------------------# # CodePipeline Deploy Create Update Role (IAM) # ------------------------------------------------------------# CodePipelineDeployCreateUpdateRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub CpCrUpdRoleAiAgent-${SystemName}-${SubName} AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: cloudformation.amazonaws.com Version: "2012-10-17" Path: / Policies: - PolicyName: !Sub CpCrUpdPolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Action: "*" Effect: Allow Resource: "*" # ------------------------------------------------------------# # CodePipeline Deploy Create Update Action Role (IAM) # ------------------------------------------------------------# CodePipelineDeployCreateUpdateActionRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub CpCrUpdActionRoleAiAgent-${SystemName}-${SubName} AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: AWS: Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - ":iam::" - Ref: AWS::AccountId - :root Version: "2012-10-17" Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloudFormationFullAccess Policies: - PolicyName: !Sub CpCrUpdPolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Action: iam:PassRole Effect: Allow Resource: !GetAtt CodePipelineDeployCreateUpdateRoleAiAgent.Arn - Action: - s3:GetBucket* - s3:GetObject* - s3:List* Effect: Allow Resource: - !Sub arn:aws:s3:::${S3BucketArtifact} - !Sub arn:aws:s3:::${S3BucketArtifact}/* DependsOn: - CodePipelineDeployCreateUpdateRoleAiAgent - S3BucketArtifact # ------------------------------------------------------------# # EventBridge Rule for Starting CodePipeline # ------------------------------------------------------------# EventBridgeRuleStartCodePipelineAiAgent: Type: AWS::Events::Rule Properties: Name: !Sub ${SystemName}-${SubName}-aiagent-start-codepipeline Description: !Sub This rule starts pptx pdf converter CodePipeline for ${SystemName}-${SubName}. The trigger is the source code change in CodeCommit. EventBusName: !Sub "arn:aws:events:${AWS::Region}:${AWS::AccountId}:event-bus/default" EventPattern: source: - "aws.codecommit" detail-type: - "CodeCommit Repository State Change" resources: - !GetAtt CodeCommitRepoAiAgent.Arn detail: event: - referenceCreated - referenceUpdated referenceType: - branch referenceName: - main RoleArn: !GetAtt EventBridgeRuleStartCpRoleAiAgent.Arn State: ENABLED Targets: - Arn: !Sub "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${CodePipelineAiAgent}" Id: !Sub ${SystemName}-${SubName}-aiagent-start-codepipeline RoleArn: !GetAtt EventBridgeRuleStartCpRoleAiAgent.Arn DependsOn: - EventBridgeRuleStartCpRoleAiAgent # ------------------------------------------------------------# # EventBridge Rule Start CodePipeline Role (IAM) # ------------------------------------------------------------# EventBridgeRuleStartCpRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub EventBridgeStartCpRoleAiAgent-${SystemName}-${SubName} Description: !Sub This role allows EventBridge to start pptx pdf converter CodePipeline for ${SystemName}-${SubName}. AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - events.amazonaws.com Action: - sts:AssumeRole Path: / Policies: - PolicyName: !Sub EventBridgeStartCpPolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - "codepipeline:StartPipelineExecution" Resource: - !Sub "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${CodePipelineAiAgent}" DependsOn: - CodePipelineAiAgent # ------------------------------------------------------------# # CodeBuild Project # ------------------------------------------------------------# CodeBuildProjectAiAgent: Type: AWS::CodeBuild::Project Properties: Name: !Sub ${SystemName}-${SubName}-aiagent Description: !Sub The build project for ${SystemName}-${SubName}-aiagent ResourceAccessRole: !GetAtt CodeBuildResourceAccessRoleAiAgent.Arn ServiceRole: !GetAtt CodeBuildServiceRoleAiAgent.Arn ConcurrentBuildLimit: 1 Visibility: PRIVATE Source: Type: CODEPIPELINE SourceVersion: refs/heads/main Environment: Type: ARM_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: "aws/codebuild/amazonlinux-aarch64-standard:3.0" ImagePullCredentialsType: CODEBUILD PrivilegedMode: true EnvironmentVariables: - Name: AWS_DEFAULT_REGION Type: PLAINTEXT Value: !Sub ${AWS::Region} - Name: AWS_ACCOUNT_ID Type: PLAINTEXT Value: !Sub ${AWS::AccountId} - Name: IMAGE_REPO_NAME Type: PLAINTEXT Value: !Ref EcrRepositoryAiAgent TimeoutInMinutes: 30 QueuedTimeoutInMinutes: 60 Artifacts: Type: CODEPIPELINE Cache: Type: NO_CACHE LogsConfig: CloudWatchLogs: GroupName: !Sub /aws/codebuild/${SystemName}-${SubName}-aiagent Status: ENABLED S3Logs: EncryptionDisabled: true Location: !Sub arn:aws:s3:::${S3BucketLogs}/codebuildBuildlog Status: ENABLED Tags: - Key: Cost Value: !Sub ${SystemName}-${SubName} DependsOn: - EcrRepositoryAiAgent - CodeBuildResourceAccessRoleAiAgent - CodeBuildServiceRoleAiAgent # ------------------------------------------------------------# # CodeBuild Resource Access Role (IAM) # ------------------------------------------------------------# CodeBuildResourceAccessRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub CbResourceAccessRoleAiAgent-${SystemName}-${SubName} Description: This role allows CodeBuild to access CloudWatch Logs and Amazon S3 artifacts for the project's builds. AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - codebuild.amazonaws.com Action: - sts:AssumeRole Path: / Policies: - PolicyName: !Sub CbResourceAccessPolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - "logs:CreateLogGroup" - "logs:CreateLogStream" - "logs:PutLogEvents" Resource: - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${SystemName}-${SubName}-aiagent" - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${SystemName}-${SubName}-aiagent:*" - Effect: Allow Action: - "s3:PutObject" - "s3:GetObject" - "s3:GetObjectVersion" - "s3:GetBucketAcl" - "s3:GetBucketLocation" Resource: - !Sub arn:aws:s3:::${S3BucketLogs} - !Sub arn:aws:s3:::${S3BucketLogs}/* # ------------------------------------------------------------# # CodeBuild Service Role (IAM) # ------------------------------------------------------------# CodeBuildServiceRoleAiAgent: Type: AWS::IAM::Role Properties: RoleName: !Sub CbServiceRoleAiAgent-${SystemName}-${SubName} Description: This role allows CodeBuild to interact with dependant AWS services. AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - codebuild.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser Policies: - PolicyName: !Sub CbServicePolicyAiAgent-${SystemName}-${SubName} PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - "codecommit:GitPull" Resource: !GetAtt CodeCommitRepoAiAgent.Arn - Effect: Allow Action: - "ssm:GetParameters" Resource: - !Sub "arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${SystemName}_${SubName}_*" - Effect: Allow Action: - "s3:*" Resource: - !Sub arn:aws:s3:::${S3BucketArtifact} - !Sub arn:aws:s3:::${S3BucketArtifact}/* - !Sub arn:aws:s3:::${S3BucketLogs} - !Sub arn:aws:s3:::${S3BucketLogs}/* - Effect: Allow Action: - "logs:CreateLogGroup" - "logs:CreateLogStream" - "logs:PutLogEvents" Resource: - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${SystemName}-${SubName}-aiagent" - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/${SystemName}-${SubName}-aiagent:*" - Effect: Allow Action: - "codebuild:CreateReportGroup" - "codebuild:CreateReport" - "codebuild:UpdateReport" - "codebuild:BatchPutTestCases" - "codebuild:BatchPutCodeCoverages" Resource: - !Sub "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:report-group/${SystemName}-${SubName}-aiagent*" DependsOn: - CodeCommitRepoAiAgent - S3BucketArtifact - S3BucketLogs ãŸãšã ãããã§ããã§ããããïŒ ãšãããã Amazon Bedrock AgentCore Runtime ããããã€ããããšãããŸã§äœããŸããããã®åŸã¯ React ã¢ããªç»é¢ã§ãšãŒãžã§ã³ããšã¹ããªãŒã ã¬ã¹ãã³ã¹ã®äŒè©±ãã§ãããšãããŸã§ãã¡ããšäœã蟌ãããšæããŸãã æ¬èšäºãçæ§ã®ã圹ã«ç«ãŠãã°å¹žãã§ãã
ããã«ã¡ã¯ SCSKã®åºåžã§ãã ä»åã¯ãServiceNowã«ããã䟿å©ãªå°ã¯ã¶ãããã€ã玹ä»ããŠãããŸãã æ¬èšäºã¯å·çæç¹ïŒ2026幎1æïŒã®æ
å ±ã«ãªããŸããææ°ã®å
容ã¯è£œåããã¥ã¡ã³ããåèã«ããŠãã ããã å°ã¯ã¶5éž 1.ãéžæããã¯ã¹ãã«ãã¯ã¢ãããã«ã¿ãã°å€æ°ã§éžæè¢ã«è€æ°ã®ãã£ãŒã«ãã®å€ã衚瀺ããã ãéžæããã¯ã¹ãã«ãã¯ã¢ãããã¿ã€ãã®ã«ã¿ãã°å€æ°ã§ã¯ãéžæè¢ã®å€ã«è€æ°ã®ãã£ãŒã«ãã®å€ã䜿çšã§ããŸãã ã€ã³ã·ãã³ãããŒãã«ãåç
§ãã倿°ã§ãçªå·ãšç°¡åãªèª¬æãéžæè¢ã«è¡šç€ºãããŠã¿ãŸãã ããæ¹ã¯åçŽãã«ãã¯ã¢ããã©ãã«ãã£ãŒã«ãã§ã«ã³ãåºåãã§ãã£ãŒã«ãåãèšå
¥ããã ãã§ãã åå§ååã®ãŠãŒã¶ãŒãååšããéãªã©ã«ãä»ã®ãã£ãŒã«ãã®å€ã§å·®å¥åããŠæ£ããéžæè¢ãéžã°ããããšãåºæ¥ãŸãã 2.ãåç
§ãã«ã¿ãã°å€æ°ã§è€æ°ã®ãã£ãŒã«ãã®å€ã衚瀺ãããã»æ€çŽ¢ãã åæ§ã«ããåç
§ãã¿ã€ãã®ã«ã¿ãã°å€æ°ã§ã倿°ã®å±æ§ã«ä»¥äžã®ãããªå€ãå
¥åãããšãéžæè¢ã«è€æ°ã®ãã£ãŒã«ãã®å€ã衚瀺ã§ããŸãã ref_ac_columns=email;employee_number ãŸããã«ã³ãã§åºåã£ãåŸã«ä»¥äžãæžãå ããŠã¿ããšã衚瀺ã«äœ¿ã£ããã£ãŒã«ãã®å€ã§æ€çŽ¢ããããšãã§ããããã«ãªããŸãã ref_ac_columns_search=true ãã¡ããåå§ååã®ãŠãŒã¶ãŒããããšãçã«åœ¹ç«ã¡ãŸãã ã¡ãªã¿ã«ããéžæããã¯ã¹ãã«ãã¯ã¢ããããšã®å·®å¥åèŠå ãšããŠã¯ãå
éšã®å€ã«ãããŸãã ãéžæããã¯ã¹ãã«ãã¯ã¢ãããã§ã¯ãã«ãã¯ã¢ããå€ãã£ãŒã«ãããšããé
ç®ã§éžæããå€ãå
éšã§æãããŸãã äŸãã°ã€ã³ã·ãã³ãããŒãã«ã®ãçªå·ããã£ãŒã«ãããã«ãã¯ã¢ããå€ãã£ãŒã«ããã«éžæãããšãéžæãããã¬ã³ãŒãã®ãçªå·ããã£ãŒã«ãã®å€ãå
éšçã«ä¿æããŸãã äžæ¹ã§ãåç
§ã®æã¯éžæãããã¬ã³ãŒãã®sysIDãå
éšã®å€ã§ãã ã¹ã¯ãªããã§å©çšããéãªã©ã«éãã®ã§ãå€ãã©ãå©çšããããã§äœ¿ãåãããšãããšæããŸãã 3.ãªã¹ãã®ããã£ã«ã¿ããå³ã¯ãªãã¯ããŠã¯ãšãªãã³ã㌠ãªã¹ãç»é¢ã§ãã£ã«ã¿ãå®è¡ããåŸããã³ãããªã¹ãäžã®ä»»æã®æ¡ä»¶ãå³ã¯ãªãã¯ãããšäžèšã®éžæè¢ã衚瀺ãããŸãã ãã®äžå°Ÿã®[ã¯ãšãªã®ã³ããŒ]ãæŒäžãããšãæå®ããæ¡ä»¶ã§ã®ã¯ãšãªãã¯ãªããããŒãã«ã³ããŒããããšãåºæ¥ãŸãã user_nameLIKEte^email!=NULL ã³ããŒããã¯ãšãªã¯ãã®ãŸãŸã¹ã¯ãªãããªã©ã§å©çšããããšãåºæ¥ãŸãã 4.ãªã¹ãã®ããã£ã«ã¿ãã§äžéã«ããç¹å®ã®æ¡ä»¶ã ããåé€ ãªã¹ãç»é¢ã§ãã£ã«ã¿ãå®è¡ããåŸããã³ãããªã¹ãäžã®æ¡ä»¶ããå€ãããä»»æã®æ¡ä»¶ã®ããå·Šã«ãããïŒãã«ã«ãŒãœã«ãåããããšã[æ¬¡ã®æ¡ä»¶ãåé€]ãšãã衚èšãåºãŠããŸãã ãã®ãŸãŸãïŒããæŒäžãããšãçŽåŸã®æ¡ä»¶ã®ã¿ãåé€ã§ããŸãã ãã¡ãã¡ãã£ã«ã¿ãŒããã¹ãŠéããã«åé€ã§ããã®ã§è¥å¹²ã®æçã«ãªããŸãã 5.ããŒãã«å.~~ å·Šäžã®ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã«ä»¥äžãå
¥åããŠãšã³ã¿ãŒãæŒäžãããšãããããäŸ¿å©æ©èœã䜿ããŸãã ããŒãã«å.config : 該åœããŒãã«ã®ããžãã¹ã«ãŒã«ãéç¥ãã¢ã¯ã»ã¹å¶åŸ¡ãªã©ããŸãšããç»é¢ãéããŸãã ããŒãã«å.list : 該åœããŒãã«ããªã¹ã衚瀺ã ããŒãã«å.form : 該åœããŒãã«ã®æ°èŠã¬ã³ãŒãäœæç»é¢ã ããŒãã«å.do : .formãšåæ§ã®æåã ãªãããããã倧æåã«ãããšæ°èŠã¿ãã§ããŒãžãéããŸãïŒäŸïŒããŒãã«å.CONFIGïŒ ç¹ã«configã¯ãã®ããŒãã«ã«å¯ŸããŠã©ã®ãããªåŠçãå
¥ã£ãŠããããäžèЧã§ç¢ºèªã§ããã®ã§ã䜿ãã©ããã«ãã£ãŠã¯éåžžã«äŸ¿å©ããšæããŸãã configç»é¢ ãŸãšã 以äžãServicenowã§äœ¿ããå°ã¯ã¶ã§ããã ã©ããç§ãæè¿ç¥ã£ããã®ãªã®ã§ãæå€ãšç¥ããã«ããæ¹ãå€ãã®ããªãšæã£ãŠæžããŠã¿ãŸããã æ¯éç¥ããªããã®ãããã°åèã«ããŠã¿ãŠãã ããã
ååã®èšäº ã§ã¯ AWS DRS ã®èšå®ãŸã§ã§ããã®ã§ãä»åã¯ãªã«ããªïŒãã§ã€ã«ãªãŒããŒïŒã宿œããããšæããŸãã ãªã«ããªïŒãã§ã€ã«ãªãŒããŒïŒ ãªã«ããªåæºå ã©ã®ããããªã¢ã«ã¿ã€ã ã§åŸ©æ§ã§ããã®ã確èªããããã«ãæ¯ç§æå»ãããã¹ããã¡ã€ã«ã«åºåãããŸããã ãªã«ããªéå§ ããªã«ããªãžã§ããéå§ããŒããªã«ããªãéå§ããæŒäžããŸãã â»ãªã«ããªãšãªã«ããªããªã«ã®æåã«éãã¯ãããŸãããããªã«ããªãžã§ãã®å±¥æŽã«ãã®ãžã§ããããªã«ã§ãã£ãããªã«ããªã§ãã£ãããèšé²ãããŸããèšç·Ž (ããªã«) ç®çã§ãã£ãã®ãå®éã®ãªã«ããªã宿œããã®ããåºå¥ããã®ã«åœ¹ç«ã¡ãŸãã 埩æ§ãã€ã³ããéžæããŸãã ä»åã¯ææ°ã®ããŒã¿ãéžæããŸããã ãªã«ããªãžã§ããéå§ããããšãAWS Elastic Disaster Conversion ServerããšãããµãŒããèµ·åããŸããã Conversion Server ã¯ãAWS Elastic Disaster Recovery ã«ãããŠããã§ã€ã«ãªãŒããŒæã«ã¬ããªã±ãŒããããããŒã¿ã EC2 ãšããŠèµ·åå¯èœãªåœ¢ã«å€æããããã®äžæçãªãµãŒãã®ããã§ããéåžžæã¯èµ·åããŠãããããã§ã€ã«ãªãŒããŒæã®ã¿èªåçã«èµ·åã»åæ¢ãããŸãã ãAWS Elastic Disaster Conversion Serverãã®åæ¢åŸããªã«ããªã€ã³ã¹ã¿ã³ã¹ãèµ·åããŠããŸããã ãžã§ãã®å®è¡å±¥æŽã確èªãããš20åã»ã©ã§åŸ©æ§ã§ããããã§ãã 埩æ§ãããªã«ããªã€ã³ã¹ã¿ã³ã¹ã¯DRSã³ã³ãœãŒã«ããã確èªã§ããŸãã ãªã«ããªã€ã³ã¹ã¿ã³ã¹ã®ç¢ºèª 埩æ§ããã€ã³ã¹ã¿ã³ã¹ã®ç¶æ
ã確èªããŸãã ãã¹ãåãšãã©ã€ããŒãIPã¢ãã¬ã¹ã¯åŸ©æ§ååŸã§å€ãããŸããã§ããã ã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã¯èµ·åèšå®ã§ãã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã®é©åãªãµã€ãžã³ã°ããæå®ããŠãããããèªåçã«å²ãåœãŠãããŸããã âãœãŒã¹ã€ã³ã¹ã¿ã³ã¹ïŒåŸ©æ§åïŒãããããããããâãªã«ããªã€ã³ã¹ã¿ã³ã¹ïŒåŸ©æ§åŸïŒ æ¬¡ã«æåŸã«åºåãããæå»ã確èªããŸãã ãªã«ããªãžã§ããéå§ããŠãã2ç§åŸã®æå»ãŸã§æžã蟌ãŸããŠããŸãã ã»ãŒã»ãŒãªã¢ã«ã¿ã€ã ã§åŸ©æ§ããããšãã§ããŸããã å®éã®é害æã«ã¯é害çºçããåã®ãã€ã³ãæå®ããããšã«ãªããŸããã éæãããRPOãååšããå Žåã¯ãç°å¢èŠå ã«ããå€åããã®ã§äºåæ€èšŒãããããããŸãã ãã§ã€ã«ããã¯æ€èšŒ ã§ã¯ãç¶ããŠãã§ã€ã«ããã¯ãæ€èšŒããŠã¿ãããšæããŸãã ä»åºŠã¯ãªã«ããªã€ã³ã¹ã¿ã³ã¹ãèµ·ç¹ã«æ±äº¬ãªãŒãžã§ã³ã«åããŠããªããŒã¹ã¬ããªã±ãŒã·ã§ã³ã宿œããŠãããŸãã DRå
ãªãŒãžã§ã³ïŒä»åã¯ããŒãžãã¢ïŒã®DRSã³ã³ãœãŒã«ãããªã«ããªã€ã³ã¹ã¿ã³ã¹ãéžæããããªããŒã¹ã¬ããªã±ãŒã·ã§ã³ãéå§ããã¯ãªãã¯ããŸãã ããŒãžãã¢ãªãŒãžã§ã³ã®DRSã³ã³ãœãŒã«ã確èªãããšãæ±äº¬ãªãŒãžã§ã³ãžã®ã¬ããªã±ãŒã·ã§ã³ãéå§ãããŸããã æ±äº¬ãªãŒãžã§ã³ã®DRSã³ã³ãœãŒã«ã確èªãããšãæ°ãããœãŒã¹ãµãŒããç»é²ãããŸããã ããã¯ãã«ã³ããŒãšãªããããå®äºãŸã§1æéåã»ã©ããããŸããã ããŒã¿éããããã¯ãŒã¯åž¯åã«ããã®ã§ãå®éã«æ¬çªã®ãã§ã€ã«ããã¯æã¯èæ
®ãå¿
èŠã§ãã ãœãŒã¹ãµãŒãã®ç»é²ãå®äºãããããªã«ããªãžã§ããå®è¡ããã°ãµãŒã埩æ§ã§ããŸãã ãã以éã®æµãã¯ãã§ã€ã«ãªãŒããŒã®æãšåæ§ã®ããã岿ããŸãã ãŸãšã AWS Elastic Disaster RecoveryïŒDRSïŒã®æäœã¯ãã»ãŒãã¹ãŠAWSãããžã¡ã³ãã³ã³ãœãŒã«äžã§å®çµããŠãããå°éçãªæäœæ¥ãæ±ããããå Žé¢ã¯å€ããããŸãããèšå®é
ç®ãæŽçãããŠãããåèŠã§ãçè§£ããããæ§æãšãªã£ãŠããç¹ãå°è±¡çã§ããã ãã§ã€ã«ãªãŒããŒæäœã¯æ°ã¯ãªãã¯ã§å®è¡ã§ããããããããã¹ããã§ã€ã«ãªãŒããŒã宿œããããšã§ãæ¬çªéå®³ãæ³å®ããäºåæ€èšŒã容æã«è¡ããŸããå®éã®åæ¿æé ãäºåã«ç¢ºèªã§ãããããé害çºçæã«ãèœã¡çããŠå¯Ÿå¿ã§ããéçšäœå¶ãæ§ç¯ãããããšæããŸããã ãŸããDRå°çšã®ãµãŒããå€éšè£œåãåžžæçšæããå¿
èŠããªããè€éãªã¹ã¯ãªãããèªåååŠçãäºåã«çµã¿èŸŒãããšãªãDRç°å¢ãæ§ç¯ã§ããç¹ã倧ããªå©ç¹ã§ãããã®çµæãéçšæ
åœè
ã«æ±ããããã¹ãã«ãç¿çã³ã¹ããæããããšãã§ããå±äººåãã«ããéçšãå®çŸã§ããŸãã ãããã®ç¹ãããAWS DRS 㯠ãDR ãå°å
¥ãããããéçšè² è·ãè€éãã¯ã§ããã ãæãããã ãšããã±ãŒã¹ã«ãããŠãéåžžã«æå¹ãªéžæè¢ã§ãããšæããŸããã
ããã«ã¡ã¯ãSCSKã®éœè€ã§ãã æ¬èšäºã§ã¯ãAWSã®ãã©ã¡ãŒã¿ã·ãŒãäœæãèªååããããŒã«ã® ããã¯ãšã³ãå®è£
ïŒPythonïŒ ã«ã€ããŠè§£èª¬ããŸãã ïŒïŒã¯ããã« æ¬ã¢ããªã®å
šäœåãèŠä»¶å®çŸ©ã«ã€ããŠã¯ããã§ã«ä»¥äžã®èšäºã§ç޹ä»ãããŠããŸãã ã¢ããªæŠèŠç·š – ããŒã«ã®å
šäœåãšç®ç èŠä»¶å®çŸ©ç·š – åAWSãªãœãŒã¹ã®ååŸã³ãã³ããšã·ãŒãåå²ã«ãŒã« ãã¢ããªæŠèŠç·šãã§ãè§ŠããããŠããéããAWSã®èšèšæžããã©ã¡ãŒã¿ã·ãŒããæäœæ¥ã§Excelã«ãŸãšããäœæ¥ã¯ãéåžžã«æéãããããã¹ãèµ·ããããå·¥çšã§ãã ããã§ç§ãã¡ã¯ã AWS CLIã®å®è¡çµæãExcelã«èªå倿ããããŒã« ãéçºããŸããã æ¬èšäºã§ã¯ããã®ããŒã«ã®å¿èéšãšãªã Pythonã«ããããã¯ãšã³ãå®è£
ã«ãã©ãŒã«ã¹ããŠãã©ããã£ãŠããªãœãŒã¹ããšã®ãã©ãã©ãªJSONæ§é ãããçµ±äžãããExcelãã©ãŒããããã«èœãšã蟌ãã ã®ãããã®æè¡çãªè£åŽãã玹ä»ããŸãã ïŒïŒäœã£ããã®ïŒããã¯ãšã³ãïŒ AWSãã©ã¡ãŒã¿ã·ãŒãèªåçæãšã³ãžã³ AWS CLIã§ãªãœãŒã¹æ
å ±ãååŸããExcelãã¡ã€ã«ã«å å·¥ã»åºåããPythonã¢ããªã±ãŒã·ã§ã³ã§ãã ãåŠçãããŒã AWS CLIå®è¡ â JSONååŸ â æ§é è§£æã»æŽåœ¢ â Excelåºå Webããã³ããšã³ãããã®ãªã¯ãšã¹ãïŒãªãœãŒã¹IDçïŒãåãåãã以äžã®åŠçãèªåã§è¡ããŸãã ãªãœãŒã¹å¥åŠç : mapping.yaml ã®èšå®ã«åºã¥ãããªãœãŒã¹ããšã«æé©ãªã³ãã³ããçºè¡ ããŒã¿æŽåœ¢ : ãã¹ããããJSONããŒã¿ãExcelã§èŠããã圢åŒã«å¹³åŠåã»å±é Excelçæ : 衚çŽã»æ¹èšå±¥æŽã»åãªãœãŒã¹ããšã®ã·ãŒããåºå â»ãªããWebç»é¢ïŒããã³ããšã³ãïŒã®å®è£
ã«ã€ããŠã¯ã次åã®èšäºã§è©³ãã解説ãããŸãã ïŒïŒã·ã¹ãã æ§æ éçºæé ã ããã 1ã¶æå ããããããŠäœããŸããã æåã®2é±éã¯åºæ¬çãªæ©èœãäœã£ãŠãæ®ãã®æéã§ãªãã¡ã¯ã¿ãªã³ã°ãæ©èœè¿œå ãããŠãã£ãæãã§ããæ¬æ¥ã®åéã«å°ããã€é²ããŠããã®ã§ãå®éã®äœæ¥æéãšããŠã¯ 30ïœ40æé ãããã ãšæããŸãã éçºç°å¢ ãã·ã³ : Ubuntu (WSL2) ãšãã£ã¿ : VS Code + AI èšèª : Python 3.12 ããã±ãŒãžç®¡ç : uv VS Codeã®AIã³ãŒãè£å®ã«ã¯æ¬åœã«å©ããããŸããããããããåŠçãæžãããããšæã£ããšãã«ãã³ã¡ã³ããæžãã ãã§ã³ãŒããææ¡ããŠãããã®ã§ãPythonåå¿è
ã®ç§ã§ããªããšãæžãé²ããããšãã§ããŸããã å
šäœã®æµã main.pyïŒãšã³ããªãŒãã€ã³ãïŒ Step 1: AWS CLIå®è¡ â Step 2: JSONåé â Step 3: Excelçæ ãã£ã¬ã¯ããªæ§æ generate_parameter_sheet/ âââ config/ â âââ mapping.yaml # â ããã§ååŸãããªãœãŒã¹ãå®çŸ© â âââ request.json # â ååŸå¯Ÿè±¡ã®ãªãœãŒã¹ID âââ src/ â âââ main.py # ãšã³ããªãŒãã€ã³ã â âââ aws_executor.py # AWS CLIå®è¡ â âââ data_processor.py # ããŒã¿å€æ â âââ excel_generator.py# Excelçæ â âââ excel_formatter.py# ã¹ã¿ã€ã«é©çš âââ input/ # AWSå®è¡çµæïŒJSONïŒ âââ output/ # åºåExcel ïŒïŒäœ¿çšæè¡ é
ç® æè¡ èšèª Python 3.12 ããã±ãŒãžç®¡ç uv Excelæäœ openpyxl èšå®ãã¡ã€ã« YAML AWSæäœ AWS CLI ãªããã®æ§æã«ããã Python : åŠç¿ã³ã¹ããäœããã©ã€ãã©ãªãè±å¯ããããã§èª¿ã¹ããšæ
å ±ãããããåºãŠãã uv : äŸåé¢ä¿ç®¡çãç°¡åïŒ uv sync äžçºïŒãpipããéããŠæ°æã¡ãã openpyxl : Pythonã§Excelãæ±ãå®çªã©ã€ãã©ãªãããã¥ã¡ã³ããå
å®ããŠãã YAML : èšå®ãã¡ã€ã«ãšããŠèªã¿ããããJSONãã人éã«åªãã æ£çŽãæåã¯ããšããããåãã°ãããããããã®æ°æã¡ã§æè¡éžå®ããŸãããã§ãçµæçã«ããã®æ§æã¯åå¿è
ã«ãæ±ãããããŠæ£è§£ã ã£ããšæããŸãã ïŒïŒå¯Ÿå¿ããŠããAWSãªãœãŒã¹ çŸåšã以äžã®ãªãœãŒã¹ãªã©ã«å¯Ÿå¿ããŠããŸãïŒ EC2 / VPC / ELBv2 / RDS / Route53 / S3 / ACM / CloudWatch ãªã© åãªãœãŒã¹ã§ã©ã®ãããªAWS CLIã³ãã³ãã䜿çšããŠããããã·ãŒããåå²ããããŸãšããããè€æ°ã³ãã³ããçµåããããªã©ã®è©³çްãªèŠä»¶ã«ã€ããŠã¯ã以äžã®èšäºãã芧ãã ããïŒ èŠä»¶å®çŸ©ç·šïŒåAWSãªãœãŒã¹ã®ååŸã«ãŒã«ãšã·ãŒãåå²èšèš åºåäŸ consolidated_aws_resources.xlsx âââ è¡šçŽ âââ æ¹èšå±¥æŽ âââ vpcs # VPCæ
å ± âââ web-server-01 # EC2ïŒTags.NameããïŒ âââ batch-server # EC2ïŒTags.NameããïŒ âââ prod-alb # ELBïŒããŒããã©ã³ãµãŒåããïŒ âââ example.com # Route53ïŒãã¡ã€ã³åããïŒ âââ prod-database # RDSïŒDBã€ã³ã¹ã¿ã³ã¹åããïŒ âââ ... ïŒïŒå·¥å€«ããç¹ æ±çšåãžã®ææŠ ãã®ããŒã«ãäœãäžã§äžçªå€§å€ã ã£ãã®ãã ãªãœãŒã¹ããšã«èŠä»¶ããã©ãã© ã ã£ãããšã§ãã ããªãœãŒã¹ããšã®éãã EC2 : è€æ°ã€ã³ã¹ã¿ã³ã¹ â åã€ã³ã¹ã¿ã³ã¹ããšã«ã·ãŒãåå² VPC : è€æ°VPC â 1ã€ã®ã·ãŒãã«ãŸãšããŠåºå ELB : ALB + ã¿ãŒã²ããã°ã«ãŒã + 屿§ â çµåããŠ1ã·ãŒã RDS : DB + ãµãããã + ãã©ã¡ãŒã¿ â çµåããŠ1ã·ãŒã Route53 : ãã¹ããŸãŒã³ + ã¬ã³ãŒã â çµåããŠ1ã·ãŒã åããAWSãªãœãŒã¹ãExcelã«åºåããããšããåŠçãªã®ã«ã ã·ãŒãåå²ã®åäœãéã ïŒãªãœãŒã¹ããšã«åãã or ãŸãšããïŒ è€æ°ã®AWS CLIã³ãã³ããçµåããå¿
èŠããã ïŒELBãRDSïŒ JSONæ§é ãå
šç¶éã ïŒEC2㯠Reservations[].Instances[] ãRDS㯠DBInstances[] ïŒ ã·ãŒãåã«äœ¿ããã£ãŒã«ããéã ïŒEC2㯠Tags.Name ãRDS㯠DBInstanceIdentifier ïŒ ãããã ãã¹ãŠã³ãŒãã§åå²ãããŠããããã¡ã³ããã³ã¹äžå¯èœ ã«ãªã£ãŠãããšæããŸãã ããã§ã mapping.yaml ãšããèšå®ãã¡ã€ã«ã§ ãã¹ãŠã®éããåžåã§ããèšèš ã«ããŸããã èšå®ãã¡ã€ã«ã«ããå¶åŸ¡ mapping.yaml ã«èšå®ã远å ããã ãã§ãæ°ããAWSãªãœãŒã¹ã«å¯Ÿå¿ã§ããããã«ããŸããã mapping.yamlã®äž»èŠãªãã·ã§ã³ïŒ ãªãã·ã§ã³ 説æ data_structure JSONã®ã©ã®éå±€ããããŒã¿ãæœåºãããïŒäŸïŒ Reservations[].Instances[] ïŒ sheet_name_field ã·ãŒãåãšããŠäœ¿çšãããã£ãŒã«ãïŒäŸïŒ Tags.Name ïŒ merge_subfolder_files ãµããã©ã«ãã®JSONãã¡ã€ã«ãçµåãããã©ãã json_transform æååãã£ãŒã«ããJSONãšããŠããŒã¹ãããªã©ã®å€æåŠç allow_batch è€æ°ãªãœãŒã¹ããŸãšããŠååŸãããã©ãã # äŸïŒRDSã®èšå® rds_db_instances: description: "RDS DBã€ã³ã¹ã¿ã³ã¹æ
å ±ååŸ" allow_batch: false merge_subfolder_files: true sheet_name_field: "DBInstanceIdentifier" # â ã·ãŒãåã«äœ¿ããã£ãŒã«ã commands: - command: "aws rds describe-db-instances --db-instance-identifier {values}" is_main_data: true - command: "aws rds describe-db-subnet-groups ..." merge_into_main: "DBSubnetGroups" ã³ãŒããæžããªããŠããYAMLãç·šéããã ãã§æ¡åŒµã§ãã ã®ããã€ã³ãã§ãã æ°ãããªãœãŒã¹ã远å ãããšãããæ¢åã®èšå®ãã³ããŒããŠå°ãå€ããã ããæåãããã®èšèšã«ããŠããã°ããã£ãã®ã§ãããéäžã§æ°ã¥ããŠãªãã¡ã¯ã¿ãªã³ã°ããŸããã ã·ãŒãåã®èªåæ±ºå® åãªãœãŒã¹ã®ã·ãŒãåããæå³ã®ããååã§èªåèšå®ããããã«ããŸããã ãªãœãŒã¹ ã·ãŒãåã®æ±ºå®æ¹æ³ EC2 Tags.Name ïŒäŸïŒweb-server-01ïŒ ELB LoadBalancerName ïŒäŸïŒprod-albïŒ RDS DBInstanceIdentifier ïŒäŸïŒprod-databaseïŒ Route53 HostedZone.Name ïŒäŸïŒexample.comïŒ ïŒïŒèŠåŽããç¹ JSONã®æ§é ããªãœãŒã¹ããšã«éã EC2㯠Reservations[].Instances[] ãšããæ§é ãRDS㯠DBInstances[] ãšããæ§é …ãšãAWSã®ã¬ã¹ãã³ã¹åœ¢åŒããã©ãã©ã§èŠåŽããŸããã 解決ç: mapping.yaml ã« data_structure ãªãã·ã§ã³ã远å ããèšå®ã§å¯Ÿå¿ã§ããããã«ããŸããã ec2_instances: data_structure: "Reservations[].Instances[]" # â æ§é ãå®çŸ© ãã®ãªãã·ã§ã³ã䜿ã£ãŠãJSONããå¿
èŠãªããŒã¿ãæœåºããåŠçãå®è£
ããŸããïŒ def extract_data_by_structure(json_data, structure): """data_structureèšå®ã«åºã¥ããŠJSONããããŒã¿ãæœåº""" if not structure: return json_data # "Reservations[].Instances[]" ã®ãããªåœ¢åŒãããŒã¹ parts = structure.replace('[]', '').split('.') result = json_data for part in parts: if isinstance(result, list): # ãªã¹ãã®å Žåã¯åèŠçŽ ããæœåº result = [item.get(part, []) for item in result] # ãã¹ããããªã¹ãããã©ããå result = [item for sublist in result for item in (sublist if isinstance(sublist, list) else [sublist])] elif isinstance(result, dict): result = result.get(part, []) return result ããã«ãããã©ããªæ§é ã®JSONã§ãèšå®ãã¡ã€ã«ã«æžãã ãã§å¯Ÿå¿ã§ããããã«ãªããŸããã è€æ°ã³ãã³ãã®çµæãçµåããåŠç RDSã®å ŽåãDBã€ã³ã¹ã¿ã³ã¹æ
å ±ã ãã§ãªãããµããããã°ã«ãŒãããã©ã¡ãŒã¿ã°ã«ãŒãã®æ
å ±ãäžç·ã«ååŸããŠçµåããå¿
èŠããããŸããã # mapping.yamlã§ã®èšå®äŸ rds_db_instances: commands: - command: "aws rds describe-db-instances ..." is_main_data: true # ã¡ã€ã³ã®ããŒã¿ - command: "aws rds describe-db-subnet-groups ..." merge_into_main: "DBSubnetGroup" # ã¡ã€ã³ã«çµå - command: "aws rds describe-db-parameter-groups ..." merge_into_main: "DBParameterGroups" # ã¡ã€ã³ã«çµå çµååŠçã®ããžãã¯ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãïŒ def merge_subcommand_results(main_data, sub_data, merge_key): """ãµãã³ãã³ãã®çµæãã¡ã€ã³ããŒã¿ã«çµå""" if isinstance(main_data, dict): main_data[merge_key] = sub_data elif isinstance(main_data, list): # ãªã¹ãã®å Žåã¯åèŠçŽ ã«çµå for item in main_data: if isinstance(item, dict): item[merge_key] = sub_data return main_data Excelã·ãŒãåã®31æåå¶é Excelã®ã·ãŒãåã¯31æåãŸã§ãšããå¶éããããé·ããªãœãŒã¹åãåããŠããŸãåé¡ããããŸããã 解決ç: ã·ãŒãåãèªåã§31æå以å
ã«åãè©°ããåŠçã远å ããŸããããŸãã [] ãªã©Excelã§äœ¿ããªãæåãèªåã§çœ®æããããã«ããŠããŸãã def sanitize_sheet_name(name, max_length=31): """Excelã·ãŒãåãšããŠäœ¿çšã§ãã圢åŒã«å€æ""" # 䜿çšã§ããªãæåã眮æ invalid_chars = ['\\', '/', '*', '?', ':', '[', ']'] for char in invalid_chars: name = name.replace(char, '_') # é·ããå¶é if len(name) > max_length: name = name[:max_length-3] + '...' return name ã·ãŒãåã®åçæ±ºå® EC2㯠Tags.Name ãRDS㯠DBInstanceIdentifier ãšããããã«ããªãœãŒã¹ããšã«ã·ãŒãåãšããŠäœ¿ããããã£ãŒã«ããç°ãªããŸããããã mapping.yaml ã® sheet_name_field ã§æå®ã§ããããã«ããŸããã def get_sheet_name(data, config): """èšå®ã«åºã¥ããŠã·ãŒãåãæ±ºå®""" sheet_name_field = config.get('sheet_name_field') fallback = config.get('sheet_name_fallback', 'unknown') if not sheet_name_field: return fallback # ãã¹ããããã£ãŒã«ãã«ã察å¿ïŒäŸïŒTags.NameïŒ value = data for key in sheet_name_field.split('.'): if isinstance(value, dict): value = value.get(key) elif isinstance(value, list): # Tagsé
åããç¹å®ã®Keyãæ¢ãå Žå for item in value: if item.get('Key') == key: value = item.get('Value') break else: break return sanitize_sheet_name(str(value)) if value else fallback ïŒïŒåŠãã ããš ããã°ã©ãã³ã°ã¯ãåé¡è§£æ±ºã®ææ®µã æåã¯ãPythonãå匷ãããããšæã£ãŠããŸããããå®éã«äœã£ãŠã¿ããš ããã®åé¡ã解決ããããâããã®ããã«ã¯ããæžãã°ããã ãšããæµãã§åŠç¿ãé²ã¿ãŸããã ç®çããããšãåŠç¿å¹çãå
šç¶éããŸããããPythonå
¥éãã¿ãããªæ¬ãèªããããå®éã«äœãäœããªããåŠã¶æ¹ãé ã«å
¥ã£ãŠããæ°ãããŸãã èšèšã®éèŠæ§ æåã¯å Žåœããçã«ã³ãŒããæžããŠããŸããããéäžã§ãããããæ¡åŒµã§ããªã…ããšæ°ã¥ããèšå®ãã¡ã€ã«ïŒYAMLïŒã§å¶åŸ¡ãã圢ã«ãªãã¡ã¯ã¿ãªã³ã°ããŸããã æåããã¡ãããšèšèšããŠããã°… ãšããåçããããŸãã å®éãåŸåã¯ãæ°ããAWSãªãœãŒã¹ã远å ãããããšãªã£ããšãã«ãYAMLã«æ°è¡è¿œå ããã ãã§å¯Ÿå¿ã§ããããã«ãªããŸãããæåãããã®èšèšã«ããŠããã°ãéçºæéã¯ãã£ãšçããªã£ããšæããŸãã å°ããå§ããŠãå°ããã€è²ãŠã æåããå®ç§ãªãã®ãäœãããšãããšããã¶ãæ«æããŠããŸããã ãŸã㯠ãEC2ã®æ
å ±ãExcelã«åºåããã ã ãã®ç°¡åãªãã®ãäœã£ãŠãåãããšã確èªããŠãããå°ããã€æ©èœã远å ããŠãããŸããã Step 1: EC2ã ãå¯Ÿå¿ Step 2: VPCã远å Step 3: ELBã远å ïŒè€æ°ã³ãã³ãã®çµåãå¿
èŠïŒ Step 4: RDSã远å ïŒåçãµãã¯ãšãªãå¿
èŠïŒ Step 5: ãªãã¡ã¯ã¿ãªã³ã°ïŒèšå®é§ååã«ïŒ ãã®ãå°ããäœã£ãŠãè²ãŠããã¢ãããŒãã¯ãããã°ã©ãã³ã°åå¿è
ã«ã¯ç¹ã«ããããã§ãã AIã®æŽ»çš æ£çŽããã®ããŒã«ã¯AIã®å©ãããªããã°å®æããªãã£ããšæããŸãã ãšã©ãŒã¡ãã»ãŒãžã®æå³ãæããŠããã ãããããããšããããããšäŒãããšå®è£
æ¹æ³ãææ¡ããŠããã ã³ãŒãã¬ãã¥ãŒãããŠããã ããã£ãšã·ã³ãã«ã«æžããªãïŒããšèããšãªãã¡ã¯ã¿ãªã³ã°æ¡ãåºããŠããã ããã°ã©ãã³ã°çµéšãæµ
ããŠãAIãæŽ»çšããã°ããããŸã§äœããæä»£ã«ãªã£ããã 㪠ãšå®æããŸããã ç¹ã«ããšã©ãŒãåºããšãã«ããã®ãšã©ãŒã¯äœïŒããšèããšãåå ãšè§£æ±ºçãæããŠãããã®ãæ¬åœã«å©ãããŸããã以åãªãæ°æéãããŠã°ã°ã£ãŠãããããªåé¡ããæ°åã§è§£æ±ºã§ããããã«ãªããŸããã ïŒïŒããã³ããšã³ããšã®é£æº ãã®ããã¯ãšã³ãããŒã«ã¯ã Webããã³ããšã³ããšé£æº ããŠåäœããŸãã ãŠãŒã¶ãŒãWebç»é¢ã§ååŸããããªãœãŒã¹ãéžæãããšãããã³ããšã³ãããããã¯ãšã³ãã«ãªãœãŒã¹IDãªã©ã®ãã©ã¡ãŒã¿ãæž¡ããããã®PythonããŒã«ãå®è¡ãããä»çµã¿ã«ãªã£ãŠããŸãã ãWebããã³ãã â ãããã¯ãšã³ãïŒæ¬èšäºïŒã â ãExcelåºåã ãªãœãŒã¹éžæã»å®è¡ãã¿ã³ ãã©ã¡ãŒã¿åä¿¡ã»Pythonå®è¡ Excelçæã»ããŠã³ããŒã é¢é£èšäº ã¢ããªæŠèŠç·š – ããŒã«ã®å
šäœåãšç®ç èŠä»¶å®çŸ©ç·š – åAWSãªãœãŒã¹ã®ååŸã«ãŒã« ããã³ããšã³ãç·š – Webç»é¢ã®å®è£
ïŒïŒïŒä»åŸããããããš ããå€ãã®AWSãªãœãŒã¹ã«å¯Ÿå¿ïŒLambdaãDynamoDBãCloudFrontãªã©ïŒ èšå®å€ã®å·®åæ¯èŒæ©èœïŒååãšã®å€æŽç¹ãå¯èŠåïŒ ãã©ã¡ãŒã¿ã·ãŒãããAWSãªãœãŒã¹ãäœæããéæ¹åã®æ©èœ Terraformãšã®é£æº æ¥æ¬èªå¯Ÿå¿ïŒãã©ã¡ãŒã¿ãŒåãªã©ïŒ èŠèŠçã«ããã«èŠãããïŒçœ«ç·ããã©ãŒãããã®æ¹åïŒ ïŒïŒïŒãŸãšã ããã°ã©ãã³ã°çµéšãæµ
ãç§ã§ããçŽ1ã¶æåãã㊠å®çšçãªããŒã« ãäœãããšãã§ããŸããã æ°åã§èŠã广 é
ç® BeforeïŒæäœæ¥ïŒ AfterïŒèªååïŒ äœæ¥æé 2ã3æé 20ã30ç§ ã³ãããã¹ çºçãã ãªã èšå®å€æŽæ æåæŽæ° åå®è¡ããã ã æåŸã« ãé¢åã ãªããšæã£ãããšãèªååã§ãããšãæ¬åœã«æ°æã¡ããã§ãã ãããŠãäžåºŠäœã£ãŠããŸãã° äœåºŠã§ã䜿ãåãã ã®ãããã°ã©ãã³ã°ã®è¯ããšãããæåã¯å€§å€ã§ããããä»ã§ã¯ãäœã£ãŠããã£ãããšå¿ããæããŸãã ããã°ã©ãã³ã°ã«èªä¿¡ããªãæ¹ã§ãã ã解決ããã課é¡ã ãããã°ããã²ãã£ã¬ã³ãžããŠã¿ãŠãã ããïŒAIãæŽ»çšããã°ãæ³å以äžã«ãããããªããšãã§ããŸããã åè openpyxlå
¬åŒããã¥ã¡ã³ã AWS CLI ã³ãã³ããªãã¡ã¬ã³ã¹ uv – Python ããã±ãŒãžãããŒãžã£ãŒ 次åã¯ã å è€ãã ã«ãããããã³ããšã³ãç·šãã®èšäºã§ããWebç»é¢ã®å®è£
ã«ã€ããŠè©³ãã玹ä»ãããäºå®ã§ãã®ã§ããã²ã楜ãã¿ã«ïŒ
ããã«ã¡ã¯ãSCSKã®äºäžã§ãã ãã®èšäºã§ã¯ãNew Relicã®InfrastructureãšãŒãžã§ã³ãã®å°å
¥æ¹æ³ã«ã€ããŠè§£èª¬ããŸããæé ã説æããåã«ããŸãInfrastructureãšãŒãžã§ã³ããå°å
¥ãããšäœãã§ããã®ãããªãœãŒã¹æ¶è²»ã¯å¢ããªãã®ããªã©ãããããçåã«è§ŠããŠããŸãã®ã§ãçè§£ãæ·±ããŠããå®éã®æé ã«æãã§ãããŸãã ã¯ããã« New Relic Infrastructureã¯ããªã³ãã¬ãã¹ãµãŒããã¯ã©ãŠãç°å¢ã®åºç€ã芳枬ããããã®æ©èœãæäŸ ããŸãããã®æ©èœã«ãããCPUãã¡ã¢ãªããã£ã¹ã¯I/Oããããã¯ãŒã¯ãããã»ã¹ãªã©ã®ãªãœãŒã¹ããªã¢ã«ã¿ã€ã ã§å¯èŠåã§ããŸããããŒããŠã§ã¢ã®æ§èœãèŠããåããããšã§ãã€ã³ãã©ã«é¢ããåé¡ãè¿
éã«çºèŠãã察å¿ããããšãå¯èœã§ãã å©çšã«ã¯ã芳枬察象ã®ãµãŒãã« New Relic Infrastructure ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããå¿
èŠ ããããŸãããšãŒãžã§ã³ãã¯åžžé§ããã»ã¹ãšããŠã·ã¹ãã 芳枬ã«å¿
èŠãšãªããã¬ã¡ããªããŒã¿ãåéããNew Relicãã©ãããã©ãŒã ãžéä¿¡ããŸãããšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããã ãã§ã¯ãNew Relicãžãã°ã¯è»¢éãããŸããããã°ã New Relic ã«éçŽããããšã§ãåãµãŒããŒã«ãã°ã€ã³ããã«äžå
管çãå¯èœã«ãªããŸããããã«ãããé害調æ»ã®è¿
éåãããµãŒããŒãã°èª¿æ»ã®å±äººåè§£æ¶ãªã©ãéçšå¹çãåäžãå·¥æ°åæžã«ã€ãªãããŸãããã®èšäºã§ã¯å°å
¥ã«å¿
èŠãªæé ã解説ããŠãããŸãã Infrastructureã¢ãã¿ãªã³ã°ã®æŠèŠ | New Relic Documentation New Relic provides flexible, dynamic monitoring of your entire infrastructure. Learn about features, installation, and u... docs.newrelic.com äºåæºå ãã§ã«New Relicã¢ã«ãŠã³ããã©ã€ã»ã³ã¹ããŒããŠãŒã¶ãŒããŒããã§ã«çºè¡æžã®åæã§èšèŒããŠããŸããçºè¡ã®æé ã«ã€ããŠã¯ãéå»ã®èšäºããåèããã ããŸããšå¹žãã§ãããã®èšäºã§ã®å°å
¥å¯Ÿè±¡ã¯amazon linux2023ãšããŠããŸãã ãNew RelicãNew Relicã§ãŠãŒã¶ãŒãäœæããæ¹æ³ ãã®èšäºã§ã¯ãNew Relicã®ãŠãŒã¶ãŒäœæéçšã«ãããŠæåãŠãŒã¶ãŒãšç¡åãŠãŒã¶ãŒã®éããã«ã¹ã¿ã ããŒã«ã®äœææ¹æ³ã«ã€ããŠã解説ããŸãã blog.usize-tech.com 2025.12.04 ãNew RelicããšãŒãžã§ã³ãå°å
¥åã«ç¥ã£ãŠããã¹ãèšå®éµã®çš®é¡ãšåœ¹å² New Relicãå°å
¥ããéã«ã¯ãããã€ãã®éµãæ£ããèšå®ããå¿
èŠããããŸãããã®èšäºã§ã¯ãã©ã€ã»ã³ã¹ããŒãšãŠãŒã¶ãŒããŒã®æŠèŠãçšéãçºè¡æé ããããŠã»ãã¥ãªãã£ã確ä¿ããç®¡çæ¹æ³ãçè§£ããããã®åèã«ãªãã°å¹žãã§ãã blog.usize-tech.com 2025.12.10 ãšãŒãžã§ã³ãã®åäœç°å¢ New Relic Infrastructure ãšãŒãžã§ã³ããå°å
¥ã«ãããã·ã¹ãã èŠä»¶ããããŸããäžèšã¯ãå·çåœæã®ãã®ã«ãªããŸãã®ã§ãææ°çã¯äžéšã®å
¬åŒãµã€ããã確èªãã ããã ã«ããŽãª 詳现 察å¿ã¢ãŒããã¯ãã£ ææ°æ
å ±ã¯äžèšãå
¬åŒãµã€ãããåç
§ãã ããã 察å¿OSïŒLinux/Windows/macOSïŒ ææ°æ
å ±ã¯äžèšãå
¬åŒãµã€ãããåç
§ãã ããã æš©é Linux ïŒrootæšå¥š WindowsïŒAdministratorå¿
é ãã¹ãåèŠä»¶ åºæã§ããããšïŒlocalhostäžå¯ïŒ ãããã¯ãŒã¯èŠä»¶ New Relicãžã®ã¢ãŠãããŠã³ãããŒã¿éä¿¡ã«HTTPSïŒ443ïŒã䜿çšãåä¿¡ããŒãã¯éãå¿
èŠç¡ãã TLS1.2以äžã®éä¿¡ ã³ã³ããå¯Ÿå¿ Kubernetes/ECS/EKS察å¿ãææ°æ
å ±ã¯äžèšãå
¬åŒãµã€ãããåç
§ãã ããã èšå®ç®¡çããŒã« AnsibleãChefãPuppetãElastic Beanstalkå¯Ÿå¿ ãªãœãŒã¹æ¶è²» 軜éïŒè©³çްã¯ãæ¬¡ç« ã«èšèŒïŒ infrastructureãšãŒãžã§ã³ãã®äºææ§ãšèŠä»¶ | New Relic Documentation Compatibility information for infrastructure monitoring, including supported Linux and Windows versions. docs.newrelic.com ãã¡ã€ã¢ãŠã©ãŒã«ãã»ãã¥ãªãã£ããªã·ãŒã§å€éšãšã®éä¿¡å¶éããããŠããå Žåã¯ãNew RelicãšãŒãžã§ã³ããããŒã¿éä¿¡ã§ããããã«ãã¡ã€ã³ããšã³ããã€ã³ãã远å ããå¿
èŠããããŸãã New Relicãããã¯ãŒã¯ãã©ãã£ã㯠| New Relic Documentation Network connections used by New Relic for sending and receiving data: IP addresses, domains, ports, endpoints. docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãå°å
¥ã«ãããªãœãŒã¹æ¶è²»ãç¥ã New Relic Infrastructure ãšãŒãžã§ã³ããå
¥ãããšãã·ã¹ãã è² è·ãå¢ããããšãäºæ³ãããŸãã以äžãNew Relicãå
¬éããŠããæ
å ±ã§ãããšãŒãžã§ã³ãèªäœã¯è»œéã§ãããç£èŠå¯Ÿè±¡ãå¢ãããšåéã»åŠçã®ããã®ãªãœãŒã¹ãæ¯äŸããŠå¢ããŸãã®ã§ã ãŸãã¯ãã¹ãç°å¢çã«å°å
¥ããŠæ§åãèŠã ã»ããè¯ãã§ããã ãã¹ãã¿ã€ã ããŒã¹ç°å¢ CPU䜿çšç ä»®æ³ã¡ã¢ãª åžžé§ã¡ã¢ãª ãã£ã¹ã¯äœ¿çšé Linuxã·ã³ã°ã«ã¿ã¹ã¯ EC2 çŽ0.3% çŽ1GB çŽ25ïœ35MB çŽ50MB Linux Docker EC2 (CentOS7, 25ã³ã³ãã/100ããã»ã¹) çŽ0.8% çŽ1GB çŽ25ïœ35MB çŽ50MB ã€ã³ãã©ãšãŒãžã§ã³ãã®ãªãŒããŒããã | New Relic Documentation The New Relic infrastructure agent is designed to minimize its performance impact. This document outlines resource usage... docs.newrelic.com InfrastructureãšãŒãžã§ã³ããå°å
¥ããããšã§äœãã§ããã®ïŒ Infrastructure ãšãŒãžã§ã³ããå°å
¥ããããšã§ããµãŒãã®è² è·ãç°åžžãªããã»ã¹ã®æ€åºããªãœãŒã¹ã®é害æ€ç¥ã»ã¢ã©ãŒããéç¥ãæ°ããã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ã®ãããã€åŸã«ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å¥å
šæ§ã確èªãããªãœãŒã¹é«éš°çã®åé¡ããªããããã§ãã¯ããããšãã§ããŸãã ã©ããªããŒã¿ãåéãããã®ïŒ å®éã«ã©ããªããŒã¿ãã©ããããã®ééã§åéãããã®ããäžèšã«æŽçããŸãããåéééã¯ããã©ã«ãå€ã®ãããèšå®ãã¡ã€ã«ã«ãŠå€æŽããããšã¯ã§ããŸããååãSampleãšã€ããŠããã®ã¯ãäžå®ééã§ååŸãããµã³ãã«å€ã衚ãããã«ãªããŸããNew relicã§ã¯å°å
¥ãããŠããã·ã¹ãã ãžã®è² è·ãæãããããäŸãã°5ç§ããšã«CPU䜿çšçã®ããŒã¿ãååŸããå Žåããã®5ç§éç®ã®å€ããµã³ãã«ãšããŠä¿åããŠããŸãã ã€ãã³ãå 説æ åç
§ SystemSample CPUãã¡ã¢ãªããã£ã¹ã¯ããããã¯ãŒã¯ãªã©ããµãŒããŒå
šäœã®ç¶æ
ã5ç§ããšã«èšé² New Relic data dictionary | New Relic Documentation ProcessSample åã¢ã¯ãã£ãããã»ã¹ã«é¢ããŠã20ç§ããšã«èšé² New Relic data dictionary | New Relic Documentation StorageSample ããŠã³ããããåäžã®ã¹ãã¬ãŒãžããã€ã¹ã20ç§ããšã«èšé² New Relic data dictionary | New Relic Documentation NetworkSample ãããã¯ãŒã¯ããã€ã¹ã®ã€ã³ã¿ãã§ãŒã¹ããã³ã¢ãã¬ã¹æ
å ±ã䜿çšéããŒã¿ã10ç§ããšã«èšé² New Relic data dictionary | New Relic Documentation ContainerSample åDockerã³ã³ããã®IDãååãã€ã¡ãŒãžãã€ã¡ãŒãžåããŸãCPUãã¡ã¢ãªããããã¯ãŒã¯ã«é¢ããããŒã¿ã15ç§ããšã«èšé² New Relic data dictionary | New Relic Documentation InfrastructureEvent æ§ææ
å ±ãŸãã¯ã·ã¹ãã ç¶æ
ã远å /åé€/倿Žããããšããã®ã¢ã¯ãã£ããã£çºçæã«èšé² New Relic data dictionary | New Relic Documentation äžèšã®ããŒã¿ä»¥å€ã«ãã€ã³ãã©åºç€ããåºåããããã°ãNew Relicã«éãããšãã§ããŸãããã ãã ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããã ãã§ã¯ããã°ã¯è»¢éãããŸãã ã®ã§ãæç€ºçã«ã©ã®ãã°ã転éãããããèšå®ãã¡ã€ã«ã«èšèŒããå¿
èŠããããŸãã ããã©ã«ãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ãã¿ãªã³ã°ããŒã¿ | New Relic Documentation A list of the default events and attributes used by New Relic to collect and store your infrastructure monitoring and ho... docs.newrelic.com ããŒã¿(ãã°)éä¿¡ã®ä»çµã¿ Infrastructure ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«åŸãInfrastructure ãšãŒãžã§ã³ãã¯ã/etc/newrelic-infra/logging.d/ ã«é
眮ããã yml ãã¡ã€ã«ã Fluent Bit ã®èšå®ã«å€æããFluent Bit ããã°ã®éä¿¡ã宿œããŸãããã®ãããInfrastructure ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããéã«ãFluent-bitã®ããã»ã¹ãåžžé§ããŸãã転éçµè·¯ã¯TLSã§æå·åãããŠããããã°ã¯New Relicã®ãã°ãšã³ããã€ã³ãã«éä¿¡ãããåŸãä¿åæã«ãæå·åãããŸããããã«ããããã°ããŒã¿ã¯éä¿¡äžãä¿åäžãå®å
šã«ä¿è·ãããŸãããã°è»¢éã«ã€ããŠã¯ãFluent-bit以å€ã«ã察å¿ããŠããŸããã¡ããªã¯ã¹ããŒã¿ã«ã€ããŠã¯ããšãŒãžã§ã³ãããçŽæ¥New Relicã®ãã©ãããã©ãŒã ã«éä¿¡ããŠããŸãã ãã°ãNew Relicãžéä¿¡ããåã«ãã°ã«å人æ
å ±ãèªèšŒã«é¢ããããŒã¿ãåºåãããŠããªããã確èªããå¿
èŠããããŸããNew Relicã®ãã©ãããã©ãŒã ã¯ããŒã¿è»¢éã¯æå·åãããããŒã¿ä¿åã¯ã»ãã¥ã¢ãªç°å¢ã§ç®¡çãããŠããŸãããå人æ
å ±ãæ©å¯ããŒã¿ã¯New Relicã«éä¿¡ããªããããã°é信察象ãé€å€ãªã©ã®å¯ŸåŠããå¿
èŠããããŸãã New Relicãžã®ãã°è»¢é | New Relic Documentation How to forward your logs into New Relic so you can use enhanced log management capabilities. docs.newrelic.com Data privacy with New Relic | New Relic Documentation Links to detailed information about how New Relic protects you and your customers' data privacy. Also see our security w... docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã« ã€ã³ã¹ããŒã«æé ã«ã¯ã¬ã€ããå©çšããã€ã³ã¹ããŒã«æ¹æ³ãšããã±ãŒãžãæå®ããŠã€ã³ã¹ããŒã«ããæ¹æ³ããããŸãããã®èšäºã§ã¯ã¬ã€ãã«æ²¿ã£ãŠã€ã³ã¹ããŒã«ããŸãã®ã§ãå°å
¥ã«ã€ããŠã®é£æåºŠã¯äœãã§ãã10å-15åçšåºŠã§ã€ã³ã¹ããŒã«ã¯å®äºããŸããã€ã³ã¹ããŒã«åŸã®New Relicã®äœ¿ãæ¹ãèŠæ¹ã«ã€ããŠã¯å¥èšäºã«ãŠè§£èª¬ããŠãããŸãã 1.å·Šäžã®ãIntegrations & Agentsããã¯ãªãã¯ãããGuided installããéžæããŸãã 2.å°å
¥å¯Ÿè±¡ãéžæããŸããããã§ã¯LinuxãäŸã«é²ããŸãã 3.ã Use an existing key ããã¯ãªãã¯ãããŠãŒã¶ãŒããŒãå
¥åããŸããå¿ããå Žåãä¿æããŠããªãå Žåã¯ãCreate a new keyãã¯ãªãã¯åŸã«ãèªåçæãããŸãã 4.ãµãŒããŒã«å®è¡ããã³ãã³ãã衚瀺ãããŸãã®ã§ããCopy to Clipboardããã¯ãªãã¯ããŸãããããã·ãµãŒããŒã䜿ã£ãŠããå Žåã¯ãUse a proxyã®ãã°ã«ãã¯ãªãã¯ããå
¥åããŸããã¿ã°ã«ã€ããŠã¯ãã©ã³ã¯ã§åé¡ãããŸãããäœ¿ãæ¹ã«ã€ããŠã¯å¥éã玹ä»ããŸãã 5.察象ãµãŒãã«ãã°ã€ã³ããé
çª4ã§ã³ããŒããã³ãã³ãã管çè
æš©éã§å®è¡ããŸããå®è¡åŸã以äžã®ãããªç»é¢ã衚瀺ãããŸãã®ã§ã5åçšåºŠåŸ
ã¡ãŸãã 6.以äžã衚瀺ãããŠããããšã確èªããŸãã Infrastructure Agent (installed) Logs Integration (installed) 7.é
çª4ã®ç»é¢ã«ãŠãContinueããã¯ãªãã¯ãããšããšãŒãžã§ã³ããšNew Relicãã©ãããã©ãŒã ãšã®é信確èªãè¡ãããŸããèµ€æ ã®è¡šç€ºãšãªã£ãŠããŠãã°ãåé¡ãããŸããããSee your dataããã¯ãªãã¯ããŸãã 8.ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããµãŒãã®ã¡ããªã¯ã¹æ
å ±ã衚瀺ãããŸããããã§æé ã¯å®äºã§ãã LinuxåãinfrastructureãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãã | New Relic Documentation Instructions for how to install New Relic infrastructure monitoring for Linux systems using a package manager. docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãã®èšå®ãã¡ã€ã« Infrastructure ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«åŸãymlãäœæãããŸãããšãŒãžã§ã³ãã®ãã°åºåã¬ãã«ãªã©ããšãŒãžã§ã³ãã®åäœãå¶åŸ¡ããããèšå®ã¯ymlãã¡ã€ã«ã«èšè¿°ããŸããã ymlèšå®ãã¡ã€ã«ãããç°å¢å€æ°ã®å€ãåªå
ãããŸãã 以äžã¯ãInfrastructure ãšãŒãžã§ã³ãã€ã³ã¹ããŒã«æã«äœæãããŸã(ä»ã«ãããå¯èœæ§ããããŸã)ã ãã¡ã€ã«å åœ¹å² ããã©ã«ããã¹ïŒLinuxïŒ åè newrelic-infra.yml Infrastructure Agent ã®åºæ¬èšå® /etc/newrelic-infra.yml ãšãŒãžã§ã³ãèµ·åæã«èªã¿èŸŒãŸãããèšèŒåŸããšãŒãžã§ã³ãåèµ·åå¿
èŠ logging.yml ãã°è»¢éèšå® /etc/newrelic-infra/logging.d/logging.yml èšèŒåŸããšãŒãžã§ã³ãåèµ·åäžèŠ integrations.d/*.yml åçš®ã€ã³ãã°ã¬ãŒã·ã§ã³èšå® /etc/newrelic-infra/integrations.d/ ãµãŒãã¹ããšã«é
眮 ç®çã«å¿ããŠãèšå®ãã¡ã€ã«ã®ç·šéç®æãå
容ã¯ç°ãªããŸãããã®èšäºã§è§£èª¬ãããã¡ã€ã«ã¯2ã€ã«ãªããŸãã newrelic-infra.ymlïŒNew Relic Infrastructure ãšãŒãžã§ã³ããå¶åŸ¡ããèšå®ãã¡ã€ã« logging.yml :New Relic Infrastructure ãšãŒãžã§ã³ãã§ãã°éä¿¡ãèšå®ããããã®ãã¡ã€ã« ããã©ã«ãã§”newrelic-infra.yml”ã«èšèŒãããŠããå
容 ã¬ã€ãã«åŸã£ãŠã€ã³ã¹ããŒã«ããå Žåã以äžã®å
容ãèšè¿°ãããŠããŸããããããã©ã®ãããªæå³ãæã€ã®ãã説æããŸããããã»ã¹æ
å ±ã®åéã¯Guided installã§ã€ã³ã¹ããŒã«ããå Žåãããã©ã«ãã¯æå¹(true)ã§èµ·åããŠããŸãã èšèŒå ŽæïŒ/etc/newrelic-infra.yml èšå®å€ å
容 enable_process_metrics: true OSäžã§åäœããŠããããã»ã¹ã®CPUãã¡ã¢ãªäœ¿çšéãªã©ã®æ
å ±ãNew Relicã«éä¿¡ status_server_enabled: true HTTPã§èªèº«ã®ãšãŒãžã§ã³ãã®ç¶æ
ãç¢ºèª ã¬ã€ãä»ãã€ã³ã¹ããŒã«ã䜿çšããå Žåãããã©ã«ãã§æå¹ã status_server_port: 18003 äžèšã宿œããããã®ããŒãçªå· license_key: ***** èšèŒããããŒã§çŽã¥ããããŠããã¢ã«ãŠã³ãã«ããŒã¿ãéä¿¡ custom_attributes: nr_deployed_by: newrelic-cli New Relic CLIã䜿ã£ãŠãããã€ãããããšã瀺ãã«ã¹ã¿ã 屿§ CLI ãèªåçã«ä»äžããã¡ã¿æ
å ± newrelic-infra.ymlã®ãã³ãã¬ãŒãã¯ã以äžã§å
¬éãããŠããŸãã infrastructure-agent/assets/examples/infrastructure/newrelic-infra-template.yml.example at master · newrelic/infrastructure-agent · GitHub ãšãŒãžã§ã³ãã®ã¡ããªã¯ã¹ããŒã¿ååŸééã®å€æŽ ãµã³ããªã³ã°é »åºŠãé«ããšãNew Relicãžã®éä¿¡ããŒã¿éãå¢ããã³ã¹ãããããã¯ãŒã¯åž¯åã«åœ±é¿ãäžããå¯èœæ§ããããŸããã¡ããªã¯ã¹ããŒã¿ã®ååŸééã倿Žãããå Žåã以äžã®ãµã³ãã«ã®å€ãèšèŒããããšã§ã倿Žããããšãã§ããŸããèšå®å€æŽåŸã¯ãšãŒãžã§ã³ãã®åèµ·åãå¿
èŠã§ãã èšèŒå ŽæïŒ/etc/newrelic-infra.yml èšå®å€ æå°å€ (åäœ:ç§) metrics_network_sample_rate 10 metrics_process_sample_rate 20 metrics_storage_sample_rate 5 metrics_system_sample_rate 5 ã€ã³ãã©ã¹ãã©ã¯ãã£ãšãŒãžã§ã³ãã®èšå® | New Relic Documentation Configuration settings for the New Relic infrastructure agent, including YAML and environment variable names, value, min... docs.newrelic.com ãšãŒãžã§ã³ããã°ã¬ãã«ã®å€æŽãšãã°ããŒããŒã·ã§ã³ ãšãŒãžã§ã³ããã°ã®ããã©ã«ãã¬ãã«ã¯INFOã§ãããWARN以äžã®ã¿åºåãããå Žåããé害調æ»ã§DEBUGã¬ãã«ã®è©³çްã確èªãããå Žåã«ã¯ãåºåã¬ãã«ã倿Žã§ããŸããèšå®ã¯newrelic-infra.ymlã«èšèŒãã倿ŽåŸã¯ãšãŒãžã§ã³ãã®åèµ·åãå¿
èŠã§ãããŸãããã°ãåå²ããªããšè¥å€§åããŠãã£ã¹ã¯ãå§è¿«ãããããåå²ãµã€ãºãä¿æäžä»£æ°ã®èšå®ãæšå¥šããŸãã èšèŒå ŽæïŒ/etc/newrelic-infra.yml log: level: INFO #ERROR/WARN/INFO/DEBUG file: /var/log/newrelic-infra/newrelic-infra.log rotate: max_size_mb: 100 #100MBãè¶
ãããããŒããŒã·ã§ã³(èšå®å€ã¯äŸ) max_files: 10 #æå€§10äžä»£åã®ãã°ãä¿æ(èšå®å€ã¯äŸ) compression_enabled: true #å€ããã°ãå§çž®ããŠä¿å file_pattern: YYYY-MM-DD_hh-mm-ss.log #ããŒããŒã·ã§ã³æã®ãã¡ã€ã«åãã¿ãŒã³(èšå®å€ã¯äŸ) ã€ã³ãã©ã¹ãã©ã¯ãã£ãšãŒãžã§ã³ãã®èšå® | New Relic Documentation Configuration settings for the New Relic infrastructure agent, including YAML and environment variable names, value, min... docs.newrelic.com ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ãšãŒãžã§ã³ãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°çšãã°ã®çæ | New Relic Documentation Enable verbose logging or smart verbose mode for the New Relic infrastructure agent, then collect about 3 to 5 minutes w... docs.newrelic.com ãµãŒããŒãã°éä¿¡èšå® ã¢ããªã±ãŒã·ã§ã³ãã°ãã»ãã¥ãªãã£é¢é£ãã°ãã·ã¹ãã ãã°ãªã©ããµãŒããŒå
ã§ãšã©ãŒãåºåãããŠããŠããNew Relicã«éä¿¡ããªããã°ãäžã€äžã€ãµãŒããŒã«ãã°ã€ã³ããŠç¢ºèªããªããã°ãªããŸããã New Relicã®ã³ã³ãœãŒã«ç»é¢ã§ãšãŒãžã§ã³ããå°å
¥ãããµãŒãã®ãã°ãèŠããå Žåã転éãããã°ãymlã«èšèŒããå¿
èŠããããŸãã èšå®ãã¡ã€ã«ã¯ä»¥äžã«ãªããŸãããç°å¢ã«ãã£ãŠã¯æ ŒçŽå Žæãç°ãªãå¯èœæ§ããããŸããããã©ã«ãã§é信察象ã®ãã°ãèšèŒãããŠããŸãããäžèŠãªå Žåã¯åé€ããŠãåé¡ãããŸããããã®å€æŽã«ã€ããŠã¯ããšãŒãžã§ã³ãã®åèµ·åã¯äžèŠã§ãã èšèŒå ŽæïŒ/etc/newrelic-infra/logging.d/logging.yml èšèŒäŸã¯ä»¥äžã«ãªããŸããattributes以äžã®ã©ãã«å(ããã§ã¯service,env)ã¯èªç±ã«ã«ã¹ã¿ãã€ãºã§ããŸãããããã©ã«ãã§çšæãããŠããã©ãã«ããããŸãã logs: - name : logging.ymlå
ã«ãããŠã©ã®ãã°ã«ã€ããŠã®èšå®ããèå¥ã®ã¿ã«çšãã file : ããã§æå®ããããã¹ã®ãã°ãã¡ã€ã«ãNew Relicã«è»¢é attributes : ãã°ã«é¢é£ä»ããè¿œå æ
å ±ãæå®ã (ãã®è¡ã¯äœãæžããªã) service : ãã°æ€çŽ¢ã®éã«ããŒã¯ãŒãã§æ€çŽ¢ããã©ãã«äŸã(apache,httpd) env : ãã°æ€çŽ¢ã®éã«ããŒã¯ãŒãã§æ€çŽ¢ããã©ãã«äŸã(prd,stg) ã»ã»ã» logtypeã§èšå®ããããŒã¯ãŒããèµ€æ éšåã«è¡šç€ºãããŸããæ€çŽ¢ãè¡ãéãããã©ã«ãã§çšæãããŠãããAttributesãã«ããŽãªã掻çšããããšã§ãç®çã®ãã°ãçŽ æ©ãçµã蟌ãããšãã§ããŸãããã ããèšå®åæ åŸä»¥éã®ã¿å¯Ÿè±¡ãšãªããŸãã®ã§ãéå»ã«ããã®ãŒã£ãŠåæ ã¯ããããšãã§ããŸãããããã©ã«ãã§çšæãããŠããã©ãã«ããããã確èªããããšãã§ããŸãã ã€ã³ãã©ã¹ãã©ã¯ãã£ãšãŒãžã§ã³ãã䜿çšããŠãã°ã転éãã | New Relic Documentation How to forward your logs to New Relic using our infrastructure agent, so you can use enhanced log management capabilitie... docs.newrelic.com ãã°ã«å人æ
å ±ãèªèšŒã«é¢ããããŒã¿ãåºåãããŠããªããã確èªããå¿
èŠããããŸããããŒã¿è»¢éã¯æå·åãããããŒã¿ä¿åã¯ã»ãã¥ã¢ãªç°å¢ã§ç®¡çãããŠããŸãããå人æ
å ±ãæ©å¯ããŒã¿ã¯New Relicã«éä¿¡ããªãããèšå®ããå¿
èŠããããŸãã Data privacy with New Relic | New Relic Documentation Links to detailed information about how New Relic protects you and your customers' data privacy. Also see our security w... docs.newrelic.com ãšãŒãžã§ã³ãã®ãã°ãã¡ã€ã« InfrastructureãšãŒãžã§ã³ããå°å
¥ããã«ãããããããNew Relicã®ã³ã³ãœãŒã«ç»é¢ã«ãã¹ãã衚瀺ãããªãããŸãã¯ã¡ããªã¯ã¹ãæŽæ°ãããªãå ŽåããšãŒãžã§ã³ãã®åäœãéä¿¡ã«åé¡ãããå¯èœæ§ããããŸãããã®éã¯ã以äžã®ãã°ã«èšé²ãããå
容ã確èªããŠãã ããã /var/log/newrelic-infra/newrelic-infra.log ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ãšãŒãžã§ã³ãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°çšãã°ã®çæ | New Relic Documentation Enable verbose logging or smart verbose mode for the New Relic infrastructure agent, then collect about 3 to 5 minutes w... docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãã®åäœããã»ã¹ ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããåŸããµãŒããŒã«ã¯ä»¥äžã®ããã»ã¹ãåäœããŠããŸãããµãŒããŒã®ãªãœãŒã¹ãé«éš°ããŠããå Žåã以äžã®ããã»ã¹ã«ã€ããŠç¢ºèªããŸããå¿
èŠã«å¿ããŠåé察象ãééãèŠçŽããŸãã ããã»ã¹å æå³ çšé newrelic-infra-service ãµãŒãã¹ç®¡çããã»ã¹ ãšãŒãžã§ã³ãã®èµ·åã»åæ¢ newrelic-infra ãšãŒãžã§ã³ãããã»ã¹ ã¡ããªã¯ã¹ãããã»ã¹ã®åéã»è»¢éããã°è»¢é ãšãŒãžã§ã³ãã®åèµ·åã¯ãã®ããã»ã¹ã宿œ fluent-bit ãã°è»¢éããã»ã¹ ãã°ãåéã»è»¢é ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ãšãŒãžã§ã³ãã®åäœ | New Relic Documentation Standard New Relic's infrastructure agent behavior at startup, retry, maintenance, shutdown, etc. docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãã®ãªãã©ã€åŠç CPUãã¡ã¢ãªãªã©ã®ã¡ããªã¯ã¹æ
å ±ã¯é信倱æããæç¹ã§ç Žæ£ãããŸãããèšå®å€æŽãããã±ãŒãžã®ã€ã³ã¹ããŒã«ã»æŽæ°ãªã©ã®æ§ææ
å ±ã¯ãéä¿¡ã倱æããŠãéä¿¡ãå埩ããåŸã§New Relicã«éä¿¡ ãããŸããçæéã«å€§éã®ãªãã©ã€ãèµ·ãããšã·ã¹ãã ãžã®è² è·ãããããããåéã¯å詊è¡ééã䌞ã°ãããšã§ã·ã¹ãã è² è·ã軜æžãã”ããã¯ãªããã¿ãŒã³”ã«åŸã£ãŠè¡ãããŸãã ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ãšãŒãžã§ã³ãã®åäœ | New Relic Documentation Standard New Relic's infrastructure agent behavior at startup, retry, maintenance, shutdown, etc. docs.newrelic.com Infrastructure ãšãŒãžã§ã³ãã®åäœãµããŒãæé ã¡ãŒã«ãŒãOSã®ãµããŒããçµäºãããŸã§ãNew Relicã«ãããŠããšãŒãžã§ã³ãåäœããµããŒãããŸããããã±ãŒãžã¯ãµããŒãçµäºïŒEOLïŒåŸã®ã·ã¹ãã ã§ãå©çšã§ããå ŽåããããŸãããåäœä¿èšŒã¯ãããŸãããNew Relic InfrastructureãšãŒãžã§ã³ããå«ããæ¥ã
æ°æ©èœã远å ãããŠããŸããæ°æ©èœãå©çšããã«ã¯ããšãŒãžã§ã³ãã®ããŒãžã§ã³ã¢ãããå¿
èŠã§ããNew Relicã§ã¯ã3ãæããšã®InfrastructureãšãŒãžã§ã³ãã®ããŒãžã§ã³ã¢ãããæšå¥šããŠããŸããèªåã§ããŒãžã§ã³ã¢ããã¯ãããŸããã®ã§ããªãªãŒã¹ããŒãã確èªãã宿çãªããŒãžã§ã³ã¢ãããèšç»ããããšãæ±ããããŸãã InfrastructureãšãŒãžã§ã³ããæŽæ°ãã | New Relic Documentation Update the New Relic infrastructure agent on Linux, Windows, or macOS systems. docs.newrelic.com ã€ã³ãã©ç£èŠãšãŒãžã§ã³ãã®EOLããªã·ãŒ | New Relic Documentation Policies, start and end dates for support of New Relic infrastructure agent releases. docs.newrelic.com Infrastructure agent release notes | New Relic Documentation Infrastructure agent release notes docs.newrelic.com ãããã« æ¬èšäºã§ã¯ãNew Relic Infrastructureã§ã§ããããšãåéã§ããæ
å ±ãã€ã³ã¹ããŒã«æé ãããã°éä¿¡èšå®ã«ã€ããŠè§£èª¬ããŸãããå°å
¥ã¯æå€ãšç°¡åã ãšæããæ¹ãå€ãã®ã§ã¯ãªãã§ããããããã°ãåéã»éä¿¡ããããã«ã¯ãèšå®ãã¡ã€ã«ã«å°çšã®èšè¿°ã远å ãããã°è»¢éæ©èœãæå¹åããå¿
èŠããããŸããããã«ãããã·ã¹ãã ãã°ãã¢ããªã±ãŒã·ã§ã³ãã°ãå¹ççã«ç£èŠãããã©ãã«ã·ã¥ãŒãã£ã³ã°ãããã©ãŒãã³ã¹åæã«æŽ»çšã§ããŸããæ¬¡åã®èšäºã§ã¯ãInfrastructure ãšãŒãžã§ã³ãã®å
·äœçãªæŽ»çšæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã SCSKã¯New Relicã®ã©ã€ã»ã³ã¹è²©å£²ã ãã§ã¯ãªããå°å
¥ããå°å
¥åŸã®ãµããŒããŸã§äŒŽèµ°çã«å°å
¥æ¯æŽã宿œããŠããŸããããããã¯ä»¥äžããåç
§ã®ã»ã©ãããããé¡ãããããŸãã
ALBã®ã¿ãŒã²ãããšã㊠AWS Lambda 颿°ãèšå®ããããã¯ãšã³ããžã®ããçš®ã®ãããã·ãšããŠäœ¿çšããå ŽåããããŸããã Lambda颿°ã®å¶çŽãšããŠã¯å®è¡æé15åã®å¶éãªã©ã¯æåã§ããã ALBã®ã¿ãŒã²ãããšããŠäœ¿ãå Žåã«æ³šæãã¹ãèšå®ã«ã€ã㊠ãå°ãã€ãŸã¥ããã®ã§æŽçããŠã¿ãŸããã ãã€ããŒããµã€ãºã®å¶çŽã«ã€ã㊠ALB-Lambdaã®ãªã¯ãšã¹ãããã³ã¬ã¹ãã³ã¹ã®ãã€ããŒãã®ãµã€ãºäžé㯠1MB ãšãªããŸãã éåžžã®Lambdaã®å ŽåãåæåŒã³åºãã®å Žåã¯6MBãéåæåŒã³åºãã®å Žåã¯1MB ã§ãã®ã§ãåæåŒã³åºããšæ¯èŒãããšããªãã®å¶éã«æããŸãã ããã¯ãšã³ãåŠçã«ãã£ãŠã¯ããã€ããŒãã1MBãè¶
ããå¯èœæ§ã¯å€ãã«ãããŸãã(äŸïŒãã¡ã€ã«ã¢ããããŒãåŠçãªã©) ãã®å¶é㯠緩åäžå¯èœ ã®ãããALB-Lambdaã䜿çšããå Žåã¯ãèšè𿮵éã§ãã€ããŒããµã€ãºã®äžé=1MB ã«ã€ããŠã¯èªèããŠããå¿
èŠããããŸãã1MBãå°æ¥çã«ããè¶
ããå¯èœæ§ã®ããå Žåã¯Lambda以å€ã®ææ®µãæ€èšããå¿
èŠããããšæããŸãã 代æ¿ãšããŠã¯ãEC2ãECSã§proxy ãå®è£
ããããä»ç¡ããšæã£ãŠããŸãã (* æ£ç¢ºã«ã¯ãªã¯ãšã¹ãã«å¯ŸããŠã¯ãªã¯ãšã¹ãããã£ã®ãµã€ãºã«å¯Ÿããå¶éãã¬ã¹ãã³ã¹ã«å¯ŸããŠã¯LambdaãåºåããJSONã®ãµã€ãºã«å¯Ÿããå¶éã®ããã§ãã) è€æ°å€ããããŒã®äœ¿çšã«ã€ã㊠ããã¯ãšã³ããšããåãããããããŒã«è€æ°å€ã®ãã®ãããå Žåã ã¿ãŒã²ããã°ã«ãŒãã§ãè€æ°å€ã®ããããŒãããªã³ã«ããèšå®ãå¿
èŠã§ãã ãã®èšå®ãæ¬ ããå Žåã¯ã è€æ°å€ã®ãã¡ã®æåŸã®å€ã®ã¿äœ¿çšããã ããšãã仿§ããããŸãã å
·äœçã«ã¯Cookieã®äœ¿çšãåããããã§ãããã äŸãã°ãã¯ã©ã€ã¢ã³ãããALB-Lambdaãžã®ãªã¯ãšã¹ãã¯ãããŒã« name1=val1/name2=val2 ãšããäºã€ã®ã¯ãããŒãå«ãã§ãããšããŸãããã ããããŒã®èгç¹ããèŠããšã : "cookie":"name1=val1", "cookie":"name2=val2", : ã®ããã«ãâcookie”ãããã®å€ãšããŠã”name1=val1″ , “name2=val2″ ãšäºã€ã®å€ãæã€ã±ãŒã¹ã§ãã è€æ°å€ããããŒããªãã®ç¶æ
ã®å Žåã¯ä»¥äžã®ããã«æåã®å€ãæ¬ èœããŠLambdaã«ããããŸããå€ãã®å Žåãæå³ããåäœã«ãªããªãã§ãããã仿§ãšããŠã¯ãåäžãããã®è€æ°å€ã¯”æåŸã®å€ã®ã¿ãæž¡ããã” ã§ãã ãŸããLambdaãåãåãã€ãã³ãã®åœ¢åŒã¯ãè€æ°å€ã®ããããŒãã®ãªã³ã»ãªãã§ç°ãªããã®ã«ãªããããLambdaã®ããžãã¯ã«åœ±é¿ããããŸãã詳现ã¯ä»¥äžã®ããã¥ã¡ã³ãã«è©³ããã§ãã Lambda 関数を Application Load Balancer のターゲットとして使用する - ELB Lambda 颿°ãã¿ãŒã²ãããšã㊠Application Load Balancer ã«ç»é²ããæ¹æ³ã«ã€ããŠèª¬æããŸãã docs.aws.amazon.com ãŸãšã 調ã¹ããšããã¥ã¡ã³ãã«ã¯æžããŠããããšã§ã¯ãããŸãã(ã©ããªãã¬ããžãããã§ãããã)ãããããããããåºæã®å¶çŽããããšããããšã«èããè³ãããå°ãåŒã£æãããŸãããèããããšããçšåºŠã§ãé ã«æ®ã£ãŠããã°ãäºåã«èª¿ã¹ã察å¿ããšãããªãšæã£ãŠããŸãã ã¿ãªããã®é ã®çé
ã«æ¬ çã§ããã®å
å®¹ãæ®ã£ãŠããã°å¹žãã§ãã
SCSKã®çã§ãã ä»åã¯å°ãã¿ã§ãããã¢ããªã±ãŒã·ã§ã³éçºäžã«å°ãæžæã£ãå
容ã§ããããšãšãïŒããŸãã«ãåœããåãããŠïŒïŒWeb äžã«ããŸãæ
å ±ãèŠã€ããããªãã£ãããšãçžãŸã£ãŠãšã³ããªãšããŠæ®ããŠããããšæã£ãŠã®æçš¿ã§ãã å°ãã¿æ¬é¡ å
è¬æçš¿ããäžé£ã®ãšã³ããªã®éããã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ãããããã³ããšã³ããŸã§åºãæãå
¥ããããšã«ãªããŸãããããã®éã« Amplifyã»AppSync åšãã§ééããå
容ãšãªããŸãã AWS AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ãã®1ïŒæŠèŠç·š æšå¹ŽåºŠãªãªãŒã¹ãã Web ã¢ããªã±ãŒã·ã§ã³ã«ããã AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ã«ã€ããŠèª¬æããŸãã第1åã¯æŠèŠç·šã§ãã blog.usize-tech.com 2026.01.07 AWS AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ãã®2ïŒããã¯ãšã³ãç·š æšå¹ŽåºŠãªãªãŒã¹ãã Web ã¢ããªã±ãŒã·ã§ã³ã«ããã AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ã«ã€ããŠèª¬æããŸãã第2åã¯ããã¯ãšã³ãç·šã§ãã blog.usize-tech.com 2026.01.07 AWS AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ãã®3ïŒããã³ããšã³ãç·š æšå¹ŽåºŠãªãªãŒã¹ãã Web ã¢ããªã±ãŒã·ã§ã³ã«ããã AppSync ã®å¶çŽãåé¿ããããã®ã¢ããªã±ãŒã·ã§ã³æ¹ä¿®ã«ã€ããŠèª¬æããŸãã第3åã¯ããã³ããšã³ãç·šã§ãã blog.usize-tech.com 2026.01.07 ãããäžé£ã®æ¹ä¿®ã«ãããŠã¯åœç¶ãªãã AppSync APIïŒã¹ããŒãå®çŸ©ïŒãè€æ°å€æŽãããŠãããäžèšãšã³ããªã§èšåããéåæåŠççšã€ã³ã¿ãŒãã§ãŒã¹/ã©ãããŒçšã¯ãšãªã®è¿œå ãããã°ãåã¯ãšãªçµç±ã§éåæå®è¡ããããã«å€æŽããããšã§äžèŠãšãªã£ãã¯ãšãª/ãã¥ãŒããŒã·ã§ã³ã®åé€ããããŸãããäžèšãšã³ããªã§è§ŠããããŒãã«ã®æŽæ°å·®åãå°åºããåŠçãäŸã«æããŸããšãäžé£ã®åŠçã AppSync ã¯ãšãªãšããŠå®è£
ãããŠãããšããã å·®åèšç®åŠçïŒéåæåŠççšã€ã³ã¿ãŒãã§ãŒã¹/ã©ãããŒçšã¯ãšãªçµç±ã®å®è¡ã«å€æŽ å·®åèšç®çµæååŸåŠçïŒS3 眲åä»ã URL çµç±ã§ã®ååŸåŠçã«å€æŽ ã®ããã«å€æŽãããããå
ã
ã® AppSync ã¯ãšãªã¯çµæçã«äžèŠãšãªããAmplify ã®ã¹ããŒãå®çŸ©ãããåé€ããŸããã äžæ¹ã§ãå·®åèšç®çµæã®ãã©ãŒãããïŒåæ
å ±ïŒèªäœã¯å€æŽããå¿
èŠããªãã£ããããå
ã
ã® AppSync ã¯ãšãªã®è¿ãå€ãšã㊠Amplify ã®ã¹ããŒãã«å®çŸ©ããŠãããã®ãåŒãç¶ã䜿çšããããšèãæ®ããŠãããŸãããã¹ããŒãå®çŸ©ã®è©³çްã«ã€ããŠã¯æšå¹ŽåºŠã®ä»¥äžãšã³ããªããåç
§ãã ããã Amplify codegen ã§èªåçæããã query ã«ãã¹ãããã type ã å«ãŸããªã ã¿ã€ãã«ã®éããAmplify codegen ã§èªåçæããã query ã«ãã¹ãããã type ã å«ãŸããªãäºè±¡ãçºçãããããåå ãšè§£æ±ºçã«ã€ããŠãŸãšããŠã¿ãŸããã blog.usize-tech.com 2025.02.19 ãªãããã®å·®åèšç®çµæã®ãã©ãŒãããã¯ãããŒã¿éã®å¢å€§ã«äŒŽãããã©ãŒãã³ã¹æ¹åã®å¿
èŠãçãããããä»å¹ŽåºŠæ¹ä¿®ããŠããŸãã詳现ãªå
å®¹ã¯æ¹ããŠå¥ã®ãšã³ããªã§è§ŠããããšæããŸãã ãšããããäžé£ã®å€æŽåŸã«ã¢ããªã±ãŒã·ã§ã³ã®åäœç¢ºèªããããšãããå·®åèšç®çµæååŸåŠçã«ãããŠã¢ããªã±ãŒã·ã§ã³åŽã§ä»¥äžã®ãããªãšã©ãŒãçºçããŠããŸãããæåéããäžèšãã©ãŒãããã®åæ
å ±ãæªå®çŸ©ã§ååŸã§ããªãã£ããšãããšã©ãŒã§ãã name: TypeError message: can't access property "deleted_rows_info", models.DataDiffInfo is undefined ãããããªãAmplify ã®ã¹ããŒãå®çŸ©ã«ã¯ãã®ãŸãŸæ®ããŠããã®ã«ã»ã»ãšæããªãããAmplify ãèªåçæããåæ
å ±ã®å®çŸ©ãã¡ã€ã«ãšãªã API.ts ãåç
§ãããšããã äžèšãã©ãŒãããã«å¯Ÿå¿ããåæ
å ±ã®å®çŸ©ãå
šãŠåé€ãããŠããŸããã ãããæªå®çŸ©ãšæãããèš³ã§ãããã§ã¯äœæ
åé€ãããŠããŸã£ãã®ããšèšããšãããããåããã§ãããã Amplify ã®ã¹ããŒãå®çŸ©ãã察象ã®ã¯ãšãªãåé€ããããš ãåå ã§ããã ãšããã®ãããã®å·®åèšç®çµæã®ãã©ãŒãããïŒåæ
å ±ïŒã¯ã察象ã®ã¯ãšãªã®è¿ãå€ã®å®çŸ©ã«ããå«ãŸããŠããªãã£ããã§ãããã€ãŸããAmplify ã®ã¹ããŒãå®çŸ©ãã察象ã®ã¯ãšãªãåé€ãããšãAmplifyã»AppSync ã§å®çŸ©ãããäžé£ã®åŠçïŒã¯ãšãª/ãã¥ãŒããŒã·ã§ã³/ãµãã¹ã¯ãªãã·ã§ã³ïŒå
ã§ãã®ãã©ãŒãããã䜿çšãããªããªããããAmplifyïŒamplify codegenïŒã«ããçæãããåæ
å ±ãããåé€ããããã®ãšçè§£ããŸãããAmplify ã¹ããŒãå®çŸ©ã®ç®çã AppSync ã® graphql ã®ä»æ§ãå®çŸ©ãããããšèãããšããŸãåœããåãšèšãã°åœããåã®è©±ã§ã¯ããã®ã§ããã»ã»è©Šãã«ã¹ããŒãå®çŸ©ãå
ã«æ»ãããšãããAPI.ts å
ã®åæ
å ±å®çŸ©ãå
ã«æ»ã£ãããšãè£ä»ããšãªããŸããã æããAppSync ã®ã¹ããŒãå®çŸ©èªäœã«ã¯äžèšã®åæ
å ±ãå«ãŸãããŸãŸãšãªã£ãŠããã®ã§ãè¥å¹²äžè²«æ§ã®ãªã仿§ãšæããŠããŸã£ãéšåããããŸãããã®ãžãã Amplify gen2 ã§ã¯ããããã®ã¹ããŒãå®çŸ©ã®æ¹æ³ãç°ãªã以äžãåæ§ã«å€ãã£ãŠãããšãããããããŸãããã»ã» åé¿ç å
è¿°ã®éããAmplify ãçæããåæ
å ±ã«å«ããããã«ã¯å»æ¢ããã¯ãšãªãïŒäœ¿ããªãã®ã«ïŒå床å®çŸ©ããå¿
èŠããããšããããšã§ããããã«ããã¯ç®çãšææ®µãå±¥ãéããŠããããã倧人ãããããã®åæ
å ±ãå®çŸ©ããããã® composable ãäœæããããšã§å¯Ÿå¿ããŸããã Amplify çµç±ã§å®çŸ©ããæ¹ãæ£çŽæ¥œã§ã¯ããã®ã§æåã¯ãã®æ¹åæ§ã§èª¿æ»ããŠããã®ã§ããæ
å ±ããŸãã§ãªãããäžæŠäžèšã§è§£æ±ºããããšãããçŽè¿ã§ã¯ç¹ã«èª¿æ»ããŠããªãã®ã§ãããããä»åŸç¶å ±ãããã°æ¬ãšã³ããªãæŽæ°ããããšæããŸãã ãŸãšã å
è¿°ã®éããAmplify ã®ã¹ããŒãã®ç®çãšãããäœçœ®ã¥ããèãããšãã®ãããªæåã«ãªãããšã¯çŽåŸã®è¡ããšããã§ãããããããæ®é㯠Amplify/AppSync ã§äœ¿çšããªãåæ
å ±ãæç€ºçã« Amplify ã®ã¹ããŒãã«å®çŸ©ããããšã¯ãªããšæãã®ã§ãããèãããšããæå³ç²ç¹ãšèšãããããããŸããããã¢ããªã±ãŒã·ã§ã³éçºäžã« AppSync ã¯ãšãªã®æ¹å»èªäœã¯çºçãåŸãããšã ãšã¯æããŸãããä»åã®ããã« AppSync ã®ã¯ãšãªãšããŠã¯äžèŠã«ãªã£ããåæ
å ±ã¯ç¶ç¶ããŠäœ¿çšããããšããã®ãã¬ã¢ã±ãŒã¹å¯ãã ãšæããŸããã»ã» æ¬èšäºãã©ãªããã®åœ¹ã«ç«ãŠã°å¹žãã§ãã
ããã«ã¡ã¯ãSCSKã§ ãã¯ãã«ã«ãšã¹ã³ãŒããµãŒãã¹ ãæ
åœããŠãå
çã§ãã ååéäžã ã£ã Spamhaus ã«ç»é²ãããŠããŸã£ããéç¥ããä»çµã¿ã®åäœç¢ºèªãšä¿®æ£ãè¡ããŸãã åäœç¢ºèª é垞㯠Amazon EventBridge ãã n æé(èšå®å€)ééã§ Lambda 颿°ãå®è¡ããã®ã§ãããä»åã¯ãã¹ããªã®ã§æã£åãæ©ã Lambda颿°ã®ãã¹ãããå®è¡ããŸãã ã¯ãã倱æããŸããã ãã°ã確èªãããšãlambda_function ãšããã¢ãžã¥ãŒã«ãç¡ãããšãããšã©ãŒã§ãããããŸãLambda颿°ããããã€åºæ¥ãŠããªãããã«æããŸãã Lambda颿°ã確èªãããšãindex.py ãããããŸããã CloudFormation ãã³ãã¬ãŒãã«æ»ã£ãŠç¢ºèªãããšãã€ã³ã©ã€ã³ã§ Pythonã®ãœãŒã¹ã³ãŒãã®ããã¹ãã zip ãã¡ã€ã«åããŠã¢ããããŒãããèšè¿°ã«ãªã£ãŠããŸããããã§ã¯åããŸããã æ¹é転æ ãªããã®æ§ãªå€±æã«ãªã£ãã®ããšãããšãCloudFormationã® ZipFile ããããã£ã¯ãå€éšã©ã€ãã©ãªãå«ããããšãã§ãããã³ãŒããµã€ãºã«ãå¶éããããŸãã AWS::Lambda::Function Code - AWS CloudFormation Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack upd... docs.aws.amazon.com ãŸããCloudFormation äžã§ã¯ Lambda颿°ã®ãã³ãã©ã®å«ãŸããã¢ãžã¥ãŒã«åã lambda_function ãšå®çŸ©ããŠããã®ã§ããã index ãšããååã«ãªããããšããæ³šææžãããããŸããã(åºæ¥äžãã£ã Lambda颿°ã§ index.py ãšãªã£ãŠããã®ã¯ãã®çºã§ã) ä»åã¯1ãã¡ã€ã«ã«åãŸã察象ã®ãããã€ã§ã¯ãªããè€æ°ã®ã¢ãžã¥ãŒã«ãã©ã€ãã©ãªãå¿
èŠã ã£ããããAWS SAM(Serverless Application ModelããµãŒããŒã¬ã¹ã¢ããªã±ãŒã·ã§ã³ãäœæããéã«æå°éã®ã³ãŒãã§ AWS Lambda 颿°ãLambda ã®èä¹
æ§ã®ãã颿°ãAmazon API Gateway APIsã Amazon DynamoDB ããŒãã«ãããã³ãã®ä»ã®ãµãŒããŒã¬ã¹ãªãœãŒã¹ããã°ããå®çŸ©ã§ããä»çµã¿)ã«ããããã±ãŒãžã³ã°ãæ£è§£ã§ããã ãã®ä»ã®æ¡ãå«ãã以äžã®ãããªåè£ãèããæ¯èŒæ€èšããŸããã æ¡1: S3ãã±ãããå¥éçšæããŠãdeploy.sh å
ã§ããã« zipåãããœãŒã¹ã³ãŒã矀ãšã©ã€ãã©ãªãé
眮ãããããããããã€ããããã« CloudFormationãã³ãã¬ãŒããä¿®æ£ããã æ¡2: AWS CDK ãžç§»è¡ããã æ¡3: AWS SAM ã䜿ã£ãŠãCloudFormationãã³ãã¬ãŒããä¿®æ£ãããSAMã®æ©èœã䜿ã£ãŠãœãŒã¹ã³ãŒã矀ãšã©ã€ãã©ãªãã¢ããããã æ¡1ã¯ãS3ãã±ããããã®ããã«çšæããªããã°ãªããªãã®ã§ãä»åã¯ãã¹ãæ¡2ã®CDKã¯ãã£ããäœã£ã CloudFormationãã³ãã¬ãŒããå
šéšäœãçŽãã«ãªã£ãŠç¢ºèªã倧å€ãããªã®ã§ãã¹ãæ¡3ã® AWS SAM 㯠S3 ãã±ããã¯å
±éã®ãã®ãçšæããŠãããããzipãã¡ã€ã«åãSAMåŽã§ãã£ãŠãããã®ã§äœèšãªåŠçãèŠããªããªããããã³ãã¬ãŒããã¹ãããªãããä»ã®ãªãœãŒã¹ã®å Žæã¯CloudFormationãã³ãã¬ãŒãã®ãŸãŸã§ããããšæãããã®ã§ãä¿®æ£ã§ããããããšããèãã§æ¡3ã®AWS SAM ã«ããããšã«ããŸããã AWS SAMã«ã€ããŠã¯ããã§ã¯è©³çްã«ã¯ç޹ä»ããŸãããã詳ããç¥ãããæ¹ã¯ä»¥äžããåç
§ãã ããã AWS Serverless Application Model (AWS SAM) とは - AWS Serverless Application Model AWS Serverless Application Model (AWS SAM) ãšã¯äœãããŸãããããããŒããµãŒããŒã¬ã¹ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«åœ¹ç«ã€æ¹æ³ã«ã€ããŠèª¬æããŸãã docs.aws.amazon.com Kiroåã³ Kiroã«ãèŠä»¶å€æŽã®çç±ãšãCloudFormationããSAMã«å€æŽããæšãäŒããŠãrequirementsãdesignãtasksã®ä¿®æ£ãäŸé ŒããŸãã å
šéšãæžãçŽãããã®ã§ã¯ãªãããã¡ããšå·®åãçè§£ããŠããŠããã¬ãŒãµããªãã£ãããªã¯ã¹ãå
ã«åå®è¡å¿
èŠãªã¿ã¹ã¯ãæŽãã ãããŸããã ãŸãããŠãã¿ã¹ã¯å®è¡å°çã§ãã Task completeã«ãªã£ãã¿ã¹ã¯ãæªå®è¡ã«æ»ãæ¹æ³ãããããªãã£ãã®ã§ Kiro ã«èããŠæ»ããŠããããŸããã ä¿®æ£ããç®æãèŠããšãåçŽã«ãã§ãã¯ããã¯ã¹ ã [x] ãšãªã£ãŠããã®ã [ ] ã«ããã°è¯ãããã§ãã Task 1ãä¿®æ£åŸ AWS SAM cli ãã€ã³ã¹ããŒã«ããŠã sam validate-template ã sam build ãéã£ãã®ã§ãTask 11ã12ã13 ãšå床å®è¡ããŸãã å®è¡åŸãåºæ¥äžãã£ã SAMãã³ãã¬ãŒã ã䜿çšããŠãããã€ãããšãä»åºŠã¯lambda_function.py ã ã©ã€ãã©ãªçŸ€ãå«ãŸããŠããŸãã 1æéã«1åã®å®è¡ã®èšå®ã§ãããã€ããã®ã§ãæ«ãçµã€ãš Lambda 颿°ã«ãã°ãåºåãããŠããã¯ãã§ããLambda颿°ã® ã¢ãã¿ãªã³ã°ãã CloudWatch Logs ã確èªããŠã¿ããš… ãããããã³ãšãã°ãåºåãããŠããŸãããKiro ã¹ããã¯ã¢ãŒãã§ã¯ããã°ã«é¢ããŠãããªãããããªäœã£ãŠãããã®ã§ãèŠããããã°ãåºåãããŠããŸãã ã¡ãã£ãšèå³ããã£ãã®ã§ãKiro ã« StructuredLogger ã®æ§æã Mermaid å³ã«èµ·ãããŠããã£ãããã®ããã«ãªã£ãŠããŸããã ãã¡ããšãã»ã³ã·ãã£ããªæ
å ±ã¯ SensitiveDataFilter ã§ãã£ã«ã¿ããŠãããåŠçãå®è£
ãããŠããããã§ãã ããããã¿ã€ããããããã¯ã·ã§ã³ãŸã§ïŒAgentic AI development from prototype to productionïŒããšããããã£ãããã¬ãŒãºã«æ¥ããªãäœãã§ããã åæèšå®ãšã㊠192.168.1.1 (ãã©ã€ããŒãIPã¢ãã¬ã¹ãªã®ã§ãSpamhaus ã«ã¯ç»é²ãããªã)ãç£èŠå¯Ÿè±¡ãšããã®ã§ã “is_listed” : false ãšãæåŸ
éãã®å®è¡çµæã§ãã ãã®ã¢ãã¬ã¹ãã詊ãã« Spamhaus SBLã«ç»é²ãããŠããŸã£ãæ€èšŒã«å©çšã§ãã 127.0.0.2 ãèšå®ããŸãã ã127.0.0.2ãã®ãã¹ãIPã«ã€ã㊠ãSpamhausããã¹ãçšã«æäŸããŠãã 127.0.0.2 ãå
¥åããããšã§ãå®éã«ãã©ãã¯ãªã¹ãã«ç»é²ãããéãšåãæåãå®å
šã«ã·ãã¥ã¬ãŒã·ã§ã³ã§ããŸããã Lambda颿°ã®æ°ããããŒãžã§ã³ãçºè¡ããŠã(ããã§ã¯ããŒãžã§ã³2) Lambda颿°ã® live ãšã€ãªã¢ã¹å€ ã 1 -> 2 ãžå€æŽããŸãã live ã®ãªã³ã¯ããã«ãªã£ããšããã§ããã¹ããå®è¡ããã°ãSpamhausã® SBL ã«ç»é²ãããŠããŸã£ãã¡ãŒã«ãæ¥ãã¯ãã§ãã SNSããã¡ãŒã«ãæ¥ãŸããïŒãããŸãäœæã§ããããã§ãïŒ åºæ¥äžããã€ã¡ãŒãž åºæ¥äžãã£ãã³ãŒãã¯ããªããã£ãããšäœã£ãŠãããããšãããããã¹ãŠã ãã® blog äžã§ä¹ããããšãã§ããªããããªåéã«ãªã£ãŠããŸããã ã§ããããã£ããã§ãã®ã§ãã¢ãŒããã¯ãã£å³ãšãåºæ¥ããã£ã SAM ãã³ãã¬ãŒããä¹ããŠãããŸãã ã¢ãŒããã¯ãã£å³ã¯ Kiro ã«æžããŠããã£ããã®ãå
šéšå
¥ãã§æ··æ²ãšããŠããã®ã§ãé©åºŠãªç¯å²ã§åå²ããŸãããMermaidèšæ³ ã¯ããã¹ãããŒã¹ãªã®ã§ãåå²ãããä¿®æ£ããããç°¡åãªã®ã䟿å©ã§ããïŒ SAM ã® ãããã€ã¢ãŒããã¯ãã£å³ SBL Monitor ã®ã¡ã€ã³ã¢ãŒããã¯ãã£å³ Lambda颿°ã®ã¢ãŒããã¯ã㣠SAM ãã³ãã¬ãŒã AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: 'Spamhaus SBL Monitor - Serverless monitoring system for IP addresses on Spamhaus Blocklist using SAM with automatic dependency packaging' Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: "Monitoring Configuration" Parameters: - IPAddresses - MonitoringInterval - Label: default: "Notification Configuration" Parameters: - NotificationEmail - Label: default: "Resource Configuration" Parameters: - ResourceNamePrefix - CostAllocationTag ParameterLabels: IPAddresses: default: "IP Addresses to Monitor" MonitoringInterval: default: "Monitoring Interval (hours)" NotificationEmail: default: "Email Address for Notifications" ResourceNamePrefix: default: "Resource Name Prefix" CostAllocationTag: default: "Cost Allocation Tag Name" Parameters: IPAddresses: Type: String Description: 'Comma-separated list of IP addresses to monitor for SBL registration' AllowedPattern: '^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(,\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})*$' ConstraintDescription: 'Must be valid IPv4 addresses separated by commas (e.g., 192.168.1.1,10.0.0.1)' Default: '192.168.1.1' MonitoringInterval: Type: Number Description: 'Interval in hours between SBL checks (1-24 hours)' MinValue: 1 MaxValue: 24 Default: 1 ConstraintDescription: 'Must be between 1 and 24 hours' NotificationEmail: Type: String Description: 'Email address to receive SBL detection notifications' AllowedPattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' ConstraintDescription: 'Must be a valid email address' ResourceNamePrefix: Type: String Description: 'Prefix for all resource names (maximum 10 characters)' MaxLength: 10 MinLength: 1 AllowedPattern: '^[a-zA-Z][a-zA-Z0-9-]*$' ConstraintDescription: 'Must start with a letter and contain only alphanumeric characters and hyphens' Default: 'sbl' CostAllocationTag: Type: String Description: 'Value for the Cost allocation tag applied to all resources' MinLength: 1 MaxLength: 256 AllowedPattern: '^([\p{L}\p{Z}\p{N}_.:\/=+\-@]*)$' ConstraintDescription: 'Must contain only alphanumeric characters, spaces, periods, colons, slashes, equals, plus, hyphens, underscores, and at symbols' Default: 'spamhaus-monitor' Globals: Function: Runtime: python3.13 MemorySize: 256 Timeout: 300 Environment: Variables: LOG_LEVEL: INFO Tags: Cost: !Ref CostAllocationTag Application: 'Spamhaus-SBL-Monitor' Tracing: Active ReservedConcurrentExecutions: 5 AutoPublishAlias: live DeploymentPreference: Type: AllAtOnce # Stack-level tags applied to all resources (moved to Metadata section for SAM compatibility) Conditions: IsSingleHour: !Equals [!Ref MonitoringInterval, 1] Resources: # IAM Role for Lambda Function (Least Privilege) SBLMonitorFunctionRole: Type: AWS::IAM::Role Properties: RoleName: !Sub '${ResourceNamePrefix}-lambda-execution-role' AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess Policies: - PolicyName: SBLMonitorPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: !Ref DQSSecret - Effect: Allow Action: - sns:Publish Resource: !Ref SBLNotificationTopic - Effect: Allow Action: - logs:CreateLogGroup - logs:CreateLogStream - logs:PutLogEvents Resource: !Sub 'arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${ResourceNamePrefix}-sbl-monitor:*' Tags: - Key: Cost Value: !Ref CostAllocationTag - Key: Application Value: 'Spamhaus-SBL-Monitor' - Key: Component Value: 'IAM-Role' # Lambda Function for SBL Monitoring SBLMonitorFunction: Type: AWS::Serverless::Function Properties: FunctionName: !Sub '${ResourceNamePrefix}-sbl-monitor' CodeUri: src/ Handler: lambda_function.lambda_handler Runtime: python3.13 Role: !GetAtt SBLMonitorFunctionRole.Arn Description: 'Monitors IP addresses for Spamhaus SBL registration and sends notifications with automatic dependency packaging' Environment: Variables: IP_ADDRESSES: !Ref IPAddresses DQS_SECRET_NAME: !Ref DQSSecret SNS_TOPIC_ARN: !Ref SBLNotificationTopic Events: ScheduledMonitoring: Type: Schedule Properties: Schedule: !If - IsSingleHour - 'rate(1 hour)' - !Sub 'rate(${MonitoringInterval} hours)' Name: !Sub '${ResourceNamePrefix}-sbl-monitor-schedule' Description: 'Scheduled trigger for Spamhaus SBL monitoring with retry and error handling' Enabled: true RetryPolicy: MaximumRetryAttempts: 3 DeadLetterConfig: Arn: !GetAtt SBLMonitorDLQ.Arn Tags: Component: 'Lambda-Function' # Dead Letter Queue for failed EventBridge executions SBLMonitorDLQ: Type: AWS::SQS::Queue DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: QueueName: !Sub '${ResourceNamePrefix}-sbl-monitor-dlq' MessageRetentionPeriod: 1209600 # 14 days Tags: - Key: Cost Value: !Ref CostAllocationTag - Key: Application Value: 'Spamhaus-SBL-Monitor' - Key: Component Value: 'SQS-DLQ' # SNS Topic for SBL Notifications SBLNotificationTopic: Type: AWS::SNS::Topic Properties: TopicName: !Sub '${ResourceNamePrefix}-sbl-notifications' DisplayName: 'Spamhaus SBL Detection Alerts' KmsMasterKeyId: alias/aws/sns DeliveryStatusLogging: - Protocol: http/s SuccessFeedbackRoleArn: !GetAtt SNSLoggingRole.Arn FailureFeedbackRoleArn: !GetAtt SNSLoggingRole.Arn Tags: - Key: Cost Value: !Ref CostAllocationTag - Key: Application Value: 'Spamhaus-SBL-Monitor' - Key: Component Value: 'SNS-Topic' # IAM Role for SNS Delivery Status Logging SNSLoggingRole: Type: AWS::IAM::Role Properties: RoleName: !Sub '${ResourceNamePrefix}-sns-logging-role' AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: sns.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: SNSLogsDeliveryRolePolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - logs:CreateLogGroup - logs:CreateLogStream - logs:PutLogEvents - logs:PutMetricFilter - logs:PutRetentionPolicy Resource: '*' Tags: - Key: Cost Value: !Ref CostAllocationTag - Key: Application Value: 'Spamhaus-SBL-Monitor' - Key: Component Value: 'IAM-Role' # Email Subscription to SNS Topic SBLNotificationSubscription: Type: AWS::SNS::Subscription Properties: TopicArn: !Ref SBLNotificationTopic Protocol: email Endpoint: !Ref NotificationEmail FilterPolicy: severity: - CRITICAL - WARNING FilterPolicyScope: MessageAttributes DeliveryPolicy: healthyRetryPolicy: numRetries: 3 minDelayTarget: 20 maxDelayTarget: 20 numMinDelayRetries: 0 numMaxDelayRetries: 0 numNoDelayRetries: 0 backoffFunction: linear # Secrets Manager Secret for DQS Key DQSSecret: Type: AWS::SecretsManager::Secret DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: Name: !Sub '${ResourceNamePrefix}-dqs-key' Description: 'Spamhaus Data Query Service (DQS) authentication key with encryption and access policies' SecretString: | { "DQS_KEY": "CHANGE-YOUR-DQS-KEY-LATER" } KmsKeyId: alias/aws/secretsmanager ReplicaRegions: [] Tags: - Key: Cost Value: !Ref CostAllocationTag - Key: Application Value: 'Spamhaus-SBL-Monitor' - Key: Component Value: 'Secrets-Manager' # Resource Policy for DQS Secret (Least Privilege Access) DQSSecretResourcePolicy: Type: AWS::SecretsManager::ResourcePolicy Properties: SecretId: !Ref DQSSecret ResourcePolicy: Version: '2012-10-17' Statement: - Sid: AllowLambdaAccess Effect: Allow Principal: AWS: !GetAtt SBLMonitorFunctionRole.Arn Action: - secretsmanager:GetSecretValue Resource: '*' Condition: StringEquals: 'secretsmanager:ResourceTag/Application': 'Spamhaus-SBL-Monitor' Outputs: LambdaFunctionArn: Description: 'ARN of the SBL Monitor Lambda function' Value: !GetAtt SBLMonitorFunction.Arn Export: Name: !Sub '${AWS::StackName}-LambdaFunctionArn' SNSTopicArn: Description: 'ARN of the SBL Notification SNS topic' Value: !Ref SBLNotificationTopic Export: Name: !Sub '${AWS::StackName}-SNSTopicArn' SecretsManagerArn: Description: 'ARN of the DQS Key secret in Secrets Manager' Value: !Ref DQSSecret Export: Name: !Sub '${AWS::StackName}-SecretsManagerArn' DeadLetterQueueUrl: Description: 'URL of the Dead Letter Queue for failed executions' Value: !Ref SBLMonitorDLQ Export: Name: !Sub '${AWS::StackName}-DeadLetterQueueUrl' MonitoringConfiguration: Description: 'Summary of monitoring configuration' Value: !Sub 'Monitoring ${IPAddresses} every ${MonitoringInterval} hours, notifications to ${NotificationEmail}' ãããã« Spamhaus ã«ç»é²ãããŠããŸã£ããéç¥ããä»çµã¿ããµãŒãã¬ã¹ã§äœæããŸããã Kiro ãäœæããŠãããã³ãŒãã¯ãåéã®é¢ä¿ã§å
šãŠå
¬éã¯ã§ããŸããã§ãããããã£ãããšããæ§æã§åŠçãèšèŒããŠãããŠããŸããããã¢ãŒããã¯ãã£å³ããã°åºåã®äžå¯§ãªäœãã¯çŽåŸã®åºæ¥ã§ããïŒ ã¿ãªãããè¯ã ãã€ã¬ã¯ãã¡ãŒã«ç®¡ççæŽ»ãïŒ
ããã«ã¡ã¯ãSCSKã§ ãã¯ãã«ã«ãšã¹ã³ãŒããµãŒãã¹ ãæ
åœããŠããå
çã§ãã ååéäžã ã£ã Spamhaus ã«ç»é²ãããŠããŸã£ããéç¥ããä»çµã¿ã®å®è£
ãé²ããŸãã æ¬èšäºïŒäžç·šïŒã§ã¯ãå®è£
å®äºãŸã§ã解説ããŸãã ã¿ã¹ã¯ã®ç¢ºèª ååãèšèšããã¥ã¡ã³ããšããŠäœæããã¢ãŒããã¯ãã£å³ã§ãããããªæãã§èããŠããŸããã Kiro ãäœæããŠãããã¿ã¹ã¯ã¯å€§é
ç® 14 é
ç®ãå°é
ç®ãåããããšäœãš 56 é
ç®ãããŸãã”*”ã®ã€ããŠããé
ç®ã¯ optional ã§ 21é
ç®ããã®ã§ãããåŒããŠã 35 é
ç®ããããããªã®ã§ããããããšé²ããŠãããŸãã - [ ] 1. Set up project structure and core interfaces - [ ] 2. Implement DNS query and SBL checking functionality - [ ] 2.1 Implement DNS query module with nslookup functionality - [ ]* 2.2 Write property test for DNS query format compliance - [ ] 2.3 Implement SBL response interpretation - [ ]* 2.4 Write property test for DNS response interpretation - [ ] 3. Implement AWS Secrets Manager integration - [ ] 3.1 Create DQS key retrieval module - [ ]* 3.2 Write property test for secure DQS key retrieval - [ ]* 3.3 Write unit tests for Secrets Manager error handling - [ ] 4. Implement IP address processing and monitoring logic - [ ] 4.1 Create IP configuration parser - [ ]* 4.2 Write property test for IP configuration storage - [ ] 4.3 Implement sequential IP processing with timing - [ ]* 4.4 Write property test for sequential processing with timing - [ ]* 4.5 Write property test for complete IP monitoring - [ ] 5. Checkpoint - Core functionality validation - [ ] 6. Implement SNS notification system - [ ] 6.1 Create notification message formatter - [ ]* 6.2 Write property test for comprehensive notification content - [ ] 6.3 Implement SNS publishing with error handling - [ ]* 6.4 Write property test for SBL detection notification - [ ]* 6.5 Write property test for SNS failure resilience - [ ] 7. Implement duplicate detection prevention - [ ] 7.1 Create SBL detection state management - [ ]* 7.2 Write property test for duplicate detection prevention - [ ]* 7.3 Write property test for notification consolidation - [ ] 8. Implement comprehensive error handling and logging - [ ] 8.1 Create structured logging system - [ ]* 8.2 Write property test for structured logging with context - [ ] 8.3 Implement rate limiting and retry logic - [ ]* 8.4 Write property test for rate limiting handling - [ ]* 8.5 Write property test for sensitive information protection - [ ] 9. Create main Lambda handler - [ ] 9.1 Implement main lambda_handler function - [ ]* 9.2 Write property test for SBL detection recording - [ ]* 9.3 Write integration tests for complete workflow - [ ] 10. Checkpoint - Lambda function validation - [ ] 11. Create CloudFormation template - [ ] 11.1 Create base CloudFormation template structure - [ ] 11.2 Define Lambda function resources - [ ] 11.3 Define EventBridge scheduler resources - [ ] 11.4 Define SNS topic and subscription resources - [ ] 11.5 Define Secrets Manager resources - [ ] 11.6 Define IAM roles and policies - [ ] 11.7 Implement resource tagging and naming - [ ] 12. Create deployment scripts and documentation - [ ] 12.1 Create CloudShell deployment script - [ ]* 12.2 Write deployment validation tests - [ ] 12.3 Create deployment documentation - [ ] 13. Final integration and validation - [ ] 13.1 Deploy and test complete system - [ ]* 13.2 Write property tests for configurable scheduling - [ ]* 13.3 Write property tests for execution failure resilience - [ ]* 13.4 Write remaining property tests - [ ] 14. Final checkpoint - Complete system validation Keep optional tasks(faster MVP)ãã䜿ã£ãŠãšã«ããäžéãäœã£ãŠããŸãããšã«ããŸãã Kiroã®å·Šäžã® Explorer ã¢ã€ã³ã³ â .kiro/specs/<ãããžã§ã¯ãå>/task.md ãã¯ãªãã¯ã㊠tasks.md ãéããŸãã ã¿ã¹ã¯ãªã¹ãã衚瀺ãããŸãã æ¢ã«å®äºããã¿ã¹ã¯ã¯ ãã§ãã¯ããŒã¯ãšãTask completed衚瀺ãOptionalã®ã¿ã¹ã¯ã¯ ã°ã¬ãŒè¡šç€ºããŸã å®è¡ããŠããªãTask㯠çœè¡šç€ºãããŠããŸãã åã¿ã¹ã¯ã®å·Šäžã® â¡ïž Start task ãã¯ãªãã¯ãããšã¿ã¹ã¯ãéå§ããŸãã ã¿ã¹ã¯ãé²ããŠãããšãKiro ããã³ãã³ãå®è¡ã®èš±å¯ãæ±ããããã®ã§ãåé¡ã®ãªãã³ãã³ããã©ãã確èªããªããèš±å¯ãäžããŠãããŸããäžã€äžã€ã®ã¿ã¹ã¯ã¯å°ãããšããæ°ãå€ããšãªããªãçµãããŸãããç²ãããããªãçæAIã«å¯ŸããŠå®è¡ã®æ§åãèŠãªããèš±å¯ãäžãããäœåºŠãåãåŠçãè¡ããããªç¶æ
ã§è©°ãŸã£ãŠããŸã£ãå Žåã«ã¢ããã€ã¹ãããããããã¡ãã®ã»ãããžã°ã£ãŠããŠããŸããããã§ãã Kiro ãšæ Œéããããš 6 æéãããããã³ã¢ã¿ã¹ã¯ããã¹ãŠçµäºããŸãããã¿ã¹ã¯ãé²ããäžã§æ°ã¥ããã³ãã¯ã Kiroã®ææ¡ãéµåã¿ã«ããããªãããš ã§ãã è©°ãŸã£ãŠããŸã£ãå Žåã«ã¯ã以äžã®ãããªå
·äœçãªæç€ºãåºãã®ãæ©æè§£æ±ºã®è¿éã§ããïŒ ãç¶æ³ã詳现ã«ãããããã«ãããã°æã远å ããŠãã ããã ããã®ãšã©ãŒã®åå ãæŽããããªèª¿æ»åŠçã远å ããŠãã ããã ãŸãã«ãAIããéšäžããšããŠé©åã«ãªãŒãããæèŠã§ããã README.mdã®ã¢ããããŒã ã¿ã¹ã¯ã«ããäœæ¥äžã«ã詳现ãªã³ãã³ãã®å®è¡ãã©ã¡ãŒã¿çãå®çŸ©ãããããäžå
·åã§ä¿®æ£ãããããéäžä»æ§å€æŽã§ãã©ã¡ãŒã¿è¿œå ãå¿
èŠãšãªã£ããã§ãåœåã«äœæããããã¥ã¡ã³ããšã¯éã£ã圢ã«ãªã£ãŠããããšããããŸãã®ã§ã README.md ãçŸåšã®åœ¢ã«ã¢ããããŒãããããã« Kiro ã«ãé¡ãããŸãã ããã§ãç°å¢ã«ãããã€ããæºåãæŽããŸããã ããã〠ã³ãŒãã¯æžãäžãã£ãŠãåäœãçµåãã¹ããæåãããã®ã®ãå®éã«åäœãããã¯å¥ã§ãã ããã ãäžå¯§ã«æ€èšããŠã¿ã¹ã¯ãåããŠãå®ç°å¢ã§åäœã確èªããŠããããã§ã¯ãªãã®ã§ã©ãããŠãäžå
·åã¯çºçããŠããŸããŸãã æŽæ°ããã README.md ãã¡ã€ã«ãå
ã«ãããã€ããŸãã ç°å¢å€æ°ãŸãã¯åŒæ°ã«ãã©ã¡ãŒã¿ãå
¥ããŠã ./deploy.sh ãå®è¡ æåããŸããïŒ å®è¡æã®ãã°ãèŠããšãïŒã¹ã¯ãªãŒã³ã·ã§ããã§ã¯éäžåããŠããŸããïŒå¿
èŠãªãªãœãŒã¹ã¯ãããã€ãããããã«èŠããŸãã ã¹ã¯ãªããã®æç€ºã«åŸã£ãŠãSecrets Manager ã® ããŒãšãSNSã®Subsctiptionã®æ¿èªãè¡ããŸãã Secrets Manager ã® Secret å€ã Spamhaus ããååŸããããŒã«çœ®ãæãã ã¡ãŒã«ã確èªã㊠Subscriptionãæ¿èªãã ãµãã¹ã¯ãªãã·ã§ã³ã®ã¹ããŒã¿ã¹ã “ç¢ºèªæžã¿” ã«ãªãã°OK ããã§æºåå®äºã§ãã ä»åã¯ãããŸã§ã 次åã¯ãåäœç¢ºèªãšä¿®æ£ãè¡ããŸãã
ããã«ã¡ã¯ãSCSKã§ ãã¯ãã«ã«ãšã¹ã³ãŒããµãŒãã¹ ãæ
åœããŠããå
çã§ãã èªç€Ÿã®ãµãŒãã¹ã®æ
å ±ãªã©ã ã¡ãŒã«ã§é
ä¿¡ãããŠããæ¹ã¯ããªãå€ãã®ã§ã¯ãªãã§ããããã ãã㪠ã¡ãŒã« é
ä¿¡ããä»äºã®äžéšãšãããŠããäººã®æ©ã¿ã®äžã€ããèªç€Ÿã®é
ä¿¡ã·ã¹ãã ãSPAMé
ä¿¡è
ãšããŠããŒã¯ãããŠããŸã£ãŠé
ä¿¡äžèœã«ãªã£ãŠããŸãããšã§ãã ãã¡ããããã«ç»é²ãããªãããã«äžéã¡ãŒã«ãæããªãããã«ã¡ãŒãªã³ã°ãªã¹ãã®å¯Ÿè±¡ãã¡ã³ããã³ã¹ããããDKIMãDMARCãªã©ã®ä»çµã¿ãå°å
¥ãããã¯ãã¡ããè¡ã£ãŠãããšæããŸããããã®äžã§ãã©ãããŠãç»é²ãããŠããŸã£ãå Žåã«æ°ãä»ããªããšäœã®ã¢ã¯ã·ã§ã³ãåãããšãã§ããŸãããæ¯æ¥äººæãã€ãã£ãŠç¢ºèªããã®ã倧å€ãªã®ã§ãAWSã§èªååããŠã¿ãããšããããšã«ããŸããã æ¬èšäºïŒåç·šïŒã§ã¯ãçæAIãæŽ»çšããŠèŠä»¶å®çŸ©ããèšèšãå®è£
èšç»ãç«ãŠããŸã§ã解説ããŸãã äºåèª¿æ» èªåã®IPã¢ãã¬ã¹ããSpamhaus ã® SBL (Spamhaus Blocklist) ã«ç»é²ãããŠãããã©ããã¯èª°ã§ã確èªã§ããŸãã Attention Required! | Cloudflare check.spamhaus.org â»åçšå©çšã«ã¯ãFair Use Policyã«åºã¥ãã©ã€ã»ã³ã¹ãå¿
èŠã§ãã Spamhaus DNS Blocklists Fair Use Policy www.spamhaus.org 調æ»ãé²ããŠè¡ã£ãŠãããã£ãããšããã¡ã€ã«ã«éå€ã«ãŸãšããŠãããŸãã Kiro ã«èŠæ±ãäŒãã ãŸãšãããã¡ã€ã«ãšããããæŽçããŠãã£ãŠã»ããããšã䜿ã£ãŠãããããèšèªãç°å¢ãæŽçããŸãã # Spamhaus ã«ç»é²ãããŠããå Žåã«éç¥ãããä»çµã¿ãAWSãµãŒãã¬ã¹ã§æ§ç¯ ## ç®ç ãã€ã¬ã¯ãã¡ãŒã«éä¿¡ãµãŒãã¹ãéå¶ããŠããŸãã Spamhausãšããã¹ãã ã¡ãŒã«ãéä¿¡ãããŠãã IP ã¢ãã¬ã¹ãªã©ã®ãªã¹ãã管çããŠããå£äœãããã®ã§ããããã®å£äœã管çããŠããSBL (Spamhaus Blocklist) ã«èªåã®IPã¢ãã¬ã¹ãç»é²ãããŠããŸã£ãå Žåã«ã¯ãemail ã«éç¥ãæ¥ãããã«ãããã§ãã ## 仿§èŠä»¶ 調æ»ã¯ç°¡åã«ãã€å®äŸ¡ã«è¡ãããã®ã§ãEventBridge ã§å®æç(1æéã«äžå, ãã©ã¡ãŒã¿ã§å€æŽå¯èœ)ã«èªåã®äœ¿çšããŠãã IP ã¢ãã¬ã¹(è€æ°)ã Lambda 颿°ã䜿çšã㊠nslookup ã³ãã³ãã䜿çšã㊠SBL (Spamhaus Blocklist) ããã®å¿çã確èªããŠãç»é²ãããŠããå Žåã«ã¯ Amazon SNS çµç±ã§ email ã§ç®¡çè
ã«éç¥ããã·ã¹ãã ãæ§ç¯ããŸãã - Lambda颿°ã®èšèªã¯ Python 3.13 ãšããŸãã - CloudFormationã䜿çšããŠãããã€ããŸãã - CloudShell ãããããã€ããŸãã - äœæããããªãœãŒã¹ã®ãã¡ãã¿ã°ä»ãå¯èœãªãªãœãŒã¹ã«ã¯ã³ã¹ãé
åã¿ã°ãšã㊠Cost: <æå®ãããã³ã¹ãé
åã¿ã°å> ãä»ããŸãã - åãåããã«å¿
èŠãª Spamhaus ããæãåºãããDQSããŒ(Data Query Service Key ããµãŒãã¹ãžã®ã¯ãšãªã誰ããã®ãã®ãç¹å®ããããŒã®ãããªãã®ãæåå)㯠Secrets Manager ããååŸãã ã- CloudFormation ãã³ãã¬ãŒãã§ã¯ãSecrets Managerã®Stringå€ãšããŠã¯ "CHANGE-YOUR-DQS-KEY-LATER" ãšããŠäœæãããããã€åŸå¥é倿Žããããšãšããã - ãã©ã¡ãŒã¿ãšããŠä»¥äžã®å€ãæå®ããŸã - IP ã¢ãã¬ã¹(åæ°ãããã¯è€æ°) - 調æ»éé n æééé(æéåäœãããã©ã«ãã¯1æééé) - ãªãœãŒã¹ã® ã¿ã°å Cost ã«ã€ãã ã³ã¹ãé
åã¿ã°å> - ãªãœãŒã¹ã®Nameã¿ã°ã® Prefix ãšããŠä»äžããã prefix (10æå以å
-é·ããšå¶çŽã«åŒã£ããã£ãŠãšã©ãŒã«ãªããªãœãŒã¹ãåºããã) DNSåãåããã®ä»çµã¿ãªã®ã§å€§äžå€«ã ãšæããŸãããé£ç¶ããŠåãåãããè¡ããšãã¡ããã¹ãããŒèªå®ãããŠããŸã£ãŠã¯å°ãã®ã§ãè€æ°IPã¢ãã¬ã¹ã«å¯Ÿããåãåããã®å Žåã«ã¯ 1ç§ åŸ
ã¡ãå
¥ããããšã«ããŸã ## DQS Keyã®åœ¢åŒ abcdefghijklmnopq123456789 ã®ãããªåœ¢åŒã§ãã ## DQS Keyã䜿çšããåãåãã nslookup [éé IP].[DQS_KEY].[ãªã¹ãå].dq.spamhaus.net ã§ãããä»å㯠SBL(Spamhaus Blocklist)ã察象ãªã®ã§ã ```bash nslookup [éé IP].[DQS_KEY].sbl.dq.spamhaus.net ``` ãšãªããŸãã ### ãµã³ãã«å¿ç #### OKå¿çäŸ(SPAM IPãšå€å®ãããŠããªã) ```bash $ nslookup 109.62.249.54.[DQS_KEY].sbl.dq.spamhaus.net Server: 127.0.0.53 Address: 127.0.0.53#53 ** server can't find 109.62.249.54.[DQS_KEY].sbl.dq.spamhaus.net: NXDOMAIN ``` #### NGå¿çäŸ(SPAM IPãšå€å®ãããŠãã) ```bash $ nslookup 2.0.0.127.[DQS_KEY].sbl.dq.spamhaus.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: 2.0.0.127.[DQS_KEY].sbl.dq.spamhaus.net Address: 127.0.0.2 ``` ## ãããã¯ã®ãªã¿ãŒã³ã³ãŒã åãããã¯ãªã¹ãã®ãªã¿ãŒã³ã³ãŒã Spamhausã®DNSBLã§ã¯ãç°ãªããªã¹ãã«å¯ŸããŠç°ãªããªã¿ãŒã³ã³ãŒãã䜿çšãããŸãïŒ ãªã¹ã ãªã¿ãŒã³ã³ãŒã æå³ SBL 127.0.0.2 ã¹ãã éä¿¡æº CSS 127.0.0.3 äœè©äŸ¡éä¿¡è
XBL 127.0.0.4-127.0.0.7 ä¹ã£åããããã¹ã PBL (ISPæäŸ) 127.0.0.10 ISPãæäŸããããªã·ãŒãªã¹ã PBL (Spamhaus) 127.0.0.11 Spamhausãæšå®ããããªã·ãŒãªã¹ã DROP 127.0.0.9 æªæã®ããçµç¹ïŒSBLãšäœµçšïŒ # åèè³æ spamhaus_pre_survey.ini ã«ãäºå調æ»ããçµæãé
眮ããŸããã ãã®ããã¹ãããKiro ã«äŒããŸããSpec Mode ãéžæããã®ãå¿ããã«ã ãã°ããèããŠãèŠä»¶ããã¥ã¡ã³ã(requirements.md)ãäœæããŠãããŸããçšèªéãäœæããŠãããã®ãåããŠãã®ããã¥ã¡ã³ããèŠãããšã«ãªã人ã«ãšã£ãŠã¯å¬ããã®ãšãæ¥æ¬ã®ã·ã¹ãã ã®ä»æ§æžãªã©ã«ã¯ããŸãæžãããªã ãŠãŒã¶ãŒã¹ããŒãªãŒ ãæžãããŠããã®ãå¬ããã§ãããããã¯èª°ãã©ããããããã®ã·ã¹ãã ã ãšããããããããŸããåŸæ¥èŠããšãã« âãã®æ©èœã¯äœã®ããã«å
¥ã£ãŠããã ã£ãïŒâ ãšãã倿ãããéã«ãæçšã§ãã è±èªã§äœæããŠãããŸãããLLMãªã®ã§ãæ¥æ¬èªã«ç¿»èš³ããŠãããããšãã§ããŸãããã£ãããªã®ã§å¥ãã¡ã€ã«ã§ç¿»èš³ãããŠããããŸããã è±èªã𿥿¬èªã® requirements ãèŠæ¯ã¹ãŠããŠæ°ãä»ããŸãããè±èªã®æ¹ã¯ WHEN …, The System SHALL … ãšãã圢åŒã«ãªã£ãŠããŠãããããšã誰ããã©ããªãšãã«ããã®ãããããããæ°ãããŸããæ¥æ¬èªã§ããã®èš³æãªã®ã§ã…ã®ãšãã·ã¹ãã 㯅ããªããã°ãªããªã ãšãªãã®ã§ãããèšæ³ãçžããªãéãæ¥æ¬èªã§ã¯äž»èªããªããŠãéåæããªãã®ã§ãåéãããªãããã«èªãã®ã¯ãªããªã倧å€ãªããšããããŸãããèšæ³ãã¯ã£ããããŠããè±èªçã®ã»ãããããããããããããŸãããããšã “SHALL” “WHEN” “THE System” ã倧æåã«ãªã£ãŠããŠèŠããããã§ãã ç¡çããæ¥æ¬èªã§ã䜿ãããšããã°ã WHEN ã¬ãŒããªãããè¶
éãçºçããã, ã·ã¹ãã SHALL exponential backoff ããžãã¯ã§ãªãã©ã€ããã ãšãã«ãããã”ã®ãšã” “ã·ã¹ãã 㯔 “ããªããã°ãªããªã”ã倪åã«ãããšãã§ãããããæ¥æ¬èªã ãšå°ãäžèªç¶ãªè¡šçŸã«ãªãããšããããŸãããæ§é ãçè§£ããã«ã¯è±èªçã®æ¹ãé©ããŠãããšæããŸããã èŠä»¶ããã¥ã¡ã³ããã¬ãã¥ãŒããŠãOKãªããMove to Design phase ãã¿ã³ã§æ¬¡ã«é²ã¿ãŸãã èšèšããã¥ã¡ã³ãã®äœæ èŠä»¶ããã¥ã¡ã³ããããKiro ã èšèšããã¥ã¡ã³ã(Design.md)ãäœæããŠãããŸãã èšèšããã¥ã¡ã³ãã§ã¯ãããã¹ãããŒã¹ã§å³ãèšèŒããäºã®ã§ãã Mermaid èšæ³ãšããèšæ³ã§ã¢ãŒããã¯ãã£å³ãèšè¿°ããŠãããŸãã Kiro ã« Markdown Mermaid å³ã® preview æ©èœæ¡åŒµã远å ã㊠preview ããããšã§å³ãšããŠè¡šç€ºããŠã¿ãããšãã§ããŸãã ããã¹ãã ãã®èª¬æã ãšãã®å³ãé ã«æµ®ãã¹ãã®ã¯é£ããã®ã§ãMermaidå³åããŠãããã®ãããããã§ããïŒ ãããèŠãã ãã§ããã£ãæ°ã«ãªããŸãã èšèšããã¥ã¡ã³ã(design.md) ãèŠãŠè¶³ããªããšæã£ããšãããããã°ã远å ãæç€ºããŸããåé¡ãªããã° Move to implementation plan ãã¿ã³ã§æ¬¡ã®å·¥çšã«é²ã¿ãŸãã èšèšããã¥ã¡ã³ããå
ã«ãå®è£
èšç»(tasks.md) ãäœæããŠãããŸããã ããã§ã¯ã ã³ã¢éšåã®ã¿ã®ã¿ã¹ã¯ãå®è£
ããããå
šã¿ã¹ã¯ãé ã«å®è£
ããŠããã®ããéžæã§ããŸãã å
šã¿ã¹ã¯ã®å®è¡ã«ã¯ãããªãã«æéããããã®ã§ããã£ãšäœããããšãã¯ã³ã¢éšåã®ã¿(Keep optional tasks(faster MVP))ãéžæããŸãã åŸããå
šéšå®è¡ãããåå¥ã«å®è¡ããããã§ããã®ã§ããã®æç¹ã§ã©ã¡ããæ±ºãŸã£ãŠããŸããšããããã§ã¯ãããŸããã®ã§å®å¿ããŠãã ããã ä»åã¯ãããŸã§ã