在亚马逊云科技上构建基于 SOAFEE 的云原生软件定义汽车实践

亚马逊云科技
Amazon IoT Greengrass
9
0
{"value":"前言\n\n随着汽车行业智能化、网联化的加速发展,以智能座舱、辅助驾驶与自动驾驶、车联网为代表的汽车软件不断推陈出新,传统以 ECU 为核心面向信号的分布式电子电气架构很难满足智能网联时代消费者对汽车的需求,新一代的电子电气架构朝着集中化的方向演进,域控制器已成为主流,未来将会出现车载中央计算平台。汽车硬件会朝着标品化方向发展,车辆功能与用户体验的差异性依靠车载软件与云上服务来体现,“软硬件解耦、硬件预埋、软件升级”将会带来汽车更长生命周期内的价值持续释放。\n\n\n\n软件定义汽车已经成为行业的共识,但企业需要构建新的软件开发能力来应对软件定义时代的挑战。例如,为提高开发的效率,避免在昂贵且有限的嵌入式平台上开发,需要采用算力更强大、资源供给更便捷的通用计算平台;具备敏捷开发能力,软件代码的构建、持续集成与验证工作需要能够自动执行,以便快速验证,满足软件迭代的要求;加强软件的可移植性,在开发环境中编译的程序需要在不同的嵌入式设备中运行,包括硬件台架、板卡、车端,避免环境的差异性带来代码重构和重复编译对研发效率的降低;海量数据的管理包括数据存储、查找、处理,加速 AI/ML 模型的训练过程;降低软件组件之间的相互依赖性,减少软件升级对其他功能的影响,不同安全要求与实时性要求的软件相互隔离与独立;车载软件代码量越来越多,要能够有效管理维护这些代码,并利用更广泛的生态资源与能力共同开发软件。\n\n\n\n2021年由 Arm、亚马逊云科技和其他创始成员共同宣布成立嵌入式边缘的可扩展开放架构 SOAFEE (Scalable Open Architecture For Embedded Edge) 特别兴趣小组 (SIG) ,联合车厂、半导体公司、软件公司、云技术的领导企业共同定义一个新的开放标准架构来实现软件定义汽车的最低级别技术栈,提供一个参考实现,使云原生技术(如微服务、容器和编排系统)首次与汽车功能安全相结合,从而保持环境对等。\n\n\n\n基于亚马逊云科技云上的服务和云原生技术,结合 SOAFEE 提供的环境对等技术栈,我们可以将车载软件的开发工作放在云上,利用云的弹性资源供给和随处可访问性,让开发人员能够并行地进行开发测试,能够满足海量数据处理与训练和测试验证工作所需要的计算能力;通过持续集成/持续部署 (CI/CD) 工具链让代码从提交到编译验证,再到部署到目标嵌入式设备,实现自动化的完成,提升迭代效率;微服务技术与容器化技术确保面向服务架构设计的应用系统运行在容器中,运行环境独立,既能够独立更新部署,也能够利用 SOAFEE 提供的混合任务编排器确保了容器运行所需的功能安全与实时性要求得到满足;云上 Amazon Graviton 提供与车端对等指令集 (ISA) 环境,编译验证后的软件可以顺利的运行在基于 Arm IP 授权芯片的 HPC、硬件台架和车上;SOAFEE 的开放架构,以及亚马逊云科技对开源生态的支持,能够利用开源技术赋能汽车软件的开发,加快汽车软件的开发效率,显著降低研发成本,让软件定义汽车成为可能。\n\n\n\n本文将介绍如何在亚马逊云科技云上构建基于 SOAFEE 的云原生软件定义汽车的实践,它基于 ARM 架构的 Amazon Graviton 实例构建云上符合 SOAFEE 规范的对等环境,使用亚马逊云科技原生的 CI/CD 工具链,汽车软件在云上构建与验证,并通过 Amazon IoT Greengrass 部署到端侧 AVA 开发者平台的对等环境中运行,实现车云一体的云原生汽车软件开发流程。\n\n#### **关于 Amazon Graviton, Amazon CodePipeline, Amazon CodeBuild, Amazon ECR, Amazon IoT Greengrass**\n\n基于 ARM IP 由亚马逊云科技自定义 SoC 的 Amazon Graviton 处理器为 Amazon EC2 中运行的云工作负载提供最佳性价比,是运行高级计算密集型工作负载的理想选择。其中包括例如高性能计算 (HPC) 、批处理、广告投放、视频编码、游戏、科学建模、分布式分析和基于 CPU 的机器学习推理等在内的工作负载。\n\n\n\nAmazon CodePipeline 是一种完全托管的持续集成与持续交付服务,可以帮助您实现发布管道的自动化,从而实现快速而可靠的应用程序和基础设施更新。\n\n\n\nAmazon CodeBuild 是一项完全托管的持续集成服务,可编译源代码、运行测试以及生成可供部署的软件包。使用 CodeBuild,您无需预置、管理和扩展自己的构建服务器。\n\n\nAmazon Elastic Container Registry (Amazon ECR) 是完全托管式容器注册表,提供高性能托管,让您能在任何地方可靠地部署应用程序映像和构件。\n\n\n\nAmazon IoT Greengrass 是一种开源边缘运行时和云服务,用于构建、部署和管理设备软件。使用预构建或定制的模块化组件更快地完成构建,您可以轻松地添加或移除这些组件以控制设备软件部署。大规模地远程部署和管理设备软件和配置,无需固件更新。通过 Amazon IoT Greengrass 能够轻松地为边缘设备带来智能。\n\n#### **解决方案架构综述**\n\n本方案阐述了在亚马逊云科技云上构建基于 SOAFEE 开放架构及云原生概念的软件定义汽车的方案。它基于 ARM 架构的 Amazon Graviton 实例构建云端符合 SOAFEE 规范的环境,使用亚马逊云科技原生的 DevOps CI/CD 工具链,实现云端构建应用镜像,通过 Amazon IoT Greengrass 部署到云端环境运行、测试,之后部署到端侧同样符合 SOAFEE 规范的 **AVA 开发者平台**([https://docs.ipi.wiki/COMHPC/ava/index.html](https://docs.ipi.wiki/COMHPC/ava/index.html))或树莓派对等硬件环境运行、测试。实现了车云环境对等的云原生软件开发流程。\n\n方案的整体架构如下:\n\n![image.png](https://dev-media.amazoncloud.cn/d115c12582b24ebf9e6918453c2b3411_image.png)\n\n#### **先决条件**\n\n\n\n- 一个亚马逊云科技账户,Admin 用户权限及相应 Access Key/Secrete key\n- 一部开发主机或 EC2 虚拟机, Mac 或 Linux,安装 Amazon Command Line Interface\n- AVA Developer Platform\n- 一部树莓派 4B\n\n#### **演练操作步骤**\n\n\n\n本演练操作中有四个部分:\n\n\n\n- 在亚马逊云科技云上部署 CI/CD 流水线\n- 部署SOAFEE规范的云端 Graviton 实例环境\n- 配置车端SOAFEE规范的 AVA Developer Platform 或树莓派环境\n- 触发 CI/CD 流水线,车云对等环境运行 YOLO-V6 应用\n\n##### **一、在亚马逊云科技上部署 CI/CD 流水线**\n\n本部分将在使用 CDK 在 Amazon cn-north-1 区域部署 CI/CD 流水线。\n\n![image.png](https://dev-media.amazoncloud.cn/7a1561ceea87409c93c218ff4cc681a2_image.png)\n\na). 在开发主机上 clone CDK 代码:\n\n[https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog](https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog)\n\n```\ngit clone https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog.git\n```\n\nb). amazon configure 配置账户 access key, secrete key:\n\n\n\n```\naws configure\nAWS Access Key ID [****************WO5D]: \nAWS Secret Access Key [****************cJ8M]: \nDefault region name [cn-north-1]: \nDefault output format [json]:\n```\n\n\nc). 配置 CDK 环境:\n\n\n\n```\nexport ACCOUNT_ID=<ACCOUNT_ID>\nexport AWS_REGION=cn-north-1\ncd aws-automotive-soafee-env-parity-blog/ \npython3 -m venv .venv\nsource .venv/bin/activate\npip install --upgrade aws-cdk.core==1.99.0 wheel pandas pillow cython pycocotools matplotlib\npip install -r requirements.txt\ncdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION\ncdk synth\ncdk ls\n```\n\n\n输出结果如图所示:\n\n![image.png](https://dev-media.amazoncloud.cn/ee1fc1dd9de44d109acbd77813696954_image.png)\n\nd). 构建 CI/CD 流水线:\n\n\n\n```\ncdk deploy yolo-v6-application-pipeline\n```\n\n构建过程中输入\"y\"确认构建,构建过程大概持续几分钟。\n\n\n\n您可以在 CloudFormation Console 中看到 yolo-v6-application-pipeline 构建成功。\n\n![image.png](https://dev-media.amazoncloud.cn/6f3e3d6a7afe46c78fb71c9e1da63b59_image.png)\n\n\n在 CodePipeline 的 Console 中可以看到 yolo-v6-applicaion 的 pipeline。\n\n![image.png](https://dev-media.amazoncloud.cn/384c95863bc94d2db2a5b48a09e3df3b_image.png)\n\n在 CodeCommit 中可以看到构建了一个空的 yolo-v6-application repository。\n\n![image.png](https://dev-media.amazoncloud.cn/cd44e272c8124a039b842930198e29b0_image.png)\n\n##### **二、部署 SOAFEE 规范的云端 Graviton 实例环境**\n\n\n\n在本节中,您将部署一个支持 SOAFEE 规范的 Yocto – EWAOL Linux AMI 到基于 Amazon Graviton2 的 EC2 实例。我们预先根据 guide 制作了一个 AMI 共享到 community。您也可以按照 guide 自行构建 AMI,部署在其他亚马逊云科技区域,进行本文章的演练。\n\nYocto:\n\n[https://www.yoctoproject.org](https://www.yoctoproject.org)\n\nEWAOL:\n\n[https://gitlab.arm.com/ewaol/meta-ewaol](https://gitlab.arm.com/ewaol/meta-ewaol)\n\nguide:\n\n[https://aws.amazon.com/cn/blogs/industries/building-an-automotive-embedded-linux-image-for-edge-using-arm-graviton-yocto-project-soafee/](https://aws.amazon.com/cn/blogs/industries/building-an-automotive-embedded-linux-image-for-edge-using-arm-graviton-yocto-project-soafee/)\n\n\n\na). 登录 Amazon cn-north-1 的 EC2 控制台:\n\n\n\n点击 Launch instance,\n\n\n\n在 Step 1: Choose an Amazon Machine Image (AMI) 的搜索框中输入 AMI:ami-055b51e617a37d3c9,在 Community AMI 中会找到这个 AMI 镜像。\n\n![image.png](https://dev-media.amazoncloud.cn/9af96b2b15204543a8fd0ff4d9f28425_image.png)\n\nb). 选择 Select 构建 EC2 实例:\n\n\n\nInstance type:t4g.medium\n\nStorage:32GB\n\n\n\n其它选择默认设置。\n\n![image.png](https://dev-media.amazoncloud.cn/3bc19672d94f40e38f53972070be9b53_image.png)\n\nLaunch,\n\n\n\n选择使用已存在的 key pair 或者构建一个新的 key pair,这个 key pair 用来后续登录 EC2 做相关工作。\n\n![image.png](https://dev-media.amazoncloud.cn/ab88d5e8ffb24c4dbc86a0976ffabcdd_image.png)\n\nLaunch Instance,可以看到符合 SOAFEE 规范的基于 ARM 的 Amazon Graviton2 t4g 实例构建成功。\n\n![image.png](https://dev-media.amazoncloud.cn/6e85426fe2b84c48a6c1f9359e6182af_image.png)\n\nc). 登录 EC2:\n\n\n\n参考指南登录你的 EC2,可以使用指南中推荐的方式或者其他 SSH 客户端,使用步骤 b) 保存的 key,用户名:ewaol ,登录 EC2。\n\n![image.png](https://dev-media.amazoncloud.cn/a7fecaa8a20d40ae82e29209a35a6f1c_image.png)\n\n指南:\n\n[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)\n\n\n\nd). 调整 root partition 空间大小:\n\n\n\n你可以逐条指令执行,或者创建一个批处理脚本,执行前后用 df -h 命令查看调整结果。\n\n\n\n```\n#!/bin/sh\n# disabling swap\nswapoff -a\nsed -i '/.*swap.*/d' /etc/fstab\n# trick to fix GPT\nprintf \"fix\\n\" | parted ---pretend-input-tty /dev/nvme0n1 print\n# remove partition 3 (swap)\nparted -s /dev/nvme0n1 rm 3\n# resize partition 2 to use 100% of available free space\nparted -s /dev/nvme0n1 resizepart 2 100%\n# resizing ext4 filesystem\nresize2fs /dev/nvme0n1p2\n```\n\n\ne). Pull Greengrass docker 镜像:\n\n\n\n```\ndocker login -u gaoykxp\npassword: dckr_pat_V2EdQvcBONakG2HBcTan168yi14\n```\n\n![image.png](https://dev-media.amazoncloud.cn/31001cf873194ec3bd3a889ab74cd512_image.png)\n\n```\ndocker pull gaoykxp/greengrass-v2-ubuntu-2204-aarch64:0.2\n```\n\n![image.png](https://dev-media.amazoncloud.cn/d1dda5b5035d466eba33723251d69df8_image.png)\n\n\nf). 创建 Greengrass 核心设备:\n\n\n\n执行如下命令运行 greengrass docker 容器:\n\n\n\n```\ndocker run -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --user root gaoykx\np/greengrass-v2-ubuntu-2204-aarch64:0.2 /bin/bash\n```\n\n![image.png](https://dev-media.amazoncloud.cn/09d00b94d4a04e798b75c46f384e13cd_image.png)\n\n设置环境变量,使用 access key 和 secret key:\n\n\n\n```\ncd /home\nexport AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx\nexport AWS_SECRET_ACCESS_KEY=xxxxxxxxxxx\n```\n\n执行以下命令创建并注册 greengrass 核心设备:\n\n\n\n```\njava -Droot=\"/greengrass/v2\" -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-EC2-GreengrassCore \\\n --thing-group-name MySOAFEE-EC2-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n```\n\n![image.png](https://dev-media.amazoncloud.cn/7d9363de85784567bd1a68524b6025cd_image.png)\n\n\n\n```\n/greengrass/v2/alts/current/distro/bin/loader\n```\n\n启动 greengreass。\n\n![image.png](https://dev-media.amazoncloud.cn/3d46ac3d9fdf4961bb94ac1822086010_image.png)\n\n\n![image.png](https://dev-media.amazoncloud.cn/e482d73024324c6c8901281c644743a9_image.png)\n\n在 IoT Core 的控制台中可以看到新创建的 Greengrass 核心设备。\n\n![image.png](https://dev-media.amazoncloud.cn/8f7510eabbf34aafbd8c9f611408b65b_image.png)\n\n\n\n##### **三、配置车端 SOAFEE 规范的 AVA Developer Platform 或树莓派环境**\n\n**AVA Developer Platform** 是凌华科技(ADLINK)的汽车开发者平台,搭载了基于 ARM Neoverse 的 Ampere 处理器,作为高性能32核计算系统,能够运行自主工作负载,它允许开发人员利用加速器硬件(例如GPU)来补充高性能中央处理器(CPU)。它更切近汽车实际运行的计算平台,如果您有机会拿到 AVA 开发平台,可以按照以下步骤操作 Yocto-EWAOL 的环境到 AVA 环境。\n\n\n\nAVA Developer Platform:\n\n[https://docs.ipi.wiki/COMHPC/ava/index.html](https://docs.ipi.wiki/COMHPC/ava/index.html)\n\n\n\na). 设置 AVA 符合 SOAFEE 规范的 Yocto-EWAOL 环境:\n\n\n\n**Yocto** and **EWAOL** 是 ARM SOAFEE 规范的一种实现,请按照**指南**内容设置 AVA Developer Platform,限于篇幅,这里不做细节介绍。\n\n\n\nYocto :\n\n[https://www.yoctoproject.org](https://www.yoctoproject.org)\n\nEWAOL:\n\n[https://gitlab.arm.com/ewaol/meta-ewaol](https://gitlab.arm.com/ewaol/meta-ewaol)\n\n指南:\n\n[https://docs.ipi.wiki/COMHPC/ava/YoctoInstallation.html](https://docs.ipi.wiki/COMHPC/ava/YoctoInstallation.html)\n\n\n\nb). 登录创建 Greengrass 核心设备:\n\n\n\nSSH 登录 AVA 控制终端,用户名 root,密码为空。\n\n按照“二,部署SOAFEE规范的云端Graviton实例环境”部分, 步骤 e) Pull Greengrass docker 镜像, f) 创建Greengrass 核心设备。\n\n![image.png](https://dev-media.amazoncloud.cn/a84b06102dab4ba9bfd700d8086fa94f_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/c97900f42c764c10922d359fcf8f79cf_image.png)\n\n注意将 thing-name 修改,以区分云端 EC2 的 Greengrass 核心设备。\n\n\n\n```\njava -Droot=\"/greengrass/v2\" -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-Edge-GreengrassCore \\\n --thing-group-name MySOAFEE-Edge-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n```\n\n![image.png](https://dev-media.amazoncloud.cn/8a0d618d10264a93ad8c910afa8427bf_image.png)\n\n\n创建成功后在 IoT Core 控制台看到新创建的 Greengrass 核心设备。\n\n\n\n![image.png](https://dev-media.amazoncloud.cn/befcf04f8f104ce892d86286aa37c38f_image.png)\n\n树莓派是一种低成本嵌入式单板计算机,具有基于 ARM 的集成 CPU。就本文章而言,如果您没有 AVA 开发平台,它可以作为我们介绍的车云环境对等概念的快速开发验证目标。\n\n\n\na). 设置树莓派 4B 符合 SOAFEE 规范的 Yocto-EWAOL 的环境:\n\n\n\n请按照 **workshop** ([https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US/10-getting-started/setup-rpi](https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US/10-getting-started/setup-rpi)) 的内容设置树莓派 4B,限于篇幅,这里不做细节介绍。\n\n\n\nb). 创建 Greengrass 核心设备:\n\n\n\nSSH 登录树莓派的控制终端,用户名:root ,密码:aws_workshop。\n\n\n\n按照“二,部署 SOAFEE 规范的云端 Graviton 实例环境” 步骤e) Pull Greengrass docker 镜像, f) 创建Greengrass 核心设备。\n\n\n\n注意将 thing-name 修改,以区分云端 EC2 的 greengrass 核心设备。\n\n\n\n其它操作和 AVA 平台一样。\n\n\n\n```\njava -Droot=\"/greengrass/v2\" -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-Edge-GreengrassCore \\\n --thing-group-name MySOAFEE-Edge-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n```\n\n\n##### **四、触发 CI/CD 流水线,车云对等环境运行 YOLO-V6 应用**\n\n这个部分将演示提交 YOLO-V6 应用代码,CodeBuild 的构建配置文件,提交到 CodeCommit 并触发 CodePipleline 流水线,构建 YOLO-V6 Docker 镜像,推送到 ECR。Manual Approve 后,通过 IoT Core,Greengrass 部署 YOLO-V6 应用到云端环境,测试及验证。最后,Manual Approve 后,部署到车边缘环境进行测试。\n\n\n\n**第一部分,云端 EC2 对等环境部署、测试:**\n\n\n\na). 将 build file, YOLO-V6 应用代码,推理图片复制到 yolo-v6-application 本地 repository:\n\n\n\n```\ngit clone https://git-codecommit.cn-north-1.amazonaws.com.cn/v1/repos/yolo-v6-application\ncp -r ~/aws-automotive-soafee-env-parity-blog /yolo_v6_image_src /* ~/yolo-v6-application/\n\n```\n\nb). 提交代码,触发流水线:\n\n\n\nCodeCommit 用户名,密码可以到 IAM, Users, Security Credentials, HTTPS Git credentials for Amazon CodeCommit 获取。\n\n\n\n```\ncd ~/yolo-v6-application\ngit add .\ngit commit -m \"First commit yolo v6 sample application.\"\ngit push\n```\n\nc). 构建 YOLO-V6 应用镜像,推送到 ECR:\n\n![image.png](https://dev-media.amazoncloud.cn/abda5eb17ae24726a50eafce55e8d240_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/f2ef76d49b824fe6804f4f0d8c8c35e8_image.png)\n\nd). 在 CodePipeline 中 Manual Approval 中 approve, 将 YOLO-v6 部署到云端 EC2 SOAFEE 环境。\n\n\n\n这个过程将 YOLO-v6 的 Docker 镜像构为建 Greengrass 的 Component,通过 IoT Core 将 Component 部署到 EC2 中。确保“二,部署 SOAFEE 规范的云端 Graviton 实例环境”部分中的 Greengrass 在正常运行。在 IoT Core 中查看部署的状态。\n\n![image.png](https://dev-media.amazoncloud.cn/113ae790fd004432b870ff8e78746429_image.png)\n\n\n![image.png](https://dev-media.amazoncloud.cn/b976bc08029648c5ba18558c2b22c42e_image.png)\n\ne). 部署成功之后,登录到 EC2 控制端,验证 YOLO-v6 应用。\n\n\n\n查看新的 YOLO-v6 镜像是否已经 pull 到 EC2。\n\n![image.png](https://dev-media.amazoncloud.cn/94e1e26a047a40f999db1c089e0c72b6_image.png)\n\n运行命令运行 YOLO-v6 应用,它将执行图片推理的操作,并把推理结果保存在 EC2 host 主机的 ~/predictions 文件夹下:\n\n\n\n```\ndocker run -v ~/predictions:/home/YOLOv6/runs 501234xxxxxx.dkr.ecr.cn-north-1.amazonaws.\n```\n\n![image.png](https://dev-media.amazoncloud.cn/e0dd660dfe7b45529f531631f9f2d55e_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/6efb2361f66844728172bb1ccc0a14ec_image.png)\n\n将图片从 EC2 中 scp 命令或者 SFTP 客户端将推理后的图片下载到本地电脑查看。\n\n![image.png](https://dev-media.amazoncloud.cn/89474f708153409b85c3ffbc23c1100d_image.png)\n\n**第二部分,车端对等环境部署、测试:**\n\n\n\na). 在 CodePipeline 的 Manual Approval 中 approve, 将 YOLO-v6 部署到边缘端 SOAFEE 环境。\n\n\n\n确保“二,部署 SOAFEE 规范的云端 Graviton 实例环境”部分的 Greengrass 在正常运行。在 IoT Core 中查看部署的状态。\n\n![image.png](https://dev-media.amazoncloud.cn/1ca59b179ed547cfbd23b9c4d5bae013_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/6b0bd412031a432ebb2694c71fac26c2_image.png)\n\nb). 部署成功之后,登录到车边缘设备控制端,验证 YOLO-v6 应用。\n\n\n\n我们这里以 AVA 操作为例,树莓派操作步骤一致。\n\n\n\n打开另外一个 scp 客户端,登录 AVA 平台,查看刚刚部署的 YOLO-v6 docker 应用镜像。\n\n![image.png](https://dev-media.amazoncloud.cn/fbdb82f22e964e268d76f305f6dfa174_image.png)\n\n运行命令运行 YOLO-v6 应用,它将执行图片推理的操作:\n\n\n\n```\ndocker run -v ~/predictions:/home/YOLOv6/runs 501234xxxxxx.dkr.ecr.cn-north-1.amazonaws.co\n```\n\n![image.png](https://dev-media.amazoncloud.cn/50522e8db9964741bf4e07bb2c9e3f52_image.png)\n\n\n在 ~/predictions 文件夹下找到推理后的照片,如云端 EC2 中的操作一样,可以将其 scp 下载到本地电脑查看。\n\n\n\n![image.png](https://dev-media.amazoncloud.cn/f01814a3b5b949bb93ad7f4b97cfab65_image.png)\n\n#### **清理环境**\n\n演练结束之后,请将相关服务资源关闭。\n\n\n\n在 aws-automotive-soafee-env-parity-blog 文件夹下执行命令清理 cdk 创建的资源:\n\n\n\n```cdk destroy```\n\n\n\n\n在 EC2 的控制台中 Terminate EC2实例。\n\n#### **总结**\n\n在本文中,我们按步骤介绍了如何在亚马逊云科技云上构建基于 SOAFEE 开放架构及云原生概念的软件定义汽车的方案。包括构建云端符合 SOAFEE 规范基于 Amazon Graviton 实例的环境,及构建车边缘端符合 SOAFEE 规范的 AVA 平台及树莓派对等环境。并使用亚马逊云科技原生的 DevOps CI/CD 工具链,实现云端构建应用,云端环境运行、测试,车端对等硬件环境运行、测试,实现了车云环境对等的云原生软件开发流程。\n\n#### 参考资料\n\nGetting Started with Cloud-Native Automotive Software Development:\n\n[https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US](https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US)\n\n##### **本篇作者**\n\n**高业坤**\n\n![image.png](1)\n\n亚马逊云科技专业服务团队 IoT 架构师。负责基于 Amazon IoT 的解决方案咨询、架构与交付,深度参与过智慧工厂等行业的 IoT 解决方案的咨询与交付。在智能家居、智慧安防等 IoT 行业拥有十年以上软件研发管理经验。\n\n**李焱**\n\n![image.png](2)\n\n亚马逊云科技专业服务团队企业服务经理,有20年的从业经验,担任过软件工程师、解决方案经理、业务拓展经理等不同角色,有丰富的汽车行业解决方案与业务拓展经验,目前负责软件定义汽车解决方案的设计与业务推广。","render":"<p>前言</p>\n<p>随着汽车行业智能化、网联化的加速发展,以智能座舱、辅助驾驶与自动驾驶、车联网为代表的汽车软件不断推陈出新,传统以 ECU 为核心面向信号的分布式电子电气架构很难满足智能网联时代消费者对汽车的需求,新一代的电子电气架构朝着集中化的方向演进,域控制器已成为主流,未来将会出现车载中央计算平台。汽车硬件会朝着标品化方向发展,车辆功能与用户体验的差异性依靠车载软件与云上服务来体现,“软硬件解耦、硬件预埋、软件升级”将会带来汽车更长生命周期内的价值持续释放。</p>\n<p>软件定义汽车已经成为行业的共识,但企业需要构建新的软件开发能力来应对软件定义时代的挑战。例如,为提高开发的效率,避免在昂贵且有限的嵌入式平台上开发,需要采用算力更强大、资源供给更便捷的通用计算平台;具备敏捷开发能力,软件代码的构建、持续集成与验证工作需要能够自动执行,以便快速验证,满足软件迭代的要求;加强软件的可移植性,在开发环境中编译的程序需要在不同的嵌入式设备中运行,包括硬件台架、板卡、车端,避免环境的差异性带来代码重构和重复编译对研发效率的降低;海量数据的管理包括数据存储、查找、处理,加速 AI/ML 模型的训练过程;降低软件组件之间的相互依赖性,减少软件升级对其他功能的影响,不同安全要求与实时性要求的软件相互隔离与独立;车载软件代码量越来越多,要能够有效管理维护这些代码,并利用更广泛的生态资源与能力共同开发软件。</p>\n<p>2021年由 Arm、亚马逊云科技和其他创始成员共同宣布成立嵌入式边缘的可扩展开放架构 SOAFEE (Scalable Open Architecture For Embedded Edge) 特别兴趣小组 (SIG) ,联合车厂、半导体公司、软件公司、云技术的领导企业共同定义一个新的开放标准架构来实现软件定义汽车的最低级别技术栈,提供一个参考实现,使云原生技术(如微服务、容器和编排系统)首次与汽车功能安全相结合,从而保持环境对等。</p>\n<p>基于亚马逊云科技云上的服务和云原生技术,结合 SOAFEE 提供的环境对等技术栈,我们可以将车载软件的开发工作放在云上,利用云的弹性资源供给和随处可访问性,让开发人员能够并行地进行开发测试,能够满足海量数据处理与训练和测试验证工作所需要的计算能力;通过持续集成/持续部署 (CI/CD) 工具链让代码从提交到编译验证,再到部署到目标嵌入式设备,实现自动化的完成,提升迭代效率;微服务技术与容器化技术确保面向服务架构设计的应用系统运行在容器中,运行环境独立,既能够独立更新部署,也能够利用 SOAFEE 提供的混合任务编排器确保了容器运行所需的功能安全与实时性要求得到满足;云上 Amazon Graviton 提供与车端对等指令集 (ISA) 环境,编译验证后的软件可以顺利的运行在基于 Arm IP 授权芯片的 HPC、硬件台架和车上;SOAFEE 的开放架构,以及亚马逊云科技对开源生态的支持,能够利用开源技术赋能汽车软件的开发,加快汽车软件的开发效率,显著降低研发成本,让软件定义汽车成为可能。</p>\n<p>本文将介绍如何在亚马逊云科技云上构建基于 SOAFEE 的云原生软件定义汽车的实践,它基于 ARM 架构的 Amazon Graviton 实例构建云上符合 SOAFEE 规范的对等环境,使用亚马逊云科技原生的 CI/CD 工具链,汽车软件在云上构建与验证,并通过 Amazon IoT Greengrass 部署到端侧 AVA 开发者平台的对等环境中运行,实现车云一体的云原生汽车软件开发流程。</p>\n<h4><a id=\"_Amazon_Graviton_Amazon_CodePipeline_Amazon_CodeBuild_Amazon_ECR_Amazon_IoT_Greengrass_20\"></a><strong>关于 Amazon Graviton, Amazon CodePipeline, Amazon CodeBuild, Amazon ECR, Amazon IoT Greengrass</strong></h4>\n<p>基于 ARM IP 由亚马逊云科技自定义 SoC 的 Amazon Graviton 处理器为 Amazon EC2 中运行的云工作负载提供最佳性价比,是运行高级计算密集型工作负载的理想选择。其中包括例如高性能计算 (HPC) 、批处理、广告投放、视频编码、游戏、科学建模、分布式分析和基于 CPU 的机器学习推理等在内的工作负载。</p>\n<p>Amazon CodePipeline 是一种完全托管的持续集成与持续交付服务,可以帮助您实现发布管道的自动化,从而实现快速而可靠的应用程序和基础设施更新。</p>\n<p>Amazon CodeBuild 是一项完全托管的持续集成服务,可编译源代码、运行测试以及生成可供部署的软件包。使用 CodeBuild,您无需预置、管理和扩展自己的构建服务器。</p>\n<p>Amazon Elastic Container Registry (Amazon ECR) 是完全托管式容器注册表,提供高性能托管,让您能在任何地方可靠地部署应用程序映像和构件。</p>\n<p>Amazon IoT Greengrass 是一种开源边缘运行时和云服务,用于构建、部署和管理设备软件。使用预构建或定制的模块化组件更快地完成构建,您可以轻松地添加或移除这些组件以控制设备软件部署。大规模地远程部署和管理设备软件和配置,无需固件更新。通过 Amazon IoT Greengrass 能够轻松地为边缘设备带来智能。</p>\n<h4><a id=\"_39\"></a><strong>解决方案架构综述</strong></h4>\n<p>本方案阐述了在亚马逊云科技云上构建基于 SOAFEE 开放架构及云原生概念的软件定义汽车的方案。它基于 ARM 架构的 Amazon Graviton 实例构建云端符合 SOAFEE 规范的环境,使用亚马逊云科技原生的 DevOps CI/CD 工具链,实现云端构建应用镜像,通过 Amazon IoT Greengrass 部署到云端环境运行、测试,之后部署到端侧同样符合 SOAFEE 规范的 <strong>AVA 开发者平台</strong>(<a href=\"https://docs.ipi.wiki/COMHPC/ava/index.html\" target=\"_blank\">https://docs.ipi.wiki/COMHPC/ava/index.html</a>)或树莓派对等硬件环境运行、测试。实现了车云环境对等的云原生软件开发流程。</p>\n<p>方案的整体架构如下:</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/d115c12582b24ebf9e6918453c2b3411_image.png\" alt=\"image.png\" /></p>\n<h4><a id=\"_47\"></a><strong>先决条件</strong></h4>\n<ul>\n<li>一个亚马逊云科技账户,Admin 用户权限及相应 Access Key/Secrete key</li>\n<li>一部开发主机或 EC2 虚拟机, Mac 或 Linux,安装 Amazon Command Line Interface</li>\n<li>AVA Developer Platform</li>\n<li>一部树莓派 4B</li>\n</ul>\n<h4><a id=\"_56\"></a><strong>演练操作步骤</strong></h4>\n<p>本演练操作中有四个部分:</p>\n<ul>\n<li>在亚马逊云科技云上部署 CI/CD 流水线</li>\n<li>部署SOAFEE规范的云端 Graviton 实例环境</li>\n<li>配置车端SOAFEE规范的 AVA Developer Platform 或树莓派环境</li>\n<li>触发 CI/CD 流水线,车云对等环境运行 YOLO-V6 应用</li>\n</ul>\n<h5><a id=\"_CICD__69\"></a><strong>一、在亚马逊云科技上部署 CI/CD 流水线</strong></h5>\n<p>本部分将在使用 CDK 在 Amazon cn-north-1 区域部署 CI/CD 流水线。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/7a1561ceea87409c93c218ff4cc681a2_image.png\" alt=\"image.png\" /></p>\n<p>a). 在开发主机上 clone CDK 代码:</p>\n<p><a href=\"https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog\" target=\"_blank\">https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog</a></p>\n<pre><code class=\"lang-\">git clone https://github.com/gaoykxp/aws-automotive-soafee-env-parity-blog.git\n</code></pre>\n<p>b). amazon configure 配置账户 access key, secrete key:</p>\n<pre><code class=\"lang-\">aws configure\nAWS Access Key ID [****************WO5D]: \nAWS Secret Access Key [****************cJ8M]: \nDefault region name [cn-north-1]: \nDefault output format [json]:\n</code></pre>\n<p>c). 配置 CDK 环境:</p>\n<pre><code class=\"lang-\">export ACCOUNT_ID=&lt;ACCOUNT_ID&gt;\nexport AWS_REGION=cn-north-1\ncd aws-automotive-soafee-env-parity-blog/ \npython3 -m venv .venv\nsource .venv/bin/activate\npip install --upgrade aws-cdk.core==1.99.0 wheel pandas pillow cython pycocotools matplotlib\npip install -r requirements.txt\ncdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION\ncdk synth\ncdk ls\n</code></pre>\n<p>输出结果如图所示:</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/ee1fc1dd9de44d109acbd77813696954_image.png\" alt=\"image.png\" /></p>\n<p>d). 构建 CI/CD 流水线:</p>\n<pre><code class=\"lang-\">cdk deploy yolo-v6-application-pipeline\n</code></pre>\n<p>构建过程中输入&quot;y&quot;确认构建,构建过程大概持续几分钟。</p>\n<p>您可以在 CloudFormation Console 中看到 yolo-v6-application-pipeline 构建成功。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/6f3e3d6a7afe46c78fb71c9e1da63b59_image.png\" alt=\"image.png\" /></p>\n<p>在 CodePipeline 的 Console 中可以看到 yolo-v6-applicaion 的 pipeline。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/384c95863bc94d2db2a5b48a09e3df3b_image.png\" alt=\"image.png\" /></p>\n<p>在 CodeCommit 中可以看到构建了一个空的 yolo-v6-application repository。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/cd44e272c8124a039b842930198e29b0_image.png\" alt=\"image.png\" /></p>\n<h5><a id=\"_SOAFEE__Graviton__143\"></a><strong>二、部署 SOAFEE 规范的云端 Graviton 实例环境</strong></h5>\n<p>在本节中,您将部署一个支持 SOAFEE 规范的 Yocto – EWAOL Linux AMI 到基于 Amazon Graviton2 的 EC2 实例。我们预先根据 guide 制作了一个 AMI 共享到 community。您也可以按照 guide 自行构建 AMI,部署在其他亚马逊云科技区域,进行本文章的演练。</p>\n<p>Yocto:</p>\n<p><a href=\"https://www.yoctoproject.org\" target=\"_blank\">https://www.yoctoproject.org</a></p>\n<p>EWAOL:</p>\n<p><a href=\"https://gitlab.arm.com/ewaol/meta-ewaol\" target=\"_blank\">https://gitlab.arm.com/ewaol/meta-ewaol</a></p>\n<p>guide:</p>\n<p><a href=\"https://aws.amazon.com/cn/blogs/industries/building-an-automotive-embedded-linux-image-for-edge-using-arm-graviton-yocto-project-soafee/\" target=\"_blank\">https://aws.amazon.com/cn/blogs/industries/building-an-automotive-embedded-linux-image-for-edge-using-arm-graviton-yocto-project-soafee/</a></p>\n<p>a). 登录 Amazon cn-north-1 的 EC2 控制台:</p>\n<p>点击 Launch instance,</p>\n<p>在 Step 1: Choose an Amazon Machine Image (AMI) 的搜索框中输入 AMI:ami-055b51e617a37d3c9,在 Community AMI 中会找到这个 AMI 镜像。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/9af96b2b15204543a8fd0ff4d9f28425_image.png\" alt=\"image.png\" /></p>\n<p>b). 选择 Select 构建 EC2 实例:</p>\n<p>Instance type:t4g.medium</p>\n<p>Storage:32GB</p>\n<p>其它选择默认设置。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/3bc19672d94f40e38f53972070be9b53_image.png\" alt=\"image.png\" /></p>\n<p>Launch,</p>\n<p>选择使用已存在的 key pair 或者构建一个新的 key pair,这个 key pair 用来后续登录 EC2 做相关工作。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/ab88d5e8ffb24c4dbc86a0976ffabcdd_image.png\" alt=\"image.png\" /></p>\n<p>Launch Instance,可以看到符合 SOAFEE 规范的基于 ARM 的 Amazon Graviton2 t4g 实例构建成功。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/6e85426fe2b84c48a6c1f9359e6182af_image.png\" alt=\"image.png\" /></p>\n<p>c). 登录 EC2:</p>\n<p>参考指南登录你的 EC2,可以使用指南中推荐的方式或者其他 SSH 客户端,使用步骤 b) 保存的 key,用户名:ewaol ,登录 EC2。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/a7fecaa8a20d40ae82e29209a35a6f1c_image.png\" alt=\"image.png\" /></p>\n<p>指南:</p>\n<p><a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html\" target=\"_blank\">https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html</a></p>\n<p>d). 调整 root partition 空间大小:</p>\n<p>你可以逐条指令执行,或者创建一个批处理脚本,执行前后用 df -h 命令查看调整结果。</p>\n<pre><code class=\"lang-\">#!/bin/sh\n# disabling swap\nswapoff -a\nsed -i '/.*swap.*/d' /etc/fstab\n# trick to fix GPT\nprintf &quot;fix\\n&quot; | parted ---pretend-input-tty /dev/nvme0n1 print\n# remove partition 3 (swap)\nparted -s /dev/nvme0n1 rm 3\n# resize partition 2 to use 100% of available free space\nparted -s /dev/nvme0n1 resizepart 2 100%\n# resizing ext4 filesystem\nresize2fs /dev/nvme0n1p2\n</code></pre>\n<p>e). Pull Greengrass docker 镜像:</p>\n<pre><code class=\"lang-\">docker login -u gaoykxp\npassword: dckr_pat_V2EdQvcBONakG2HBcTan168yi14\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/31001cf873194ec3bd3a889ab74cd512_image.png\" alt=\"image.png\" /></p>\n<pre><code class=\"lang-\">docker pull gaoykxp/greengrass-v2-ubuntu-2204-aarch64:0.2\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/d1dda5b5035d466eba33723251d69df8_image.png\" alt=\"image.png\" /></p>\n<p>f). 创建 Greengrass 核心设备:</p>\n<p>执行如下命令运行 greengrass docker 容器:</p>\n<pre><code class=\"lang-\">docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --user root gaoykx\np/greengrass-v2-ubuntu-2204-aarch64:0.2 /bin/bash\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/09d00b94d4a04e798b75c46f384e13cd_image.png\" alt=\"image.png\" /></p>\n<p>设置环境变量,使用 access key 和 secret key:</p>\n<pre><code class=\"lang-\">cd /home\nexport AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx\nexport AWS_SECRET_ACCESS_KEY=xxxxxxxxxxx\n</code></pre>\n<p>执行以下命令创建并注册 greengrass 核心设备:</p>\n<pre><code class=\"lang-\">java -Droot=&quot;/greengrass/v2&quot; -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-EC2-GreengrassCore \\\n --thing-group-name MySOAFEE-EC2-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/7d9363de85784567bd1a68524b6025cd_image.png\" alt=\"image.png\" /></p>\n<pre><code class=\"lang-\">/greengrass/v2/alts/current/distro/bin/loader\n</code></pre>\n<p>启动 greengreass。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/3d46ac3d9fdf4961bb94ac1822086010_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/e482d73024324c6c8901281c644743a9_image.png\" alt=\"image.png\" /></p>\n<p>在 IoT Core 的控制台中可以看到新创建的 Greengrass 核心设备。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/8f7510eabbf34aafbd8c9f611408b65b_image.png\" alt=\"image.png\" /></p>\n<h5><a id=\"_SOAFEE__AVA_Developer_Platform__321\"></a><strong>三、配置车端 SOAFEE 规范的 AVA Developer Platform 或树莓派环境</strong></h5>\n<p><strong>AVA Developer Platform</strong> 是凌华科技(ADLINK)的汽车开发者平台,搭载了基于 ARM Neoverse 的 Ampere 处理器,作为高性能32核计算系统,能够运行自主工作负载,它允许开发人员利用加速器硬件(例如GPU)来补充高性能中央处理器(CPU)。它更切近汽车实际运行的计算平台,如果您有机会拿到 AVA 开发平台,可以按照以下步骤操作 Yocto-EWAOL 的环境到 AVA 环境。</p>\n<p>AVA Developer Platform:</p>\n<p><a href=\"https://docs.ipi.wiki/COMHPC/ava/index.html\" target=\"_blank\">https://docs.ipi.wiki/COMHPC/ava/index.html</a></p>\n<p>a). 设置 AVA 符合 SOAFEE 规范的 Yocto-EWAOL 环境:</p>\n<p><strong>Yocto</strong> and <strong>EWAOL</strong> 是 ARM SOAFEE 规范的一种实现,请按照<strong>指南</strong>内容设置 AVA Developer Platform,限于篇幅,这里不做细节介绍。</p>\n<p>Yocto :</p>\n<p><a href=\"https://www.yoctoproject.org\" target=\"_blank\">https://www.yoctoproject.org</a></p>\n<p>EWAOL:</p>\n<p><a href=\"https://gitlab.arm.com/ewaol/meta-ewaol\" target=\"_blank\">https://gitlab.arm.com/ewaol/meta-ewaol</a></p>\n<p>指南:</p>\n<p><a href=\"https://docs.ipi.wiki/COMHPC/ava/YoctoInstallation.html\" target=\"_blank\">https://docs.ipi.wiki/COMHPC/ava/YoctoInstallation.html</a></p>\n<p>b). 登录创建 Greengrass 核心设备:</p>\n<p>SSH 登录 AVA 控制终端,用户名 root,密码为空。</p>\n<p>按照“二,部署SOAFEE规范的云端Graviton实例环境”部分, 步骤 e) Pull Greengrass docker 镜像, f) 创建Greengrass 核心设备。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/a84b06102dab4ba9bfd700d8086fa94f_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/c97900f42c764c10922d359fcf8f79cf_image.png\" alt=\"image.png\" /></p>\n<p>注意将 thing-name 修改,以区分云端 EC2 的 Greengrass 核心设备。</p>\n<pre><code class=\"lang-\">java -Droot=&quot;/greengrass/v2&quot; -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-Edge-GreengrassCore \\\n --thing-group-name MySOAFEE-Edge-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/8a0d618d10264a93ad8c910afa8427bf_image.png\" alt=\"image.png\" /></p>\n<p>创建成功后在 IoT Core 控制台看到新创建的 Greengrass 核心设备。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/befcf04f8f104ce892d86286aa37c38f_image.png\" alt=\"image.png\" /></p>\n<p>树莓派是一种低成本嵌入式单板计算机,具有基于 ARM 的集成 CPU。就本文章而言,如果您没有 AVA 开发平台,它可以作为我们介绍的车云环境对等概念的快速开发验证目标。</p>\n<p>a). 设置树莓派 4B 符合 SOAFEE 规范的 Yocto-EWAOL 的环境:</p>\n<p>请按照 <strong>workshop</strong> (<a href=\"https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US/10-getting-started/setup-rpi\" target=\"_blank\">https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US/10-getting-started/setup-rpi</a>) 的内容设置树莓派 4B,限于篇幅,这里不做细节介绍。</p>\n<p>b). 创建 Greengrass 核心设备:</p>\n<p>SSH 登录树莓派的控制终端,用户名:root ,密码:aws_workshop。</p>\n<p>按照“二,部署 SOAFEE 规范的云端 Graviton 实例环境” 步骤e) Pull Greengrass docker 镜像, f) 创建Greengrass 核心设备。</p>\n<p>注意将 thing-name 修改,以区分云端 EC2 的 greengrass 核心设备。</p>\n<p>其它操作和 AVA 平台一样。</p>\n<pre><code class=\"lang-\">java -Droot=&quot;/greengrass/v2&quot; -Dlog.store=FILE \\\n -jar ./GreengrassInstaller/lib/Greengrass.jar \\\n --aws-region cn-north-1 \\\n --thing-name MySOAFEE-Edge-GreengrassCore \\\n --thing-group-name MySOAFEE-Edge-GreengrassCoreGroup \\\n --thing-policy-name GreengrassV2IoTThingPolicy \\\n --tes-role-name GreengrassV2TokenExchangeRole \\\n --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \\\n --component-default-user ggc_user:ggc_group \\\n --provision true \\\n --setup-system-service true\n</code></pre>\n<h5><a id=\"_CICD__YOLOV6__441\"></a><strong>四、触发 CI/CD 流水线,车云对等环境运行 YOLO-V6 应用</strong></h5>\n<p>这个部分将演示提交 YOLO-V6 应用代码,CodeBuild 的构建配置文件,提交到 CodeCommit 并触发 CodePipleline 流水线,构建 YOLO-V6 Docker 镜像,推送到 ECR。Manual Approve 后,通过 IoT Core,Greengrass 部署 YOLO-V6 应用到云端环境,测试及验证。最后,Manual Approve 后,部署到车边缘环境进行测试。</p>\n<p><strong>第一部分,云端 EC2 对等环境部署、测试:</strong></p>\n<p>a). 将 build file, YOLO-V6 应用代码,推理图片复制到 yolo-v6-application 本地 repository:</p>\n<pre><code class=\"lang-\">git clone https://git-codecommit.cn-north-1.amazonaws.com.cn/v1/repos/yolo-v6-application\ncp -r ~/aws-automotive-soafee-env-parity-blog /yolo_v6_image_src /* ~/yolo-v6-application/\n\n</code></pre>\n<p>b). 提交代码,触发流水线:</p>\n<p>CodeCommit 用户名,密码可以到 IAM, Users, Security Credentials, HTTPS Git credentials for Amazon CodeCommit 获取。</p>\n<pre><code class=\"lang-\">cd ~/yolo-v6-application\ngit add .\ngit commit -m &quot;First commit yolo v6 sample application.&quot;\ngit push\n</code></pre>\n<p>c). 构建 YOLO-V6 应用镜像,推送到 ECR:</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/abda5eb17ae24726a50eafce55e8d240_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/f2ef76d49b824fe6804f4f0d8c8c35e8_image.png\" alt=\"image.png\" /></p>\n<p>d). 在 CodePipeline 中 Manual Approval 中 approve, 将 YOLO-v6 部署到云端 EC2 SOAFEE 环境。</p>\n<p>这个过程将 YOLO-v6 的 Docker 镜像构为建 Greengrass 的 Component,通过 IoT Core 将 Component 部署到 EC2 中。确保“二,部署 SOAFEE 规范的云端 Graviton 实例环境”部分中的 Greengrass 在正常运行。在 IoT Core 中查看部署的状态。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/113ae790fd004432b870ff8e78746429_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/b976bc08029648c5ba18558c2b22c42e_image.png\" alt=\"image.png\" /></p>\n<p>e). 部署成功之后,登录到 EC2 控制端,验证 YOLO-v6 应用。</p>\n<p>查看新的 YOLO-v6 镜像是否已经 pull 到 EC2。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/94e1e26a047a40f999db1c089e0c72b6_image.png\" alt=\"image.png\" /></p>\n<p>运行命令运行 YOLO-v6 应用,它将执行图片推理的操作,并把推理结果保存在 EC2 host 主机的 ~/predictions 文件夹下:</p>\n<pre><code class=\"lang-\">docker run -v ~/predictions:/home/YOLOv6/runs 501234xxxxxx.dkr.ecr.cn-north-1.amazonaws.\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/e0dd660dfe7b45529f531631f9f2d55e_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/6efb2361f66844728172bb1ccc0a14ec_image.png\" alt=\"image.png\" /></p>\n<p>将图片从 EC2 中 scp 命令或者 SFTP 客户端将推理后的图片下载到本地电脑查看。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/89474f708153409b85c3ffbc23c1100d_image.png\" alt=\"image.png\" /></p>\n<p><strong>第二部分,车端对等环境部署、测试:</strong></p>\n<p>a). 在 CodePipeline 的 Manual Approval 中 approve, 将 YOLO-v6 部署到边缘端 SOAFEE 环境。</p>\n<p>确保“二,部署 SOAFEE 规范的云端 Graviton 实例环境”部分的 Greengrass 在正常运行。在 IoT Core 中查看部署的状态。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/1ca59b179ed547cfbd23b9c4d5bae013_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/6b0bd412031a432ebb2694c71fac26c2_image.png\" alt=\"image.png\" /></p>\n<p>b). 部署成功之后,登录到车边缘设备控制端,验证 YOLO-v6 应用。</p>\n<p>我们这里以 AVA 操作为例,树莓派操作步骤一致。</p>\n<p>打开另外一个 scp 客户端,登录 AVA 平台,查看刚刚部署的 YOLO-v6 docker 应用镜像。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/fbdb82f22e964e268d76f305f6dfa174_image.png\" alt=\"image.png\" /></p>\n<p>运行命令运行 YOLO-v6 应用,它将执行图片推理的操作:</p>\n<pre><code class=\"lang-\">docker run -v ~/predictions:/home/YOLOv6/runs 501234xxxxxx.dkr.ecr.cn-north-1.amazonaws.co\n</code></pre>\n<p><img src=\"https://dev-media.amazoncloud.cn/50522e8db9964741bf4e07bb2c9e3f52_image.png\" alt=\"image.png\" /></p>\n<p>在 ~/predictions 文件夹下找到推理后的照片,如云端 EC2 中的操作一样,可以将其 scp 下载到本地电脑查看。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/f01814a3b5b949bb93ad7f4b97cfab65_image.png\" alt=\"image.png\" /></p>\n<h4><a id=\"_560\"></a><strong>清理环境</strong></h4>\n<p>演练结束之后,请将相关服务资源关闭。</p>\n<p>在 aws-automotive-soafee-env-parity-blog 文件夹下执行命令清理 cdk 创建的资源:</p>\n<p><code>cdk destroy</code></p>\n<p>在 EC2 的控制台中 Terminate EC2实例。</p>\n<h4><a id=\"_577\"></a><strong>总结</strong></h4>\n<p>在本文中,我们按步骤介绍了如何在亚马逊云科技云上构建基于 SOAFEE 开放架构及云原生概念的软件定义汽车的方案。包括构建云端符合 SOAFEE 规范基于 Amazon Graviton 实例的环境,及构建车边缘端符合 SOAFEE 规范的 AVA 平台及树莓派对等环境。并使用亚马逊云科技原生的 DevOps CI/CD 工具链,实现云端构建应用,云端环境运行、测试,车端对等硬件环境运行、测试,实现了车云环境对等的云原生软件开发流程。</p>\n<h4><a id=\"_581\"></a>参考资料</h4>\n<p>Getting Started with Cloud-Native Automotive Software Development:</p>\n<p><a href=\"https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US\" target=\"_blank\">https://catalog.us-east-1.prod.workshops.aws/workshops/12f31c93-5926-4477-996c-d47f4524905d/en-US</a></p>\n<h5><a id=\"_587\"></a><strong>本篇作者</strong></h5>\n<p><strong>高业坤</strong></p>\n<p><img src=\"data:image/png;base64,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\" alt=\"image.png\" rel=\"1\" /></p>\n<p>亚马逊云科技专业服务团队 IoT 架构师。负责基于 Amazon IoT 的解决方案咨询、架构与交付,深度参与过智慧工厂等行业的 IoT 解决方案的咨询与交付。在智能家居、智慧安防等 IoT 行业拥有十年以上软件研发管理经验。</p>\n<p><strong>李焱</strong></p>\n<p><img src=\"data:image/png;base64,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\" alt=\"image.png\" rel=\"2\" /></p>\n<p>亚马逊云科技专业服务团队企业服务经理,有20年的从业经验,担任过软件工程师、解决方案经理、业务拓展经理等不同角色,有丰富的汽车行业解决方案与业务拓展经验,目前负责软件定义汽车解决方案的设计与业务推广。</p>\n"}
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭