æ¬èšäºã¯ã2025幎8æ6æ¥ã«å
¬éããã Amazon QuickSight BIOps â Part 2: Version control using APIs ã翻蚳ãããã®ã§ãã翻蚳㯠ProServe Data Analytics Consultant ã®è¥¿æŸ€ ç¥ä»ãæ
åœããŸããã ãã®èšäºã§ã¯ãAPIé§åã®ããžãã¹ã€ã³ããªãžã§ã³ã¹ãªãã¬ãŒã·ã§ã³ãºïŒBIOpsïŒãã¬ãŒã ã¯ãŒã¯ã®æŠèŠã説æããŸãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãæäœæ¥ã«ããè² è·ã軜æžããAmazon QuickSightã«ãããã©ã€ããµã€ã¯ã«ç®¡çãæ¹åããããšãç®çãšããŠããŸãã ããžãã¹ã€ã³ããªãžã§ã³ã¹ (BI) ç°å¢ãè€éåããäžã§ãããã·ã¥ããŒããããŒã¿ã»ããããããã€ãšãã£ãäœæ¥ãæåã§ç®¡çããŠãããšãçµæã®äžæŽåãããŒãžã§ã³ã®ãããã³ã©ãã¬ãŒã·ã§ã³ã®å¹çäœäžãšãã£ã課é¡ã«ã€ãªãããã¡ã§ããããŒã¿ããåŸãããã€ã³ãµã€ãã®æäŸãã¹ã±ãŒã«ãããã¬ããã³ã¹ã匷åãããããŠéçºãQAïŒå質ä¿èšŒïŒãæ¬çªãšãã£ãåç°å¢ã®ä¿¡é Œæ§ãé«ããäžã§ãèªååã¯æ¥µããŠéèŠã«ãªããŸãã DevOps ã¯ããœãããŠã§ã¢éçºãš IT éçšãçµ±åããããšã§ãããªããªãŒãå éããä¿¡é Œæ§ãåäžãããããã®èãæ¹ã§ãããœãããŠã§ã¢ã®ã¯ãŒã¯ãããŒãåçåããã¹ã±ãŒã«ãããããã«ãDevOps ã§ã¯ä»¥äžã®ãã©ã¯ãã£ã¹ãéèŠãããŸãã ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšç¶ç¶çããªããªãŒïŒCI/CDïŒ Infrastructure as Code (IaC) ãš Assets as Code (AaC) èªåå ã¢ãã¿ãªã³ã° ã³ã©ãã¬ãŒã·ã§ã³ããŒã«ïŒGitãJiraãSlackãªã©ïŒ BIOps ã¯ããããã®ååã BI ã®ã¯ãŒã¯ãããŒã«å¿çšãããã®ã§ããã¢ã»ããã®ããã¯ã¢ãããããŒãžã§ã³ç®¡çããããã€ãèªååããããšã§ãBI ããŒã ã¯ããã·ã¥ããŒããããŒã¿ã»ãããåæããäžè²«æ§ãé«ãããã¬ãŒãµããªãã£ãåäžãããããå¹ççã«ç®¡çã§ããããã«ãªããŸãã ãã®ããã°ã·ãªãŒãºã§ã¯ãçæ§ã QuickSight ã§ BIOps ã®ãã©ã¯ãã£ã¹ãå®è£
ããããã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ã BIOps ãå®çŸããããã®æ¹æ³ã«ã€ããŠè§£èª¬ããŸãã ããŒã1 ã§ã¯ãããŒã³ãŒãã§ã®ããŒãžã§ã³ç®¡çãšã³ã©ãã¬ãŒã·ã§ã³ã«é¢ããã¬ã€ããæäŸããŸããããã®èšäºã§ã¯ãQuickSight API ã䜿çšããŠããŒãžã§ã³ç®¡çãšããŒã«ããã¯ãèªååããBI ã¢ã»ããã®ããã® CI/CD ãã€ãã©ã€ã³ãæ§ç¯ããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãããã㊠ããŒã3 ã§ã¯ãã¯ãã¹ã¢ã«ãŠã³ãããã³ãã«ãç°å¢ã§ã®ãããã€ãç«¶åã®æ€åºãšã¬ããã³ã¹ã«ã€ããŠåãäžããŸãã ãœãªã¥ãŒã·ã§ã³ã®æŠèŠ ãã®èšäºã§ã¯ãQuickSight ã«ããã API ããŒã¹ã® BIOps ãœãªã¥ãŒã·ã§ã³ã®æŠèŠã解説ããããŒã ãããã°ã©ã ã«ãã£ãŠå¶åŸ¡ããææ³ã§ BI ã¢ã»ããã®ããŒãžã§ã³ç®¡çããããã€ãã¬ããã³ã¹ãèªååããæ¹æ³ã玹ä»ããŸããBI ãšã³ãžãã¢ãDevOps ãªãŒãããããŠãã©ãããã©ãŒã 管çè
ã®æ¹ã
ã¯ããã®èšäºã§ç޹ä»ããã³ãŒãããŒã¹ã®ãã©ã¯ãã£ã¹ãå®è·µããããšã§ãBI ã¯ãŒã¯ãããŒãã¹ã±ãŒã«ãããããšãã§ããŸãã åææ¡ä»¶ ãã®ãã¥ãŒããªã¢ã«ãé²ããã«ãããã以äžã®åææ¡ä»¶ãå¿
èŠã§ãã AWS ã¢ã«ãŠã³ã 以äžã® AWS ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹æš©: AWS CloudFormation Amazon QuickSight Amazon Simple Storage Service (Amazon S3) AWS Identity and Access Management (IAM)ïŒQuickSight ã® Template , Assets-as-Bundle , Create , Update , Delete , Describe API ãå©çšã§ããæš©éãå¿
èŠã§ãã Python ã®åºæ¬çãªç¥èïŒPython 3.9 以éãæšå¥šïŒ SQL ã®åºæ¬çãªç¥è ææ°ããŒãžã§ã³ã® AWS Command Line Interface (AWS CLI) ã ã€ã³ã¹ããŒã« æžã¿ã§ããããš Boto3 ãã€ã³ã¹ããŒã«æžã¿ã§ããããš ãŸãããã®ãã¥ãŒããªã¢ã«ãå§ããåã«ãã·ãªãŒãºã® ããŒã1 ã確èªããŠããããšããå§ãããŸãã QuickSight ã¢ã»ãã API ã®æŠèŠ QuickSight ã¯ãBI ã¢ãŒãã£ãã¡ã¯ãã管çããããã® API ããŒã¹ã®ã¢ãããŒããè€æ°æäŸããŠããŸããããŒãžã§ã³ç®¡çããããã€ã®èªååãããã¯ã¢ãããšãã£ãç®çã«å¿ããŠããããã匷ã¿ã®ç°ãªã API ã䜿ãåããããšãã§ããŸãã äž»ãªã¢ãããŒãã¯ä»¥äžã®3ã€ã§ãã Template API (æ§æ¥ã®æ¹æ³) Assets-as-Bundle API (æ°ããæ¹æ³) Describe-Definition API ããã3ã€ã®ã¢ãããŒãã¯ãããããããã·ã¥ããŒããåæãããŒã¿ã»ãããªã©ãããã°ã©ã ã§æ±ãããšãå¯èœã«ããŸãããå¯èŠæ§ãå¶åŸ¡æ§ããããŠææ°ã® CI/CD ã¯ãŒã¯ãããŒãšã®èŠªåæ§ã«ãããŠå€§ããç°ãªããŸãã Template API ããã³ãã¬ãŒããããŒã¹ã®ã¢ãããŒãã¯ã CreateTemplate ã CreateDashboard ãšãã£ã API ãå©çšããAWS ã¢ã«ãŠã³ãã AWS ãªãŒãžã§ã³ããŸããã§ QuickSight ã®ã¢ã»ãããç§»è¡ããããã®åŸæ¥ããã®ææ³ã§ãããåŸæ¥ãããã³ãã¬ãŒããã¯ããã·ã¥ããŒãã®ããã¯ã¢ããããä»ã®ç°å¢ãžã®ã¢ã»ããã®ãããã€ã«äœ¿çšãããŠããŸãããåæã®å®è£
ã§ã¯ãããã³ãã¬ãŒããã®äžèº«ã¯äžéæã§ãBIããŒã ã«ãšã£ãŠã¯å®å
šãªãã©ãã¯ããã¯ã¹ã§ããããããã DescribeTemplateDefinition API ã®ç»å Žã«ãããããŒã ã¯ããã³ãã¬ãŒããã®JSON å®çŸ©ãæœåºããŠãå
容ã®ç¢ºèªãããã¯ã¢ãããè¡ããããã«ãªããŸããããšã¯èšããããã³ãã¬ãŒããã¯æ°ããä»ã®æ¹æ³ã«æ¯ã¹ãŠæè»æ§ã«æ¬ ããå埩çãªéçºããã£ãŒã«ãã¬ãã«ã§ã®ç·šéããããã¯ããŒãžã§ã³ç®¡çãšãã£ãã¯ãŒã¯ãããŒã«ã¯æé©åãããŠããŸããã ããã§ããGit ãªããžããªã S3 ãã±ãããšãã£ãå€éšã®ããŒãžã§ã³ç®¡çã·ã¹ãã ãã¹ãã¬ãŒãžãã»ããã¢ããããã«ãQuickSight ç°å¢å
ã«ããã¯ã¢ãããä¿åããããšèãã BI ããŒã ã«ãšã£ãŠã¯ãããã³ãã¬ãŒããã¯äŸç¶ãšããŠæçšã§ãããã®ããã補åå
ã§ã®ã¢ã»ãã管çãäžå¿ã«è¡ãããããŒã ã«ãšã£ãŠãããã³ãã¬ãŒããã¯æè»œãªéžæè¢ãšãªããŸãã QuickSight ã¢ã»ããã«é¢ãã Template API ã®å
šãªã¹ãã¯ä»¥äžã®éãã§ãã CreateTemplate DeleteTemplate DescribeTemplate DescribeTemplateDefinition UpdateTemplate UpdateTemplatePermissions Assets-as-Bundle API CI/CDãã€ãã©ã€ã³ãå°å
¥ããããIaC ãå®è·µãããããŠããããŒã ã«ãšã£ãŠãã¢ãã³ãª Assets-as-Bundle API ãš Describe-Definition API ã¯ãããé«ãéææ§ãæè»æ§ããããŠå¶åŸ¡æ§ããããããŸãããã®ããã仿¥ã®å€ãã®ãšã³ã¿ãŒãã©ã€ãºåãã®ãŠãŒã¹ã±ãŒã¹ã«ãããŠæšå¥šãããã¢ãããŒããšãªã£ãŠããŸãã Assets-as-Bundle API ã¯ãããã¢ãžã¥ãŒã«åãããããŒã¿ããªãã£ã®é«ããããã€ã®éžæè¢ãæäŸããŸãããã® API ã¯ãQuickSight ã®ããã·ã¥ããŒããåæããããŠãããã«é¢é£ããã¢ã»ããïŒããŒã¿ã»ãããããŒã¿ãœãŒã¹ãããŒãããã©ã«ãïŒããZIP ã¢ãŒã«ã€ãããŸã㯠AWS CloudFormation ãã³ãã¬ãŒããšããŠãšã¯ã¹ããŒãããŸãããšã¯ã¹ããŒããããã¢ãŒã«ã€ããå±éããã°ãã¢ã»ããã®ã¡ã¿ããŒã¿ã JSON ãã¡ã€ã«ãšããŠç¢ºèªããããšã¯å¯èœã§ãããããã«ã¯æéããããããã现ããããŒãžã§ã³ç®¡çã«ã¯çæ³çã§ã¯ãããŸãããããã«ãè€æ°ã®ããã·ã¥ããŒãããšã¯ã¹ããŒãããéã«ã¯ãè€æ°ã®ãã³ãã«éã§ããŒã¿ã»ãããéè€ããåé·ãªåœ¢ã§å«ãŸããŠããŸãå¯èœæ§ããããŸããQuickSight ã®ã€ã³ããŒãåŠçã¯ãããã®éè€ãé©åã«åŠçããæå³ããªãäžæžããé²ãã§ãããŸããããã¯ããã®ææ³ã¯ã詳现ãªããŒãžã§ã³ç®¡çãšããããã¯ãé¢é£ã¢ã»ããããŸãšããŠãããã€ããçšéã«é©ããŠããŸãã ãœãŒã¹ã¢ã«ãŠã³ããããã³ãã«ãã¡ã€ã«ããšã¯ã¹ããŒããããžã§ãã®éå§ã远跡ã詳现確èªã«ã¯ã以äžã® API ã䜿çšããŸãããã³ãã«ãã¡ã€ã«ãšã¯ãåŒã³åºãå
ãæå®ããã¢ã»ãããšããªãã·ã§ã³ã§ãã®ã¢ã»ãããäŸåãããã¹ãŠã®ãªãœãŒã¹ãå«ã ZIP ãã¡ã€ã«ïŒæ¡åŒµå㯠.qs ïŒã®ããšã§ãã StartAssetBundleExportJob â ã¢ã»ãããã³ãã«ãã¡ã€ã«ããšã¯ã¹ããŒãããããã®éåæ APIã§ãã DescribeAssetBundleExportJob â ãšã¯ã¹ããŒããžã§ãã®ã¹ããŒã¿ã¹ãååŸããããã®åæ APIã§ããæåããå Žåãã¬ã¹ãã³ã¹ã«ã¯ãã³ãã«ãååŸããããã®çœ²åä»ã URL ãå«ãŸããŸãã ListAssetBundleExportJobs â éå»ã®ãšã¯ã¹ããŒããžã§ããäžèŠ§è¡šç€ºããããã®åæ API ã§ãããªã¹ãã«ã¯ãéå»15æ¥éã®å®äºãããžã§ããšå®è¡äžã®ãžã§ããäž¡æ¹å«ãŸããŸãã 以äžã® API ã¯ããã³ãã«ãã¡ã€ã«ãå
¥åãšããŠåãåããã¿ãŒã²ããã®ã¢ã«ãŠã³ãã§ã¢ã»ãããæ°èŠäœæãŸãã¯æŽæ°ããã€ã³ããŒããžã§ãã®éå§ã远跡ã詳现確èªãè¡ããŸãã StartAssetBundleImportJob â ã¢ã»ãããã³ãã«ãã¡ã€ã«ã®ã€ã³ããŒããéå§ããããã®éåæ API ã§ãã DescribeAssetBundleImportJob â ã€ã³ããŒããžã§ãã®ã¹ããŒã¿ã¹ãååŸããããã®åæ API ã§ãã ListAssetBundleImportJobs â éå»ã®ã€ã³ããŒããžã§ããäžèŠ§è¡šç€ºããããã®åæ API ã§ãããªã¹ãã«ã¯ãéå»15æ¥éã®å®äºãããžã§ããšå®è¡äžã®ãžã§ããäž¡æ¹å«ãŸããŸãã Describe-Definition API `Describe-Definition API` ã¯ãåã¢ãŒãã£ãã¡ã¯ãã®å
éšç㪠JSON æ§é ããééçãã€ãã£ãŒã«ãã¬ãã«ã®ãã©ãŒãããã§å
¬éããŸãããã®å®çŸ©ãã¡ã€ã«ã¯ Git ã§è¿œè·¡ãããããã«ãªã¯ãšã¹ããéããŠã¬ãã¥ãŒãããã察å¿ãã Update API ã§æŽæ°ãããããããšãå¯èœã§ãããã®ãããCI/CD ãã€ãã©ã€ã³ã IaC ãã©ã¯ãã£ã¹ãšã®çµ±åã«æé©ãªææ³ãšèšããŸããäž»ãªãã¬ãŒããªãã¯ãããŒã¿ã»ãããããŒã¿ãœãŒã¹ãšãã£ãäŸåé¢ä¿ãåå¥ã«æ±ãå¿
èŠãããç¹ã§ãããããã¯ããã·ã¥ããŒããåæã®å®çŸ©ã«ã¯èªåã§ãã³ãã«ãããªãããã§ãã Describe-Definition API ã«ã¯ä»¥äžãå«ãŸããŸãã DescribeDataSource DescribeDataSet DescribeAnalysisDefinition DescribeDashboardDefinition å®éã®çŸå Žã§ã¯ãå€ãã® BI ããŒã ã¯äž¡æ¹ã®ã¢ãããŒãã䜵çšããŠããŸããã¢ã»ããããŸãšããŠãããã€ããéã«ã¯ Assets-as-Bundle ãããããŠããã现ããããŒãžã§ã³ç®¡çãå埩éçºã«ã¯ Describe-Definition ãå©çšããããšãã£ã䜿ãåãã§ããããããã® API ããã€äœ¿ãã¹ããçè§£ããããšã§ãã¬ããã³ã¹ã®åŒ·åãç£æ»æ§ã®åäžããããŠç°å¢éã§ã®ã¹ã ãŒãºãªã¢ã»ããã®ç§»è¡ãå¯èœã«ãªããŸãã åææ³ã®æ¯èŒ 以äžã®è¡šã¯ãããã3ã€ã® API ææ³ã®äž»ãªãŠãŒã¹ã±ãŒã¹ãšããŒã¿ã®ä¿ç®¡å ŽæããŸãšãããã®ã§ãã ææ³ äž»ãªãŠãŒã¹ã±ãŒã¹ çšé ä¿ç®¡å Žæ Template API 補åå
ã§ã®ããã¯ã¢ãããã¬ã¬ã·ãŒãªããã〠UI äžå¿ã®ããŒã ãã·ã³ãã«ãªããã¯ã¢ãã QuickSight å
Describe-Definition API ãã现ããããŒãžã§ã³ç®¡çãšèªåå CI/CDãGit ãšã®é£æº Git, Amazon S3, ã³ãŒããªããžã㪠Assets-as-Bundle API äŸåé¢ä¿ãå«ããç°å¢åäœã®ããã〠éçºç°å¢ããæ¬çªç°å¢ãžã®å±éãäžæ¬ç§»è¡ Amazon S3, ããŒã«ã«ã®ZIPã¢ãŒã«ã€ã QuickSight APIã«é¢ããããè©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ã QuickSight API ãªãã¡ã¬ã³ã¹ ã Boto3 QuickSight ããã¥ã¡ã³ã ããåç
§ãã ããã BI ã¢ãŒãã£ãã¡ã¯ãã®ããŒãžã§ã³ç®¡çã«ããããã¹ããã©ã¯ãã£ã¹ ãã以éã®ã»ã¯ã·ã§ã³ã§ã¯ãåäžã¢ã«ãŠã³ãå
ã§ã®ããã·ã¥ããŒãã®ããŒãžã§ã³ç®¡çã«é¢ãããã¹ããã©ã¯ãã£ã¹ã解説ããŸãã QuickSight ã«ãããŠããããã·ã¥ããŒããã¯ä»ã®äººãèŠããããã«èšå®ãããããåæãã®ã¹ãããã·ã§ããã§ããäžæ¹ããåæãã¯ãBI ããŒã ãéçºãæ¹åãç¹°ãè¿ãããã®äœæ¥çšã¢ã»ããã§ããQuickSight ã® UI äžã§ã¯ãããŒãžã§ã³ç®¡çæ©èœã¯ãããã·ã¥ããŒããã«å¯ŸããŠã®ã¿æäŸãããŠããŸããããã¯ããåæãããšã³ããŠãŒã¶ãŒã«å
¬éãããããšã¯ãªããåžžã«éçºäžã®ãã®ãšèŠãªãããŠããããã§ãã ãããã Describe-Definition API ã®ãããªããã°ã©ã çãªææ³ãçšãããšãåæã®åèŠçŽ ïŒãã£ã«ã¿ãŒãèšç®ãã£ãŒã«ããããžã¥ã¢ã«ããã©ã¡ãŒã¿ãŒãªã©ïŒããã¢ãžã¥ãŒã«åãããã³ãŒããããã¯ãšããŠæ±ãããšãã§ããŸããããã«ãããããŒã ã¯æ§é åãããã³ãŒãé§åã®æ¹æ³ã§ãåæãã管çããããŒãžã§ã³ãèšé²ããŠããããšãå¯èœã«ãªããŸããçµæãšããŠãè€æ°ã®äœæè
ã䞊è¡ããŠå
±åäœæ¥ãé²ããããããã«ãªããŸãããã®ããã Describe-Definition API ãå©çšããéã«ã¯ããåæãèªäœã®ããŒãžã§ã³ç®¡çãéèŠãªãã©ã¯ãã£ã¹ã§ãããšæã
ã¯èããŠããŸãã Template API ãå©çšããããŒãžã§ã³ç®¡ç 以åã®ããã°èšäºã BIOps: Amazon QuickSight object migration and version control ãã§ã¯ããã³ãã¬ãŒãããŒã¹ã®ã¢ãããŒããçšã㊠QuickSight ã®ããã·ã¥ããŒãã®ããŒãžã§ã³ç®¡çãå®è£
ããæ¹æ³ã解説ããŸããããã®èšäºã®å·çæç¹ã§ã¯ãããã³ãã¬ãŒãããããããã·ã¥ããŒããã®ããŒãžã§ã³ç®¡çãè¡ãããã®å¯äžå©çšå¯èœãªã¡ã«ããºã ã§ããã æ¬¡ã®å³ã¯ããã®ãœãªã¥ãŒã·ã§ã³ã§çšããã¢ãŒããã¯ãã£ã瀺ãããã®ã§ãã ãã®ã¯ãŒã¯ãããŒã¯ä»¥äžã®ã¹ãããã§æ§æãããŸãã ãŸããBI éçºè
ããåæããäœæããããã«åºã¥ããŠããã³ãã¬ãŒãããä¿åããŸããããããããŒãžã§ã³1ã®ã¢ã»ãããšãªããŸãã ãã®ãåæãã¯ãããã·ã¥ããŒãããšããŠå
¬éãããQA ããŒã ããã®ããŒãžã§ã³1ã®ãããã·ã¥ããŒããã«å¯ŸããŠãã¹ãã宿œããŸãã QA ãã¹ãã®åŸãBI éçºè
ã¯ãåæãã®æ¹ä¿®ãç¶ããããŒãžã§ã³2ãæ§ç¯ããŸãã æŽæ°ããããåæãã¯ãããŒãžã§ã³2ã®ãããã·ã¥ããŒãããšããŠå
¬éãããŸãã QA ããŒã ã¯ããŒãžã§ã³2ã®ãããã·ã¥ããŒããããã¹ãããçµæã«å¿ããŠä»¥äžã®ã¢ã¯ã·ã§ã³ã®ãããããå®è¡ããŸãã ãã¹ãã«åæ Œããå ŽåïŒ BI 管çè
ã¯ããã³ãã¬ãŒãããæŽæ°ããããŒãžã§ã³2ã®å
容ãåæ ãããŸãã åé¡ãçºèŠãããå ŽåïŒ BI éçºè
ã¯åæäžã§ä¿®æ£ã詊ã¿ãŸãã åé¡ãä¿®æ£å¯èœãªå ŽåãããŒãžã§ã³2ã®éçºãç¶ç¶ãããŸãã åé¡ãä¿®æ£äžå¯èœãªå ŽåãBI 管çè
ã¯ããã¯ã¢ããçšã®ããã³ãã¬ãŒããã䜿ã£ãŠããŒãžã§ã³1ã«ããŒã«ããã¯ã§ããŸãã QuickSight ã«ã¯ãäœæè
ãã»ãã·ã§ã³äžã«ä»¥åã®ããŒãžã§ã³ã«æ»ãã Undo æ©èœããããŸãããã Undo ã®å±¥æŽããªã»ãããããå ŽåïŒäŸãã°ããŒã¿ã»ããã®çœ®æãªã©ïŒããããã¯ä»¥åã«å®å®çãšããŠç¢ºèªæžã¿ã®ç¶æ
ãžã®ããŒã«ããã¯ãå¿
èŠã«ãªã£ãå Žåã¯ãBI 管çè
ã¯ããŒãžã§ã³1ã®ããã³ãã¬ãŒãããš UpdateAnalysis API ã䜿ã£ãŠåæã埩å
ã§ããŸãã BI éçºè
ã¯ããã®åŸ©å
ãããããŒãžã§ã³1ã®ãåæããããŒã¹ã«äœæ¥ãåéããæ¬¡ã®å®å®ããŒãžã§ã³ãç®æããŠéçºãµã€ã¯ã«ãç¹°ãè¿ããŸãã Describe-Definition API ãå©çšããããŒãžã§ã³ç®¡ç 次ã®å³ã¯ã Describe-Definition API ãš Create ãŸã㯠Update API ãå©çšããŠãQuickSight ã¢ã»ããã®ããŒãžã§ã³ç®¡çãå®è£
ããããã®ã¢ãŒããã¯ãã£ã瀺ãããã®ã§ãã ã¯ãŒã¯ãããŒã¯ä»¥äžã®ã¹ãããã§æ§æãããŸãã ã¢ã»ããã®äœæãšä¿å BI ããŒã ã¯ã Describe-Definition API ã®ã¬ã¹ãã³ã¹æ§æãåèã«ãããã°ã©ã ã§ QuickSight ã¢ã»ããã®æ§ç¯ãéå§ã§ããŸããããã·ã¥ããŒããåæã¯ãã·ãŒããèšç®ãã£ãŒã«ããããžã¥ã¢ã«ããã£ã«ã¿ãŒããã©ã¡ãŒã¿ãŒãšãã£ã JSON ããŒã¹ã®æ§æèŠçŽ ã䜿ã£ãŠæ§ç¯å¯èœã§ããåæ§ã«ãããŒã¿ã»ãããç©çããŒãã«ãšè«çããŒãã«ã®ãããã³ã°ãå®çŸ©ãã JSON æ§é ãçšããŠäœæã§ããŸããQuickSight ã®ã¢ã»ããã¯æ§é åããã JSON 圢åŒã«åŸã£ãŠãããããã³ãŒãé§åã®éçºã«é©ããŠããŸãã åŠç¿ã®ããŒãã«ãäžããããã«ããŸã QuickSight ã³ã³ãœãŒã«ã䜿ã£ãŠã¢ã»ãããäœæãããã®èšå®ãèŠä»¶ãæºãããŠããããšã確èªããäžã§ã Describe-Definition API ã§ã¢ã»ããã®å®çŸ©ãæœåºããæ¹æ³ããããŸããæœåºãã JSON å®çŸ©ã¯ãGitãAmazon S3ããããã¯ç€Ÿå
ã®ã³ãŒããªããžããªãšãã£ãããŒãžã§ã³ç®¡çãå¯èœãªå Žæã«ä¿åã§ããŸããããã¯ãUI ããŒã¹ã®éçºããã³ãŒãé§åã®éçºãžã¹ã ãŒãºã«ç§»è¡ããã®ã«åœ¹ç«ã¡ãŸãã ããŒã ãæ¢ã«æ¬çªç°å¢ã«ã¢ã»ããããããã€æžã¿ã§ãããããããã°ã©ã ã«ããã¯ãŒã¯ãããŒã«ç§»è¡ãããå Žåã¯ãæ¬çªã¢ã«ãŠã³ãããçŽæ¥ Describe-Definition API ã§å®çŸ©ãæœåºã§ããŸãããã®å®çŸ©ãéçºç°å¢ã®ãœãŒã¹ãªããžããªïŒGit ã Amazon S3 ãªã©ïŒã«ä¿åããä»åŸã®éçºããããã€ã®èµ·ç¹ãšããŠå©çšããããšãå¯èœã§ãã JSON å®çŸ©ã®ãããã€ãšå¯èŠå BI ããŒã ã JSON å®çŸ©ã®éçºãå®äºãããã Create ãŸã㯠Update API ïŒ CreateDashboard , UpdateAnalysis , UpdateDataSet ãªã©ïŒã䜿ã£ãŠã¢ã»ããããããã€ããQuickSight ã³ã³ãœãŒã«äžã§çŽæ¥å
容ãå¯èŠåããŸããããã«ãããã³ãŒãããããžã¥ã¢ã«ãžã®ã·ãŒã ã¬ã¹ãªç§»è¡ãå®çŸããããŒãžã§ã³ç®¡çãããŠããå®çŸ©ã UI ã«äžè²«ããŠåæ ãããããã«ãªããŸãã ãã¹ããšæ¬çªç°å¢ãžã®ããã〠éçºç°å¢ã QA ç°å¢ã«ã¢ã»ããããããã€ããåŸãBI ããŒã ã¯ãã¹ãã宿œããã¢ã»ãããæ©èœé¢ã»ããžã¥ã¢ã«é¢ã§èŠä»¶ãæºãããŠãããæ€èšŒããŸããæ€èšŒåŸããã¹ãæžã¿ã®å®çŸ©ãåã Create ãŸã㯠Update API ã䜿ã£ãŠæ¬çªã¢ã«ãŠã³ããžãããã€ããããšã§ãçµ±å¶ã®åããäžè²«æ§ã®ãããªãªãŒã¹ããã»ã¹ãå®çŸã§ããŸããæŽæ°ãããåæã QA ãšããååã®ãã©ã«ãã«ãããã€ãã ãµã³ãã«ã³ãŒã ãQA ã¢ã«ãŠã³ããžãããã€ãã ãµã³ãã«ã³ãŒã ãçšæããŠãŸãã®ã§ã確èªäžããã 以äžã® ãµã³ãã«ã³ãŒã ã¯ããåæãã®å®çŸ©ãååŸããdev ãšããååã®ãã©ã«ãã«ã³ããŒããŸããããã«ãããBI ããŒã ã¯ã¢ã»ãããããã°ã©ã ã§éçºã»ç®¡çã§ããããã«ãªããŸãã def describe_analysis_definition(session, id): qs = session.client('quicksight') sts_client = session.client("sts") account_id = sts_client.get_caller_identity()["Account"] try: response = qs.describe_analysis_definition( AwsAccountId=account_id, AnalysisId=id) except Exception as e: return ('Faild to describe analysis: ' + str(e)) else: return response try: sample_analysis = func.describe_analysis_definition(qs_session, analysisid) print('Successfully get sample analysis contents.') except Exception as e: faillist.append({ "Action": "scenario_1_dev: get sample analysis contents", "Error Type": "describe_analysis_contents Error", "AnalysisID": analysisid, "Name": 'template_1', "Error": str(e) }) new_id = 'copy_t_1_' + str(int(time.time())) new_name = 'copy_t_1' try: res = func.copy_analysis(qs_session, sample_analysis, new_id, new_name, 'owner', dev_config["assets_owner"]) except Exception as e: faillist.append({ "Action": "scenario_1_dev: copy analysis", "Error Type": "copy_analysis Error", "AnalysisID": analysisid, "Name": 'template_1', "Error": str(e) }) time.sleep(20) status = func.check_object_status('analysis', new_id, qs_session) print('Copy status of analysis ' + new_id + ' is ' + status) if status == 'CREATION_SUCCESSFUL': res = func.locate_folder_of_asset(qs_session, new_id, dev_config["dev_folder"], 'ANALYSIS') print('Successfully copied analysis ' + new_id + ' in dev account/folder.') 以äžã® ãµã³ãã«ã³ãŒã ã¯ããåæããå®çŸ©ããèšç®ãã£ãŒã«ãããã©ã¡ãŒã¿ãŒããã£ã«ã¿ãŒãããã°ã©ã ã§è¿œå ãããã®ã§ãããããã®äºæ¬¡çãªã¢ã»ããïŒèšç®ãã£ãŒã«ãããã£ã«ã¿ãŒããã©ã¡ãŒã¿ãŒïŒã¯ãåå©çšå¯èœãªã³ãŒããããã¯ãšããŠå
±æã©ã€ãã©ãªã«ä¿åãããŸãã { "most_recent": { "DataSetIdentifier": "ds_assets_as_code", "Name": "most_recent", "Expression": "max({date_time})" } , "Calculated TimeFrame": { "DataSetIdentifier": "ds_assets_as_code", "Name": "Calculated TimeFrame", "Expression": "datediff(${StartDate},${Enddate},'DD')" } } """ Now, please add CalculatedFields """ f = open('Assets_as_Code/library/2nd_class_assets/analysis_cf_library.json') l_cf = json.load(f) cf_name = 'most_recent' try: res = func.update_analysis(qs_session,new_id, new_name, new_analysis, 'CalculatedFields', l_cf[cf_name]) except Exception as e: faillist.append({ "Action": "scenario_2_dev: add CalculatedFields", "Error Type": "update_analysis Error", "AnalysisID": new_id, "Name": new_name, "Error": str(e) }) print(cf_name + " is successfully added into analysis " + new_name) """ Now, please add parameters (keyword: ParameterDeclarations) """ new_analysis = func.describe_analysis_definition(qs_session, new_id) f = open('Assets_as_Code/library/2nd_class_assets/parameter_library.json') l_p = json.load(f) p_name = "StartDate" try: res = func.update_analysis(qs_session,new_id, new_name, new_analysis, 'ParameterDeclarations', l_p[p_name]) except Exception as e: faillist.append({ "Action": "scenario_2_dev: add ParameterDeclarations", "Error Type": "update_analysis Error", "AnalysisID": new_id, "Name": new_name, "Error": str(e) }) print(p_name + " is successfully added into analysis " + new_name) ãã«ãæžã¿ã®é¢æ°çŸ€ã¯ GitHub ã§å
¬éãããŠããŸãã ã©ã€ãã©ãª ã ãŠãŒãã£ãªã㣠ã èšå®ãµã³ãã« ã ãã®ã³ã°ãã«ã㌠ãšãã£ããã®ä»ã®è£å©ã³ãŒãã¯ã以äžã® ãã£ã¬ã¯ããª ã«æ ŒçŽãããŠããŸãã æ¬¡ã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãAaCïŒAssets as CodeïŒã¢ãããŒãã«ããããµã³ãã«ã³ãŒãã®ãã£ã¬ã¯ããªæ§é ã瀺ãããã®ã§ããããã±ãŒãžå
šäœãããŠã³ããŒãããç¬èªã®AaCãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããã®ãã¹ããã©ã¯ãã£ã¹ãšããŠã掻çšãã ããã ãã®ã¢ãŒããã¯ãã£ã§ã¯ãããŒãžã§ã³ç®¡ç㯠Git ãªããžããªã Amazon S3 ã®ããŒãžã§ãã³ã°æ©èœãšãã£ãå€éšã®ä»çµã¿ã§æ±ãããŸãããã®ã¢ãããŒãã«ãããBI ããŒã ã¯ã¢ã»ããã䞊è¡éçºããããèšç®ãã£ãŒã«ãããã£ã«ã¿ãŒãããžã¥ã¢ã«ãšãã£ãäºæ¬¡çãªã¢ã»ãããåå©çšãããããããšãå¯èœã«ãªããŸããäŸãã°ãããŒã ã¯èšç®ãã£ãŒã«ãã®å®çŸ©ããæšæºåãããååãæã€ç¬ç«ãã JSON ãªããžã§ã¯ããšããŠä¿åã§ããŸããããã«ãããè€æ°ã®åæãããã·ã¥ããŒãããŸããã§åå©çšã§ããããã«ãªããŸãããã®ææ³ã®ãããªãã¡ãªãããšããŠã¯ããã«ãªã¯ãšã¹ãã«ããè¡åäœã®ã³ãŒãã¬ãã¥ãŒã以åã®ããŒãžã§ã³ãžã®ç°¡åãªããŒã«ããã¯ããã㊠CI/CD ã¯ãŒã¯ãããŒãšã®ã·ãŒã ã¬ã¹ãªçµ±åãªã©ãæããããŸãã ãŸãšãããšããã®ãã¿ãŒã³ã¯ QuickSight ãå®å
šã«ã³ãŒãé§åã®ãã©ãããã©ãŒã ãžãšå€é©ããã€ã³ãã©ãš BI ã¢ã»ãããã³ãŒããšããŠæ±ãããšãå¯èœã«ããŸãã QuickSight UI ãš API ã䜵çšãããã€ããªããã¯ãŒã¯ãããŒã«ããããŒãžã§ã³ç®¡ç BI ããŒã ã¯ããã®ã¢ãŒããã¯ãã£ãæ¡åŒµããŠãã€ããªããã¢ãã«ãæ§ç¯ããããšãã§ããŸããã€ãŸããéçºã¯ QuickSight UI ã§è¡ããããŒãžã§ã³ç®¡çã API çµç±ã§è¡ããšããã¢ãã«ã§ãããã®ã¢ãããŒãã§ã¯ãããŒã 㯠QuickSight ã³ã³ãœãŒã«äžã§å¯Ÿè©±çã«ã¢ã»ããã®æ§ç¯ãæŽæ°ãç¶ããŸããéçºãå®äºããã¢ã»ããããã¹ãã«åæ ŒããããããŒã 㯠Describe-Definition API ã䜿ã£ãп޿°ããã JSON å®çŸ©ãæœåºããGit ã Amazon S3 ãšãã£ãããŒãžã§ã³ç®¡çãªããžããªã«ä¿åããŸãã ãã®ã¢ãã«ã¯ãUI ããŒã¹éçºã®å®¹æããšæè»æ§ããã³ãŒãããŒã¹ã®ããŒãžã§ã³ç®¡çãæã€æ§é æ§ããã¬ãŒãµããªãã£ãšçµã¿åããããã®ã§ããããã°ã©ã ã«ããã¯ãŒã¯ãããŒãžç§»è¡ããããšããŠããBI ããŒã ã«ãšã£ãŠã¯ããŸãã«äž¡è
ã®è¯ããšãåããšèšããã§ãããã æ¬¡ã®å³ã¯ãUI ããŒã¹ã®éçºãšã³ãŒãããŒã¹ã®ããŒãžã§ã³ç®¡çãæã€æ§é æ§ããã¬ãŒãµããªãã£ãçµã¿åãããã¢ãŒããã¯ãã£ã瀺ããŠããŸãã ã¯ãŒã¯ãããŒã¯ä»¥äžã®ã¹ãããã§æ§æãããŸãã BI ã®äœæè
ã¯ãããã·ã¥ããŒããåæãããŒã¿ã»ãããããŒã¿ãœãŒã¹ãããŒãã QuickSight ã³ã³ãœãŒã«äžã§çŽæ¥éçºããŸãã éçºãå®äºããã¢ã»ãããæ©èœé¢ã»ããžã¥ã¢ã«é¢ã®ãã¹ãã«åæ ŒããããããŒã 㯠Describe-Definition API ã䜿ã£ãŠã¢ã»ããã®å®çŸ©ããšã¯ã¹ããŒãããGit ãAmazon S3 ã«ä¿åããŸãã æ€èšŒæžã¿ã®ã¢ã»ããã¯ã Create ãŸã㯠Update API ã䜿ã£ãŠæ¬çªç°å¢ã«ãããã€ãããŸãã äœæè
ã¯ã次ã®ããŒãžã§ã³ã«åããŠUI äžã§åãã¢ã»ããã®éçºãåéããŸãã äœæããããŒãžã§ã³ã¯ãã¹ããããŸãã ãã¹ãã«åæ Œããå ŽåïŒãªããžããªã«ããããŒãžã§ã³ç®¡çããã JSON å®çŸ©ãæŽæ°ããã¹ããã6ã«é²ã¿ãŸãã ãã¹ãã«å€±æããå ŽåïŒGit ã Amazon S3 ã«ä¿åããŠããã以åã®å®çŸ©ã䜿ãã Update API ãä»ã㊠QuickSight UI äžã®ã¢ã»ãããããŒã«ããã¯ããŸãã æŽæ°ãããããããã¯ããŒã«ããã¯ãããå®çŸ©ãæ¬çªã¢ã«ãŠã³ãã«ãããã€ããããšã§ãå®å®ããããŒãžã§ã³ç®¡çäžã§ã®ãªãªãŒã¹ãå®çŸããŸãã Amazon EventBridge ãå©çšãã QuickSight ã®ããŒãžã§ã³ç®¡çèªåå Amazon EventBridge ãå©çšãããšãåã
ã® QuickSight ã¢ã»ããïŒåæãããã·ã¥ããŒããVPC æ¥ç¶ãªã©ïŒããã©ã«ãæ§é ãžã®å€æŽããã¢ã»ããã¬ãã«ã®ã€ãã³ããšããŠã»ãŒãªã¢ã«ã¿ã€ã ã«æããç£èŠããããšãã§ããŸããããã§èšãã€ãã³ãã«ã¯ãã¢ã»ããã®äœæãæŽæ°ãåé€ããã©ã«ãæ§æã®å€æŽãªã©ãå«ãŸããŸãã詳现ã«ã€ããŠã¯ãã Automate your Amazon QuickSight assets deployment using the new Amazon EventBridge integration ãããåç
§ãã ããã QuickSight ãš EventBridge ã飿ºãããããšã§ãBI ããŒã ã¯ç¹å®ã®ã¢ã»ããããã©ã«ãã倿Žãããéã«ãåŸç¶ã®ã¯ãŒã¯ãããŒïŒäŸãã° AWS Lambda ã AWS Step Functions ïŒãèªåçã«ããªã¬ãŒããã«ãŒã«ãå®çŸ©ã§ããŸããããã«ãããã¢ã»ããå®çŸ©ã®ãšã¯ã¹ããŒããGit ã Amazon S3 ãžã®ã¹ãããã·ã§ããä¿åãç£æ»ãããŒã«ããã¯ã®ããã®ã¿ã°ä»ããšãã£ãããŒãžã§ã³ç®¡çããã»ã¹ãã·ãŒã ã¬ã¹ã«ãªããŸããçµæãšããŠãããŒã ã¯æåã§ã®ä»å
¥ãªãã«ã¬ããã³ã¹ãèªååããç°å¢éã®äžè²«æ§ãç¶æã§ããããã«ãªããŸãã Assets-as-Bundle APIãå©çšããããŒãžã§ã³ç®¡ç Assets-as-Bundle API ãããŒãžã§ã³ç®¡çã«å©çšããããšã¯æšå¥šããŸããããã® API ã®äž»ãªãŠãŒã¹ã±ãŒã¹ã¯ãããã·ã¥ããŒããšãã®äŸåé¢ä¿ã«ããã¢ã»ãããç°å¢éã§ç§»è¡ïŒäŸãã°ãéçºç°å¢ãã QAãæ¬çªç°å¢ãžïŒããããšã§ãããã³ãã«ãã¡ã€ã«ã¯æè¡çã«ã¯ä¿åããŠåå©çšã§ããŸããããã现ããè¿œè·¡ãæ¯èŒãã¢ãžã¥ãŒã«éçºã«ã¯ããŸãé©ããŠããŸãããé©åãªããŒãžã§ã³ç®¡çã®ããã«ã¯ã Describe-Definition API ã Git ã Amazon S3 ããŒã¹ã®ã¹ãã¬ãŒãžãšçµã¿åãããŠå©çšããŠãã ããã ã¯ãªãŒã³ã¢ãã å°æ¥çãªèª²éãé²ãããããã¹ãäžã«äœæãã S3 ãã±ãããQuickSight ã®ããŒã¿ã»ãããåæãããã·ã¥ããŒãããã®ä»ãµã³ãã«ã¹ã¯ãªããã§å©çšããã¢ã»ãããªã©ã®ãªãœãŒã¹ã¯åé€ããŠãã ããã ãŸãšã ãã®èšäºã§è§£èª¬ãã QuickSight API ã®æ©èœã¯ãBI ã¢ã»ãããå€§èŠæš¡ã«ç®¡çããããã®åŒ·åãªèªååãã¬ããã³ã¹ããããŠæè»æ§ããããããŸãããããã® API ã«ãããã¢ã»ããã®ã©ã€ããµã€ã¯ã«ãå®å
šã«ã³ã³ãããŒã«ããCI/CD ãã€ãã©ã€ã³ã Git ããŒã¹ã®ã¯ãŒã¯ãããŒãã«ã¹ã¿ã ããŒã«ãšã·ãŒã ã¬ã¹ã«é£æºãããããšãå¯èœã«ãªããŸããããã·ã¥ããŒãã®ããŒãžã§ã³ç®¡çãç°å¢ããŸããã ãããã€ãã¹ããŒãç«¶åã®è§£æ±ºãªã©ãç°¡åã«è¡ãããšãã§ããŸãã ãã现ããå¶åŸ¡ãç£æ»æ§ãã¢ã«ãŠã³ãããªãŒãžã§ã³ããŸããã åçŸå¯èœãªãããã€ãå¿
èŠãªå Žåã¯ãAPI ãå©çšããŠãã ãããã¹ããŒãã䜿ããããããããã¯æè»œãªã€ãã¬ãŒã·ã§ã³ãåªå
ããå Žåã¯ãQuickSight ã³ã³ãœãŒã«ãå©çšããŸããããå€ãã®ããŒã ã«ãšã£ãŠã¯ãQuickSight ã³ã³ãœãŒã«ã§éçºãã倿Žã®ãã£ããã£ã API ã§è¡ããšãããã€ããªãããªã¢ãããŒãããäž¡æ¹ã®é·æã掻ããæè¯ã®æ¹æ³ãšãªãã§ãããã BIOps ãã©ã¯ãã£ã¹ãå°å
¥ããããšã§ãBI ããŒã ã¯ããªããªãŒãã¹ã±ãŒã«ããããªã¹ã¯ãäœæžããäžåéãã®éçºãããä¿¡é Œæ§ãé«ãçµ±å¶ã®åããã€ã³ãµã€ãã®åµåºãžãšç§»è¡ããããšãã§ããŸãã ããŒã3 ã§ã¯ãã¯ãã¹ã¢ã«ãŠã³ãããã³ãã«ãç°å¢ã§ã®ãããã€ããããŠç«¶åã®æ€åºãšã¬ããã³ã¹ã«ã€ããŠè§£èª¬ããŸãã