AWS for Automotive 推出软件定义汽车 (SDV) 解决方案,帮助汽车行业应对越来越复杂的软件,解决企业在改善成本控制和提高产品质量方面的需求。亚马逊云科技通过 SDV 解决方案为行业带来创新。该方案支持在亚马逊云科技上部署虚拟化汽车硬件和软件堆栈,以及构建和部署用于驾驶室的谷歌开源软件 Android Automotive Operating System (AAOS)。
本文为系列博客中的第一篇。我们将在该系列博客中重点介绍如何在亚马逊云科技上为 AAOS 和车载信息娱乐 (IVI) 应用程序构建持续集成 / 持续部署 (CI/CD) 管道,以创造更多协作工作流,并最大限度地减少 OEM 和 / 或供应商对本地物理硬件的依赖。
AWS CloudFormation 允许您自动化、测试和部署在 AWS Graviton 实例上运行的 AAOS 堆栈的基础架构,为 OEM 及其供应商开发车辆用户体验和 IVI 应用程序提供支持。本文将详细介绍如何使用 AWS CloudFormation。
本系列博客的后续部分将包含其他主题,包括:
1. 如何利用 AWS Cloud Development Kit (AWS CDK) 中的 AWS CodeBuild 在亚马逊云科技上部署 AAOS;以及
2. 使用常见开发工具在 IVI 堆栈上构建和部署 IVI 应用程序的 CI/CD 管线。
一辆现代汽车可能包含超过 1 亿行代码,这些代码由数百个独立的电子控制单元 (ECU) 执行。ECU 是具有一个或多个片上系统 (SoC) 组件和微控制器单元 (MCU) 的嵌入式系统。汽车软件开发团队在降低成本和提高质量方面的压力日益增大,安全相关的法律法规也越来越严格。在种种因素的共同作用下,测试对软件开发生命周期 (SDLC) 的重要性愈发凸显。随着软件在功能、成本、安全性和质量等方面的重要性不断增加,软件更新正在逐渐取代更加常见的硬件替换。在开发和维护汽车软件时,要处理当前所面临的这些问题,最好的办法是使用敏捷方法、持续测试和自动化。通过在亚马逊云科技云上开发 ECUs,您可以更轻松地实现这些目标。
使用 AWS CloudFormation 在 AWS Graviton 上运行 AAOS
使用亚马逊云科技服务时,很少会出现一个问题只有一个解决方案的情况。更常见的情形是,您会拥有适应不同情况的一系列解决方案,在亚马逊云科技上部署 AAOS 也是如此。您可以利用 AWS CloudFormation 的功能来简化构建过程。
AWS CloudFormation 可自动将基础架构部署到您的亚马逊云科技账户中,从而简化资源的预配置和去配置过程。下方架构图显示了如何使用 AWS CloudFormation 在基于 AWS Graviton 的实例上自动化构建和部署 AAOS。
AWS CloudFormation 自带的模板将启动相关资源,包括一个 Amazon S3 存储桶,两个 Amazon EC2 实例,以及完成构建所需的资源。我们提供了两个版本的 AWS CloudFormation 模板,您可以根据自身在成本和便利性方面的需求进行选择。
1. 此版本使用 AWS EC2 Spot 实例启动(以节省成本)。Spot 实例在使用和管理时需要更多监督,但成本会更低。
2. 此版本使用 AWS EC2 按需实例启动(请参阅 AWS 定价页面)。该版本能够实现对环境的持久访问,但请在使用前参阅定价信息。
选择其中一个 AWS CloudFormation 模板(请根据您的实际需要选择其中一种,而非同时使用两种)。第一个 EC2 实例将下载 AAOS 并执行构建步骤,并将完成后的构建映像复制到 Amazon S3 存储桶中。第二个实例会等待文件显示在 Amazon S3 中。待文件可用后,实例会完成 AAOS 的运行配置,并公开 HTTP 接口。

图 1 – 基于亚马逊云科技的 AAOS 架构
前提条件
- 一个亚马逊云科技账户及默认的Amazon Virtual Private Cloud (VPC)。
- 在您首选的开发机器上安装 Android Studio 及 Android API。这个解决方案构建的是 Android Automotive 12,因为使用 Android Cuttlefish 虚拟设备 (CVD) 进行虚拟化至少需要 Android 12。您还必须在 Android build/studio 环境中包含与 Android 版本相匹配的 API 级别:Android 12L 对应的 API 级别为 32;Android 12 对应的 API 级别为 31。为获得最大兼容性,我们建议同时包含这两种 API 级别。
- 解决方案可部署在以下区域:
区域 |
区域名称 |
区域 |
区域名称 |
eu-west-1 |
欧洲区(爱尔兰) |
eu-west-2 |
欧洲区(伦敦) |
ap-southeast-1 |
亚太区(新加坡) |
eu-central-1 |
欧洲区(法兰克福) |
us-west-2 |
美国西区(俄勒冈) |
us-east-1 |
美国东区(北弗吉尼亚) |
us-east-2 |
美国东区(俄亥俄) |
ap-northeast-1 |
亚太区(东京) |
注意:这个解决方案会产生成本,获取更多有关计算预估成本的信息,请使用https://calculator.aws/。
解决步骤
1. 首先,下载 AWS CloudFormation 堆栈的 yaml 文件。登录亚马逊云科技管理控制台,然后转到 AWS CloudFormation 登录页面,或点击下方 AWS CloudFormation 链接直接跳转。如下图所示。

图 2 – AWS CloudFormation 控制面板登录页面
2. 点击右上角“创建堆栈”,“使用新资源(标准)”,在下一页中选择“选择现有模版”及“上传模板文件”,之后点击“选择文件”,选中您下载的 "aaos-cf-template.yaml" 文件并点击“下一步”。如下图所示。

图 3 – 在 AWS CloudFormation 控制面板中使用提供的 YAML 文件创建堆栈
3. 在新页面中填写堆栈名称,请确保您选择的名称遵循与 Amazon S3 存储桶相同的命名规范,之后点击“下一步”。我设定的名称为 "cicdstak",如下图所示。

图 4 – 提供 AWS CloudFormation 堆栈名称和详细信息
4. 在新的页面中,将所有选项保留为默认值并点击“下一步”,如下图所示。

图 5 – AWS CloudFormation 的配置堆栈选项页面
5. 在最后的页面中,核对您的 AWS CloudFormation 堆栈详细信息,确认有关创建 IAM 资源的信息。完成后点击“提交”,如下图所示。

图 6 – 核对(续)AWS CloudFormation 堆栈详情

图 7 – 核对 AWS CloudFormation 堆栈详细信息并点击提交,完成堆栈创建
6. AWS CloudFormation 现在会创建构建和运行 AAOS 堆栈所需的所有资源。这一过程可能耗时约 2 小时。堆栈创建完成后,您可以在 AWS CloudFormation 控制面板中查看创建状态,如下图所示。

图 8 – 在 AWS CloudFormation 堆栈状态页面查看已完成部署且正在运行的 AAOS
堆栈状态
7. 您可以在资源 (Resources) 选项卡中查看为堆栈部署的所有资源及其创建状态,如下图所示。

图 9 – 查看部署 AAOS 的 AWS CloudFormation 堆栈中部署的所有资源
8. 您可以在 Amazon CloudWatch Logs 中的 "AAOSLogs-*Region*" 日志组查看进度。其中,*Region* 是您部署解决方案的亚马逊云科技区域。构建实例和目标实例将在各自的日志流中输出信息。所有操作完成后,目标实例将生成用于访问 AAOS 界面的 HTTP 地址,并将其输出到 "AAOSTarget-*Region*-*Stackname*" 日志流中,该地址类似于:"https: //**Instance-IP**: 8443",如下图所示。

图 10 – 在 Amazon CloudWatch Logs 中查看解决方案部署状态
9. 您可以在构建完成后查看网址并访问 AAOS 实例,以确认堆栈创建是否成功。您可以在 AWS CloudFormation 界面的输出 (Outputs) 选项卡中看到 AAOS 网络接口地址,如下图所示。

图 11 – 在 AWS CloudFormation 的输出选项卡中查看您的 AAOS 实例的网络地址
10. 访问 "AAOSWebInterface" 链接并点击“连接”后,您应该会看到下图所示的页面。我们建议使用 Chrome 浏览器以获得最佳兼容性。您需要确认(例如,单击“高级”)连接不安全。本系列博客将在后续部分中介绍如何解决使用网页浏览器访问 AAOS 时的 HTTPS 安全问题。

图 12 – 使用网页浏览器访问 AAOS 用户界面
上述步骤展示了如何构建、部署和访问您的 AAOS 实例。然而,开发者通常希望设计、构建和部署运行在 AAOS 堆栈上的应用程序。
以下步骤将展示如何使用 Android Studio 创建一个基础的 Android 应用程序,连接到您的实例,并在您的 AAOS 堆栈上部署和运行该应用程序。
1. 如下方截图所示,在本示例中,我们将使用 Android Studio 在 AAOS 堆栈上进行开发。请按照下载和安装期间提供的说明,将 Android Studio 下载并安装到您首选的开发环境中。安装 Android Studio 时,请务必同时安装 Android SDK,因为您需要 SDK 的平台工具来为 AAOS 设备进行开发。

图 13 – 使用 Android Studio 开发应用程序并将其部署到您的 AAOS 设备上
2. 打开操作系统的命令行工具,切换到 Android Studio 的安装目录。我们要使用 Android 调试桥 (ADB) 来让 Android Studio 与亚马逊云科技上的远程设备进行通信。在命令行中输入以下命令: .\adb connect x.x.x.x:6520,其中,x.x.x.x 是 AWS CloudFormation 输出选项卡中显示的 EC2 实例 IP 地址,使用 6520 端口通过
ADB 协议进行通信。Android SDK 平台工具中使用的是 adb.exe 可执行文件和 "connect" 命令。
连接成功后,您将看到 "connected to your
IP x.x.x.x:6520"。
3. 确认已连接至您的 AAOS 设备的 ADP 端口后,您的远程设备将显示在 Android Studio 设备管理器的“物理设备”选项卡中。设备的名称为 "Google Cuttlefish arm64 auto",绿色指示灯表示已连接成功,如下图所示。

图 15 – 连接成功后,您的远程 AAOS 设备将在 Android Studio 的设备管理器中显示为物理设备
4. 如下图所示,现在我们可以开始开发 Android 应用程序了。为简单起见,我们将部署一个 Android "apk" 格式的 "Hello from AWS!" 应用程序。更多开发详情,请参阅 Android Studio 随附的文档。

图 16 – 在 Android Studio 中为您的 AAOS 设备开发一个基础应用程序
5. 应用程序开发完成后,参照上图,点击 Android Studio 上方的绿色“运行”按钮(绿色箭头)即可部署。编译应用程序并将其部署到远程 AAOS 设备可能需要一些时间。
如下图所示,编译并通过 ADB 部署后不久,我们的新应用就会出现在浏览器的 AAOS 实例中。

图 17 – 我们的基础 Android 应用程序出现在 Amazon EC2 Graviton 上运行的 AAOS 设备中
恭喜,您为运行在 Amazon EC2 Graviton 上的 AAOS 设备开发了第一个 Android Automotive 应用程序,并完成了应用程序的部署和使用!
为了节约成本,我们建议您在不使用时停止 AAOS 目标 EC2 实例。
我们建议您先按照说明向 EC2 实例发出命令,停止该实例上的 Cuttlefish 虚拟设备 (CVD) 服务,再停止 EC2 实例,以免损坏设备映像。
然后,通过亚马逊云科技控制台跳转到您的目标 EC2 实例,依次点击“实例状态”和“停止实例”。
重启 AAOS 目标 EC2 实例后,您会发现它可能更换了新的 IP 地址。请记下此 IP 地址,以便在之后按照说明重新连接 AAOS 设备。您还需要按照重启说明来重新启动 CVD。此外,如果您想将 Android Studio 重新连接到您的 AAOS 设备,也需要按照上文说明重启 ADB。
清理资源
要删除创建的资源,您必须先清空 Amazon S3 存储桶,然后通过亚马逊云科技控制台访问 S3,找到堆栈 "aaos-build-output-**Region**-**AccountID**-**StackName**" 创建的存储桶并删除存储桶中的所有对象。清空存储桶后,返回 AWS CloudFormation 控制台,找到您创建的堆栈,点击“删除”,并确认所有资源都已删除。
总结
有助于缩短上市时间、降低成本并简化开发的方法能够使汽车软件开发获益。如今,Android Automotive 已经成为开发者们使用最多的汽车驾驶室操作系统。您可以通过在 Amazon EC2 上虚拟化实例来简化在 AAOS 上的 IVI(车载信息娱乐系统)开发,实现开发流程的并行化,创造更多协作工作机会,并尽量减少 OEM 及其供应商对本地物理硬件的依赖。如此一来,即可在开始物理硬件测试之前就对软件进行大量测试并提高其完成度。
新手入门
快速体验生成式 AI
无需部署,借助开箱即用的 Amazon Bedrock 一次体验多种高性能模型,包括 Claude 3, Llama 3, SDXL, Mistral 等。
快速部署管理私服游戏
一键启动所需资源,快速完成游戏私服的自动化启动,备份以及恢复。
使用生成式 AI 构建多语言问答知识库
使用多种服务,构建可汇总搜索结果的多语言知识库。
免费套餐
AWS 海外区域
拓展海外业务或个人体验
免费使用 100 余种云产品或服务, 长达 12 个月
AWS 中国区域
发展中国业务
免费使用 40 余种核心云服务产品,长达 12 个月