ã¯ããã« èªåè»æ¥çãã³ãã¯ãã£ããã«ãŒãšèªåéè»¢ã®æªæ¥ãç®æããŠæ¥ãããã§é²ãäžããµã€ããŒã»ãã¥ãªãã£ã¯éèŠãªèª²é¡ãšãªã£ãŠããŸããè»äž¡ããœãããŠã§ã¢ãã»ã³ãµãŒãæ¥ç¶æ§ã«äŸåããããã«ãªãã«ã€ãããµã€ããŒæ»æã®æšçã«ããªããããŸããããã®èª²é¡ãèªèããŠãåœéé£å欧å·çµæžå§å¡äŒ (UNECE) ã¯ãèªåè»ã«é¢ããæ³ç調åã®ããã®äžçãã©ãŒã©ã (WP.29) ãå°å
¥ããã³ãã¯ãã£ããã«ãŒã®ãµã€ããŒã»ãã¥ãªãã£ãšãœãããŠã§ã¢ã¢ããããŒãã«é¢ããç»æçãªèŠå¶ãçå®ããŸããã UNECE WP.29 ã®æŠèŠ åœéé£å欧å·çµæžå§å¡äŒ (UNECE) ã®è»äž¡èŠåçµ±äžäžçãã©ãŒã©ã ( WP.29 ) ã¯ãåœå®¶éã®è»äž¡èŠå¶ã®çµ±äžåãç®æãã°ããŒãã«ãªãã©ãŒã©ã ã§ããèªåè»æ¥çåãã«ãµã€ããŒã»ãã¥ãªãã£ã®èŠå¶ãšã¬ã€ãã©ã€ã³ã§ãã UNECE WP.29 ãçå®ããŠããŸãã ãããã®èŠå¶ã¯ã以äžã®ãããªãããã¯ãŒã¯æ¥ç¶ãããè»äž¡ã®ãµã€ããŒã»ãã¥ãªãã£ã®æ§ã
ãªåŽé¢ãã«ããŒããŠããŸãã ãªã¹ã¯ç®¡ç å®å
šãªãœãããŠã§ã¢ã¢ããããŒã ã»ãã¥ã¢ãªéä¿¡ ã€ã³ã·ãã³ãå¯Ÿå¿ ãã¹ããšã¢ã»ã¹ã¡ã³ã å
·äœçã«ã¯ããµã€ããŒã»ãã¥ãªãã£ã«é¢ãã UN èŠå第 155 å·ãšããœãããŠã§ã¢ã¢ããããŒãã«é¢ãã UN èŠå第 156 å·ã¯ãèªåè»æ¥çã®å§¿ãå€ãããã®ãšãªãã§ãããã ãããã®èŠåã«ãããã¡ãŒã«ãŒã«ã¯ãè»äž¡ã®ã©ã€ããµã€ã¯ã«å
šäœãéããŠãµã€ããŒã»ãã¥ãªãã£ç®¡çã·ã¹ãã (CSMS) ãšãœãããŠã§ã¢ã¢ããããŒã管çã·ã¹ãã (SUMS) ã確å®ã«å®è£
ããããšã矩åä»ããããŸãã ãã®å€åã«å¯Ÿå¿ããã«ã¯ãå
ç¢ã§æ¡åŒµæ§ãšã»ãã¥ãªãã£ãåãã IoT ã€ã³ãã©ã¹ãã©ã¯ãã£ãå¿
èŠäžå¯æ¬ ã§ãããã®èŠæ±ã« Amazon Web Services (AWS) IoT ãããŸã察å¿ã§ããããæŽåãããŠããŸãã ãªãéèŠãªã®ã: èªåè»ã®ãµã€ããŒã»ãã¥ãªã㣠ã«é¢ãã UNECE èŠå第 155 å·ã«ããã2024 幎 7 æä»¥éãEU å çåœãè±åœãæ¥æ¬ãéåœãå«ã 54 ã«åœã® OEM ã«ãã£ãŠçç£ãããã¹ãŠã®è»äž¡ã¯ãWP.29 åœé£è»äž¡èŠå調åäžçãã©ãŒã©ã ãå®ããå³ãããµã€ããŒã»ãã¥ãªãã£èŠä»¶ãæºããå¿
èŠããããŸãããã®èŠå¶ã¯ãã³ãã¯ãã£ããã«ãŒã®ãµã€ããŒã»ãã¥ãªãã£ã確ä¿ããéçšã®æ··ä¹±ãããŒã¿æŒãããå®å
šãªã¹ã¯ãªã©ãæ·±å»ãªçµæãæããµã€ããŒè
åšããå®ãããšãç®çãšããŠããŸãã AWS IoT ã®æŠèŠ AWS IoT ã¯ãèªåè»ã¡ãŒã«ãŒã UNECE WP.29 ã®èŠä»¶ãæºããããããè¶
ããããšãæ¯æŽããäžé£ã®ãµãŒãã¹ãæäŸããŸãã ãããã®æ©èœã¯ãWP.29 ã®å®å
šãªéä¿¡ãã£ãã«ããã³ãã»ãã¥ãªãã£ã»ãã€ã»ãã¶ã€ã³ãã®ååã«éç¹ã眮ãããã®ã§ãã ããã€ã¹æ¥ç¶ãšã¡ãã»ãŒãžã³ã°: AWS IoT Core 㯠MQTTãªã©ã®ãããã³ã«ããµããŒãããx.509èšŒææžã«ããå®å
šãªããã€ã¹èªèšŒãå®çŸããŸãã ããã€ã¹ç®¡ç: AWS IoT Device Management ã¯ããªã³ããŒãã£ã³ã°ãçµç¹åãç£èŠããªã¢ãŒã管çãããã³ OTA æŽæ°ãæäŸããUN èŠå第 156 å·ã«åŸã£ããœãããŠã§ã¢ã»ãã¥ãªãã£ã®ç¶æã«äžå¯æ¬ ã§ãã ã»ãã¥ãªãã£ç£èŠ: AWS IoT Device Defender ã¯ãè»äž¡ã®ç°åžžãªæåãç£èŠããéžè±ããã£ãå Žåã«èŠåãçºãã UN èŠå第 155 å·ã§çŸ©åä»ããããŠãããªã¹ã¯è©äŸ¡ãšã€ã³ã·ãã³ã察å¿ããµããŒãããŸãã ããŒã¿åŠçãšåæ: Amazon Kinesis Data Analytics ã¹ããªãŒã ã¯ãè»äž¡ã®æåãšãŠãŒã¶ãŒãã¿ãŒã³ãçè§£ããã®ãæ¯æŽããè»äž¡å
šäœã®ã»ãã¥ãªãã£è
åšãšè匱æ§ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã ã¢ãŒããã¯ãã£ã®æŠèŠ ãã®ã¢ãŒããã¯ãã£ã§ã¯ã AWS IoT Core ã䜿çšããŠã³ãã¯ãã£ããã«ãŒãžã®æ¥ç¶ãšèªèšŒãè¡ããŸãã AWS IoT Device Management ã®äžéšã§ãã AWS IoT Jobs ã«ãããã¹ã±ãžã¥ãŒãªã³ã°ããªãã©ã€ãã¹ããŒã¿ã¹ã¬ããŒããªã©ãå«ãããœãããŠã§ã¢ã¢ããããŒãã®å±éããªã¢ãŒãæäœã管çã§ããŸãã AWS IoT Device Defender ã¯è»äž¡ã®ç°åžžãç£æ»ããã³ç£èŠãã AWS IoT Rules ã«ããããŒã¿ã Amazon Kinesis Data Streams ã«éä¿¡ãããªã¢ã«ã¿ã€ã åæãè¡ããŸãã å³ 1.0 : AWS ãµãŒãã¹ã䜿çšã㊠WP.29 æºæ ããã³ãã¯ãã£ããã«ãŒ åææ¡ä»¶ AWS IoT ã¯ãŒã¯ã·ã§ãã ã®éå§ã«åŸã£ãŠ AWS éçºç°å¢ã®ã»ããã¢ãã ã宿œãããããããã¯ç¬èªã® EC2 éçºç°å¢ãã»ããã¢ããããŠãæé ãããããããšãã§ããŸãã ããŒãžã§ã³ç®¡çãæå¹ã«ãªã£ãŠãã Amazon Simple Storage Service (Amazon S3) ã®ã¢ãŒãã£ãã¡ã¯ããã±ããã«ããã¹ãã¢ããªã±ãŒã·ã§ã³ãæ ŒçŽããŸãã AWS IoT Core ã® ã¢ã ãšããŠã®ãžã³ãã¯ãã£ããã«ãŒããã®èšäºã§ã¯ã Amazon Elastic Compute Cloud (Amazon EC2) ã€ã³ã¹ã¿ã³ã¹äžã« AWS IoT Device Client ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããããšã§ãä»®æ³ã®ã³ãã¯ãã£ããã«ãŒãã·ãã¥ã¬ãŒãããŸãã AWS IoT ã¯ãŒã¯ã·ã§ããã®éå§ ã§ã¯ãã·ã¥ãã¬ãŒãããä»®æ³ IoT ããã€ã¹ã®èšå®ã«ã€ããŠè©³ããæé ã瀺ãããŠããŸãã æé ãã®æé ã§ã¯ãã·ãã¥ã¬ãŒããããã³ãã¯ãã£ããã«ãŒãã»ããã¢ããããOTA ãå®è¡ããè»äž¡ã®åäœãç©æ¥µçã«ç£èŠããè»äž¡ã®ããŒã¿ã«åæãé©çšããŸãã AWS IoT ããã®ä»ã® AWS ãµãŒãã¹ãå©çšããŠãWP.29 èŠä»¶ãæºããæ©èœã宿ŒããŸãã åææ¡ä»¶ãæºãããŠããã°ãAWS Cloud9 ã®ç°å¢ãçšæã§ããŠããŸããããã䜿çšããŠãä»®æ³ã®ã³ãã¯ãã£ããã«ãŒãã»ããã¢ããããAWS IoT ã«æ¥ç¶ããŸãã AWS IoT ã³ãã¯ãã£ããã«ãŒã®äœæ (AWS ã³ã³ãœãŒã«) ã¹ããã 1: ã·ãã¥ã¬ãŒããããã³ãã¯ãã£ããã«ãŒãäœæ (AWS IoT Thing) AWS IoT Core ã³ã³ãœãŒã« ãéããŸã ããã²ãŒã·ã§ã³ãã€ã³ã® 管ç ã®äžã«ãã ãã¹ãŠã®ããã€ã¹ ãéžæããŸã ã¢ã ãéžæããŸã ã¢ããäœæ ãéžæãã 1 ã€ã®ã¢ããäœæ ãéžæããŸã ã¢ãã®ååã« SimulatedConnectedVehicle ãå
¥åããŸã å³ 1.1 : AWS IoT Thing ã®äœæ ããã€ã¹èšŒææžã«ã€ããŠã¯ãæšå¥šãªãã·ã§ã³ã䜿çšããŸããïŒå³ 1.2 åç
§ïŒ å³ 1.2: ããã€ã¹èšŒææžã®éžæ ã¹ããã 2: ããªã·ãŒãäœæã㊠AWS IoT ã®ã¢ãã«å²ãåœãŠ ããªã·ãŒãã¢ã¿ããã®ã»ã¯ã·ã§ã³ã§ã ããªã·ãŒãäœæ ãéžæããŸã ããªã·ãŒåã« wp29TestPolicy ãå
¥åãã JSON ãéžæããŸã 以äžã® JSON ã³ã³ãã³ãã«çœ®ãæããŸã regionãyour-account-id ãé©å®æŽæ°ããŸã äœæ ãéžæããããªã·ãŒäœæãå®äºããŸã { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect", "iot:Subscribe", "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:eu-west-1:your-account-id:client/SimulatedConnectedVehicle", "arn:aws:iot:eu-west-1:your-account-id:thing/SimulatedConnectedVehicle", "arn:aws:iot:eu-west-1:your-account-id:topic/*", "arn:aws:iot:eu-west-1:your-account-id:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:DescribeJob", "iot:CreateJob", "iot:UpdateJob", "iot:DeleteJob", "iot:CancelJob", "iot:StartNextPendingJobExecution", "iot:DescribeJobExecution", "iot:UpdateJobExecution", "iot:DeleteJobExecution" ], "Resource": [ "arn:aws:iot:eu-west-1:your-account-id:job/*", "arn:aws:iot:eu-west-1:your-account-id:thing/SimulatedConnectedVehicle", "arn:aws:iot:eu-west-1:your-account-id:jobexecution/*" ] } ] } JSON ã¹ããã 3: ã³ãã¯ãã£ããã«ãŒã®ã¢ããžããªã·ãŒãå²ãåœãŠ åã®ã¹ãããã§ããªã·ãŒã®äœæãå®äºãããããã®ããªã·ãŒãã¢ãã«å²ãåœãŠãã¢ããäœæããŸãã (å³ 1.3 åç
§) å³ 1.3 :ããªã·ãŒãã¢ãã«å²ãåœãŠ ã¹ããã 4: ããã€ã¹èšŒææžãšéµãããŠã³ããŒã ããŠã³ããŒãããã³ããããããŠã³ããŒãããŸãã (å³ 1.4 åç
§) ããã€ã¹èšŒææž ãããªãã¯ããŒãã¡ã€ã« ãã©ã€ããŒãããŒãã¡ã€ã« Amazon ã«ãŒã CA å³ 1.4 :èšŒææžãšããŒãããŠã³ããŒã ãããã®èªèšŒæ
å ±ã¯ã SimulatedConnectedVehicle ã AWS IoT ã«æ¥ç¶ããAWS éçºç°å¢ (äžã§äœæ) ã«ã¢ããããŒãããããã«äœ¿çšããã®ã§ãå®å
šã«ä¿åããŸãã ã¹ããã 5: AWS IoT Device Client ãã€ã³ã¹ããŒã« AWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ãã¯ãŒã¯ã·ã§ããã®ã»ã¯ã·ã§ã³ã«åŸãã ããã«èšèŒãããŠãã æé ã«åŸã£ãŠããã€ã¹ã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ããŸãã ãã®ããã°ã®åã®ã¹ãããã§äœæããèªèšŒæ
å ±ã䜿çšãã Specify thing name (Also used as Client ID) ãåºåãããããåã«äœæãã SimulatedConnectedVehicle ãšããã¢ãã®ååã䜿çšããŸãã Over-the-air(OTA) ã¢ããããŒãã®ãªã¢ãŒãæäœ ããã€ã¹ãçžäºã«æ¥ç¶ãããçŸä»£ã®äžçã§ã¯ããã¡ãŒã ãŠã§ã¢ãææ°ã®ç¶æ
ã«ä¿ã€ããšãã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ãæ©èœé¢ã§æ¥µããŠéèŠã§ãã Over-the-Air (OTA) ã¢ããããŒãã¯ãããã€ã¹ãé éã§ã¢ããããŒãããã·ãŒã ã¬ã¹ãªæ¹æ³ãæäŸããç©ççãªã¢ã¯ã»ã¹ãå¿
èŠãšããã«ãåžžã«ææ°ã®ãœãããŠã§ã¢ãåžžã«å®è¡ã§ããããã«ããŸãã AWS IoT Device Management Jobs ã䜿çšããŠãã³ãã¯ãã£ããã«ãŒã®ãã¡ãŒã ãŠã§ã¢ãæŽæ°ãã OTA ã¢ããããŒããè¡ãæ¹æ³ãèŠãŠãããŸãããã ãã®ã¯ãŒã¯ã·ã§ãã ã§èª¬æãããŠããæé ãå®è¡ããJobs ã AWS 管çã®ãã³ãã¬ãŒããæäŸããŠããããšã«ãããAWS IoT Core ã«æ¥ç¶ãããããã€ã¹ãžã®ãªã¢ãŒãæäœããšãŠãç°¡åã§å¹ççããèŠãŠã¿ãŸãããã ãã ã«èšèŒãããŠããæé ã«ãããã£ãŠãç¬èªã«ã¹ã¿ã Jobs ã®æé ãšãŠã©ãŒã¯ã¹ã«ãŒãäœæããããšãã§ããŸãã ç©æ¥µçãªã»ãã¥ãªãã£ç£èŠ ïŒ ã³ãã¯ãããã«ãŒã®å®å
šæ§ãšã³ã³ãã©ã€ã¢ã³ã¹ãç¢ºä¿ AWS IoT Device Defender ã䜿çšãããšãç¶ç¶çãªã»ãã¥ãªãã£ç£èŠã確ç«ã§ããå
šäœçãªã»ãã¥ãªãã£ã匷åã§ããŸãã ãã®ãµãŒãã¹ã¯ãéåä¿¡ããã¡ãã»ãŒãžã®å¢å (ããããã¹ãããªããã€ã¹ã§ããããšã瀺ã) ãè»äž¡ããã®é »ç¹ãªæ¥ç¶è©Šè¡ããŸãã¯æ¥éãã€é »ç¹ãªåæãªã©ã®ç°åžžãæ€åºããããšãã§ããŸãããããã®ç°åžžãããªã¬ãŒãä¿ããæœåšçãªå®å
šä¿éäžã®è
åšã«å¯Ÿããç©æ¥µçãªå¯Ÿå¿ãå¯èœã«ããŸãããã®ã¢ãããŒãã¯ãç¶ç¶çãªãªã¹ã¯è©äŸ¡ããµããŒãããã ãã§ãªããUN èŠå第 155 å·ã®å³æ Œãªåºæºã«ã沿ã£ãŠããŸãã ãã®ã¯ãŒã¯ã·ã§ãã ã§èª¬æãããŠããæé ã«åŸã£ãŠãAWS IoT Device Defender ã䜿çšããŠç©æ¥µçãªã»ãã¥ãªãã£ç£èŠãšç£æ»ãå®çŸããæ¹æ³ã確èªããŸãã ã¹ããªãŒãã³ã°ããŒã¿åæ: Amazon Kinesis Data Analytics (Apache Flink) ã®äœ¿çš Amazon Kinesis Data Analytics ã® ã¹ããªãŒã ã䜿ã£ãããŒã¿åæã¯ãè»äž¡ã®åäœãšãŠãŒã¶ãŒã®è¡åãã¿ãŒã³ãçè§£ããäžã§éåžžã«éèŠã§ãã ãã®ããŒã¿ãåæããããšã§ãè»äž¡å
šäœã®æ°ããªåŸåãšãã¿ãŒã³ãç¹å®ããããšãã§ããããå€ãã®æ
å ±ã«åºã¥ããæææ±ºå®ãšå
šäœçãªããã©ãŒãã³ã¹åäžãå¯èœã«ãªããŸãã Amazon Kinesis Data Analyticsã«ããŒã¿ããã¡ã³ã¢ãŠãããããã«AWS IoT Rulesãã»ããã¢ããããŸããã ã¹ããã 1: AWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ãã®èšå®ãå€æŽ AWS IoT ããã€ã¹ ã¯ã©ã€ã¢ã³ãèšå®ã倿ŽããŠã publish-on-change ãå«ããããã«ããŸãããã®æ©èœã¯ãæå®ããããããªãã·ã¥ãã¡ã€ã« ( /home/ubuntu/workshop_dc/pubfile.txt ) ã«ããŒã¿ãæžã蟌ããã³ã«ãããªãã·ã¥ã¢ã¯ã·ã§ã³ãããªã¬ãŒãããŸãã AWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ãã¯ãã®å€æŽãæ€ç¥ãã /topic/workshop/dc/pub ãããã¯ãšã㊠AWS IoT Core ã«éä¿¡ããŸãã æ¬¡ã®ã³ãã³ããå®è¡ããŠãèšå®ãã¡ã€ã«ãç·šéããŸã: sudo vim /etc/.aws-iot-device-client/aws-iot-device-client.conf 以äžã远å ããŸã: âpublish-on-changeâ: true ãµã³ãã«ã»ã¯ã·ã§ã³ã®èšå®ã¯ãâ Publish-on-change â ã远å ãããšæ¬¡ã®ããã«ãªããŸã: å³ 1.5: AWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ãã®èšå®å€æŽ ã¹ããã 2: AWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ããåèµ·å åã®ã¹ãããã§ publish-on-change ã远å ããŠèšå®ã倿ŽããããAWS IoT ããã€ã¹ã¯ã©ã€ã¢ã³ããåèµ·åããŸãã æ¬¡ã®ã³ãã³ããå®è¡ããŠåèµ·åããŸã: sudo systemctl restart aws-iot-device-client Bash ã¹ããã 3: è»äž¡ããŒã¿ã®ã·ãã¥ã¬ãŒã·ã§ã³ ã³ãã¯ãããã«ãŒã®ã·ãã¥ã¬ãŒã·ã§ã³ããŒã¿ãžã§ãã¬ãŒã¿ãŒãèšå®ããAWS IoT Core ã«ã¹ããªãŒãã³ã°ããŸãããã¡ã€ã« ( vehicle_data_generator.py ) ãäœæãããããå®è¡ãããšãè»äž¡ã®ç¶æ
ãDTC (æ
é蚺æã³ãŒã)ãäœçœ®æ
å ±ããã©ã€ããŒã®è¡åãããããªãŒç¶æ
ãå«ãã©ã³ãã ããŒã¿ãåžžã«ã¹ããªãŒãã³ã°ãããŸãã ãã¡ã€ã«ãèšå®ããããã«æ¬¡ã®ã³ãã³ããå®è¡ããã³ãŒããããŠã³ããŒãããŸã: cd /home/ubuntu/workshop_dc vim vehicle_data_generator.py Bash ãã¡ã€ã« ( vehicle_data_generator.py ) ã«æ¬¡ã®ã³ãŒããå
¥åããŸã: import json import time import random import logging from datetime import datetime , timezone from pathlib import Path # Set up logging logging . basicConfig ( level = logging . INFO , format = '%(asctime)s - %(levelname)s - %(message)s' ) logger = logging . getLogger ( __name__ ) # File path FILE_PATH = Path ( "/home/ubuntu/workshop_dc/pubfile.txt" ) def generate_vehicle_status ( ) : return { "vehicleId" : "VIN123456789" , "timestamp" : datetime . now ( timezone . utc ) . isoformat ( ) , "status" : { "ignition" : random . choice ( [ "ON" , "OFF" ] ) , "speed" : round ( random . uniform ( 0 , 120 ) , 1 ) , "fuelLevel" : round ( random . uniform ( 0 , 100 ) , 1 ) , "batteryLevel" : round ( random . uniform ( 0 , 100 ) , 1 ) , "odometer" : round ( random . uniform ( 0 , 100000 ) , 1 ) , "engineTemp" : round ( random . uniform ( 70 , 110 ) , 1 ) , "tirePressure" : { "frontLeft" : round ( random . uniform ( 30 , 35 ) , 1 ) , "frontRight" : round ( random . uniform ( 30 , 35 ) , 1 ) , "rearLeft" : round ( random . uniform ( 30 , 35 ) , 1 ) , "rearRight" : round ( random . uniform ( 30 , 35 ) , 1 ) } } } def generate_dtcs ( ) : return { "vehicleId" : "VIN987654321" , "timestamp" : datetime . now ( timezone . utc ) . isoformat ( ) , "dtcs" : [ { "code" : "P0" + str ( random . randint ( 100 , 999 ) ) , "description" : "Random DTC Description" , "severity" : random . choice ( [ "WARNING" , "CRITICAL" , "INFO" ] ) } ] } def generate_location ( ) : return { "vehicleId" : "VIN246813579" , "timestamp" : datetime . now ( timezone . utc ) . isoformat ( ) , "location" : { "latitude" : round ( random . uniform ( 30 , 45 ) , 4 ) , "longitude" : round ( random . uniform ( - 125 , - 70 ) , 4 ) , "altitude" : round ( random . uniform ( 0 , 1000 ) , 1 ) , "heading" : round ( random . uniform ( 0 , 359 ) , 1 ) , "speed" : round ( random . uniform ( 0 , 120 ) , 1 ) } } def generate_driver_behavior ( ) : return { "vehicleId" : "VIN135792468" , "timestamp" : datetime . now ( timezone . utc ) . isoformat ( ) , "driverBehavior" : { "harshAccelerations" : random . randint ( 0 , 5 ) , "harshBraking" : random . randint ( 0 , 5 ) , "speedingEvents" : random . randint ( 0 , 10 ) , "averageSpeed" : round ( random . uniform ( 40 , 80 ) , 1 ) , "idlingTime" : random . randint ( 0 , 600 ) , "fuelEfficiency" : round ( random . uniform ( 20 , 40 ) , 1 ) } } def generate_battery_status ( ) : return { "vehicleId" : "VIN753951456" , "timestamp" : datetime . now ( timezone . utc ) . isoformat ( ) , "batteryStatus" : { "stateOfCharge" : round ( random . uniform ( 0 , 100 ) , 1 ) , "range" : round ( random . uniform ( 0 , 300 ) , 1 ) , "chargingStatus" : random . choice ( [ "CHARGING" , "NOT_CHARGING" ] ) , "voltage" : round ( random . uniform ( 350 , 400 ) , 1 ) , "current" : round ( random . uniform ( - 200 , 200 ) , 1 ) , "temperature" : round ( random . uniform ( 20 , 40 ) , 1 ) , "healthStatus" : random . choice ( [ "GOOD" , "FAIR" , "POOR" ] ) } } def write_to_file ( data ) : try : # Ensure the directory exists FILE_PATH . parent . mkdir ( parents = True , exist_ok = True ) # Write the data to the file with FILE_PATH . open ( 'w' ) as f : json . dump ( data , f ) logger . info ( f"Successfully wrote data to { FILE_PATH } " ) except PermissionError : logger . error ( f"Permission denied when trying to write to { FILE_PATH } " ) except IOError as e : logger . error ( f"I/O error occurred when writing to { FILE_PATH } : { e } " ) except Exception as e : logger . error ( f"Unexpected error occurred when writing to { FILE_PATH } : { e } " ) def main ( ) : generators = [ generate_vehicle_status , generate_dtcs , generate_location , generate_driver_behavior , generate_battery_status ] while True : try : data = random . choice ( generators ) ( ) write_to_file ( data ) time . sleep ( 10 ) except KeyboardInterrupt : logger . info ( "Script terminated by user" ) break except Exception as e : logger . error ( f"An unexpected error occurred: { e } " ) time . sleep ( 10 ) # Wait before retrying if __name__ == "__main__" : try : main ( ) except Exception as e : logger . critical ( f"Critical error occurred: { e } " ) Python ã³ãŒã (ãŸãã¯ãã¡ã€ã«) ãã³ããŒããããæ¬¡ã®ã³ãã³ãã§ã³ãŒããå®è¡ããŸãã python3 vehicle_data_generator.py å®è¡ã«æåãããšã以äžã®ããã«è¡šç€ºãããŸã: INFO â Successfully wrote data to /home/ubuntu/workshop_dc/pubfile.txt AWS IoT Core ã³ã³ãœãŒã«ã§ä»¥äžã«ç§»åããŸã: ãã¹ã MQTT ãã¹ãã¯ã©ã€ã¢ã³ã ãããã¯ããµãã¹ã¯ã©ã€ããã: /topic/workshop/dc/pub å°çããŠããããŒã¿ã®ã¹ããªãŒã ã確èªã§ããã¯ãã§ã; ãã®ããŒã¿ã¯åæã«äœ¿çšãããã®ãšåãã§ãã å³ 1.6: AWS IoT Core ã«å°çããããŒã¿ã瀺ã MQTT ããã㯠ã¹ããã 4: AWS IoT Rule ãäœæ AWS IoT Core ã«ããŒã¿ãå°çããããšãåããã°ãBI ç®çã§ AWS åæãµãŒãã¹ã«ããŒã¿ãã«ãŒãã£ã³ã°ããããã® AWS IoT Rules ãã»ããã¢ããã§ããŸãã AWS IoT Core ã³ã³ãœãŒã« ã«ç§»åããŸã ããã²ãŒã·ã§ã³ãã€ã³ã® 管ç ã®äžã«ãã ã¡ãã»ãŒãžã®ã«ãŒãã£ã³ã° ãéžæããŸã ã«ãŒã« ãéžæããŸã ã«ãŒã«ãäœæ ãéžæããŸã é©åãªã«ãŒã«åãšã«ãŒã«ã®èª¬æãå
¥åãããæ¬¡ãžããéžæããŸã ã(å³ 1.7 åç
§) å³ 1.7: AWS IoT Rule ãäœæ SQL ã¹ããŒãã¡ã³ããèšå® ã»ã¯ã·ã§ã³ã§ã以äžã® SQL ã¹ããŒãã¡ã³ããå
¥åãã æ¬¡ãž ãéžæããŸã: SELECT * FROM '/topic/workshop/dc/pub' ã«ãŒã«ã¢ã¯ã·ã§ã³ãã¢ã¿ãã ã»ã¯ã·ã§ã³ã§ãKinesis Data Stream ãéžæãã以äžãäœæããŸã: ã¢ã¯ã·ã§ã³ 1 ååãæå®ããŠã¹ããªãŒã ãäœæ: simulatedVehicleData ããŒãã£ã·ã§ã³ããŒ: ${newuuid()} IAMããŒã«ã®éžæãšäœæ: simulatedVehicleRole ãšã©ãŒã¢ã¯ã·ã§ã³ AWS IoTãããã¯ãžã®ãªãããªãã·ã¥ãéžæ: /topic/workshop/dc/streamError IAM ããŒã«ãéžæ: simulatedVehicleRole å®äºãããé²ãã§ äœæ ãéžæããŸãã å³ 1.8: AWS IoT Rules ã¢ã¯ã·ã§ã³ ã¹ããã 5: Apache Flink ãš Apache Zeppelin ã䜿ã£ãŠ Amazon Kinesis Data Streams ã®ã¹ããªãŒãã³ã°ããŒã¿ãç¢ºèª ãã®æ®µéã§ã¯ãAmazon Kinesis Data Streams ( simulatedVehicleData ) ã«ããŒã¿ãã¹ããªãŒãã³ã°ãããŸãã ã³ã³ãœãŒã«ã§ Amazon Kinesis Data Streams ã«ç§»åããã¹ããªãŒã ãéžæããŸãã (å³ 1.9 åç
§) å³ 1.9: ã·ãã¥ã¬ãŒã·ã§ã³ãããè»äž¡ããŒã¿ã®ã¹ããªãŒã ããŒã¿åæã¿ããéžæãã I agree ãéžæããåŸã Create notebook ãéžæããŸãã (å³ 2.0 åç
§) å³ 2.0: Apache Flink Studio ããŒãããã¯ã®äœæ Studio ããŒãããã¯ãäœæãããããã¹ããªãŒãã³ã°ããŒã¿ãéžæããŠè¡šç€ºã§ããã¯ãã§ãã (å³ 2.1 åç
§) å³ 2.1: ã¹ããªãŒãã³ã°ããŒã¿ãã¥ãŒ ããã§ãã¹ããªãŒãã³ã°ããŒã¿ã®å¯èŠåãäœæã§ããã¯ãã§ãã ã¯ãªãŒã³ã¢ãã äžèŠãªè«æ±ãé¿ããããã«ãã¡ã€ã³ã® CloudFormation ãã³ãã¬ãŒã (ãã¹ããããã¹ã¿ãã¯ã§ã¯ãªã)ãAmazon EC2 ã€ã³ã¹ã¿ã³ã¹ (éçºçšã«äœæããå Žå)ãAmazon S3 ãã±ãã (ãã®ããã°çšã«æ°ããäœæããå Žå)ãIoT ã®ã¢ããšé¢é£ããããªã·ãŒãKinesis Data Stream (AWS 管çã® Apache Flink ãš Apache Zeppelin ãå«ã) ãåé€ããŸãã ãŸãšã UNECE WP.29 èŠå¶ã¯ãã³ãã¯ãã£ããã«ãŒã®ãµã€ããŒã»ãã¥ãªãã£ã確ä¿ããäžã§éèŠãªã¹ãããã瀺ããŠããŸãããã®èŠå¶ã¯ãèªåè»æ¥çã«å¯Ÿããè»äž¡ã®èšèšã補é ãéçšã®ããããåŽé¢ã«ã»ãã¥ãªãã£ãçµã¿èŸŒãããèŠæ±ããŠããŸããAWS IoT ãµãŒãã¹ã¯ããããã®èª²é¡ã«å¯ŸåŠããããã®å
æ¬çã§ã¹ã±ãŒã©ãã«ããã€ã»ãã¥ã¢ãªåºç€ãæäŸããŸãã ã³ãã¯ãã£ãããã€èªåéè»¢ã®æªæ¥ã«ã¯ãUNECE WP.29 ãªã©ã®å³æ ŒãªèŠå¶ã驿°çãªãã¯ãããžãŒãšã·ãŒã ã¬ã¹ã«çµ±åããããšãèŠæ±ããŸãã AWS IoT ã§ã¯ããã®é£æºã广çã«å®çŸãããµãŒãã¹ãæäŸããŠããŸãã ãã®çµ±åã¯åãªãèŠå¶ãžã®æºæ ãè¶
ãããã®ã§ã; æ¶è²»è
ã®ä¿¡é Œãæ°ã¥ããçžäºæ¥ç¶ãé²ãäžçã«ãããå®å
šæ§ã確ä¿ãããã®ã§ãã ãµã€ããŒã»ãã¥ãªãã£ã®æžå¿µã«ç©æ¥µçã«åãçµãããšã§ãåã
ã®è»äž¡ã®å®å
šæ§ã確ä¿ããã ãã§ãªããå°æ¥ã®ã¢ããªãã£åºç€ãã®ãã®ãå®ãããšãã§ããã®ã§ãã é¢é£ãããªã³ã¯ Uniform provisions concerning the approval of vehicles with regards to cyber security and cyber security management system AWS IoT Zero Trust workshop èè
ã«ã€ã㊠Syed Rehan Sysed Rehan ã¯ãAmazon Web Services(AWS)ã®IoTã»ãã¥ãªãã£çµç¹å
ã§æŽ»åããã·ãã¢ãµã€ããŒã»ãã¥ãªãã£è£œåãããŒãžã£ãŒã§ããAWS IoT ãæ©æ¢°åŠç¿ããµã€ããŒã»ãã¥ãªãã£ã«é¢ããæžç±ã®èè
ãšããŠãã°ããŒãã«ãªåœ¹å²ã«å¹
åºãå°éç¥èããããããŠããŸãããµã€ãŒãã¯ãã»ãã¥ãªãã£å°éå®¶ãCISOãéçºè
ãã»ãã¥ãªãã£æææ±ºå®è
ãšååããAWS ã»ãã¥ãªãã£ãµãŒãã¹ãšãœãªã¥ãŒã·ã§ã³ã®æ¡çšãä¿é²ããããã«ã倿§ãªé¡§å®¢å±€ãæ±ããŠããŸãããµã€ããŒã»ãã¥ãªãã£ãæ©æ¢°åŠç¿ã人工ç¥èœãIoT ãã¯ã©ãŠãæè¡ã«é¢ããæ·±ãç¥èãæã¡ãæ°èäŒæ¥ããå€§äŒæ¥ãŸã§å¹
åºãé¡§å®¢ãæ¯æŽããŠããŸããAWS ç°å¢å
ã§å®å
šãª IoT ãML ãAI ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ããŠããŸãã ãã®èšäºã¯ Sysed Rehan ã«ãã£ãŠæžããã Securing the future of mobility: UNECE WP.29 and AWS IoT for connected vehicle cybersecurity ã®æ¥æ¬èªèš³ã§ãããã®èšäºã¯ åºåäºæ¥çµ±æ¬æ¬éš ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ã ä¹
次米ã翻蚳ããŸããã