启动 Amazon EC2 Mac 实例

学习如何启动 EC2 Mac 实例
发布时间:2023 年 6 月 28 日
MAC
EC2
CI-CD
DevOps
教程
亚马逊云科技
Olawale Olaleye
亚马逊云科技使用经验
100 - 初级
完成所需时间
10 分钟
所需费用

24 小时 22 美元

前提条件

注册 / 登录 亚马逊云科技账户

上次更新时间
2023 年 6 月 28 日
相关产品

开发 Apple 系统(iPhone、iPad、Watch、TV 或 Vision Pro)应用程序时,在开发工作流的某些节点上,您必须使用 macOS 机器。这样,可以为远程开发人员或临时承包商提供托管的且安全的桌面计算机,或实现管道创建、测试、签名和发布的自动化(也称为持续集成和持续部署,即 CI/CD)。了解有关持续集成和持续部署的详细信息,请参见使用 CI/CD 管道快速构建 iOS 应用

由于需要额外的采购、安装和配置过程,访问基于 macOS 的机器可能需要一些时间。为了方便起见,您可以选择通过 Amazon EC2 创建 macOS 实例。

本系列教程可以引导您在亚马逊云科技云中启动、连接和配置基于 macOS 的虚拟机。每个教程都是相互独立的,您无需按顺序逐一学习。您只需选读那些与您想要完成的任务有关的教程。

在本系列教程中,我们假设您对 Amazon EC2 有一定的了解。您可以通过阅读 Amazon EC2 实例入门 来快速了解 Amazon EC2。本教程将重点介绍针对 EC2 Mac 机器的特性和特殊操作。

本系列文章包括 11 个部分,介绍了 EC2 Mac 实例和 macOS 上的高级 CLI 使用,包括命令行构建、测试、签名、存档和部署。本文是第 1 部分。下一篇文章将在发布时出现在下面的列表中。

▶ 启动 Amazon EC2 Mac 实例

连接 Amazon EC2 Mac 实例

为什么要使用云端的 macOS 机器?

EC2 Mac 实例的推出为所有 Apple 开发人员带来了亚马逊云科技提供的灵活性、可扩展性和安全性。现在,您可以在云中运行一台或多台开发机,使它们各运行不同的 macOS 或 Xcode 版本。它为您提供了构建和测试 iOS、macOS、watchOS、tvOS、ipadOS 应用程序所需的灵活性,让您无需管理本地机器群。借助亚马逊云科技云 API,您可以自动对计算机进行映像、快照、启动、停止,从而为基于 Linux 或 Windows 的开发流程带来与目前相同的灵活性和自动化水平。

EC2 Mac 实例是我们在数据中心安装并连接到亚马逊云科技基础设施其余部分的 Mac mini 机器。我们使用 Mac Thunderbolt 端口将机器连接到 Amazon Nitro。Nitro 是亚马逊云科技构建的虚拟化系统,它允许访问 VPC 网络EBS 卷和其他功能。

EC2 Mac 实例的运行不涉及虚拟化,您拥有完整的 Mac mini,且 macOS 在裸机上运行。此设计决策可帮助您遵守 Apple macOS 许可证,它限制共享虚拟化 macOS 环境(您可以在 EC2 实例上的虚拟机中运行 macOS,但这是另一回事)。此设计决策对您有两个重要影响。

首先,在工作流方面,开头和结尾各多了一个步骤:您必须预留和释放 EC2 专用主机。专用主机是一台 Mac mini 物理主机,它将分配给您的亚马逊云科技账户,直到您释放它为止。专用主机仅供您使用。

其次,计费取决于专用主机分配,而不是 EC2 实例何时运行。换言之,您需要为物理主机保留供您使用的时间付费,这与操作系统实际上是否运行无关。按照惯例,按需计费是按秒计的。根据 Apple macOS 许可证,分配期最短为 24 小时。这意味着您在分配主机之后的最初 24 小时内不能释放它。在这一初始阶段之后,您可以随时释放主机。有关详细信息,请查看专用主机 EC2 定价页面。如果您确定每月要在 EC2 上花费一定的最低金额,Savings Plans(节省计划)可让您节省高达 44% 的按需付费成本。

若要查看 Savings Plans 定价和方案选项,请前往 Saving Plans Compute 定价页面,然后点击 EC2 Instance Savings Plans(EC2 实例 Savings Plans)选项卡。然后,您可以选择计划的期限(1 年或 3 年)、付款选项(预付全部费用、预付部分费用或不预付费用)、特定的 mac 实例系列,以及亚马逊云科技区域。注意此情况下,OS(操作系统)只能选择 linux,Tenancy(租期)只能选择专用主机。

获取专用主机

当您想将 EC2 Mac 实例用于开发工作流程时,第一步是预留主机供您自己使用。您可以使用亚马逊云科技控制台命令行界面执行此操作。Dedicated Hosts(专用主机)部分位于 EC2 控制台中。

请注意,您可以选择基于 x86 的 Mac Mini(mac1.metal)或搭载 Apple 芯片的 Mac Mini,后者配备 M1 SoC,具有 8 个 CPU 内核、8 个 GPU 内核、16 GiB 内存和 16 核 Apple 神经网络引擎(mac2.metal)

我们也可以使用 Amazon CLI,如下所示:

aws ec2 allocate-hosts \ 
 --instance-type mac2.metal \ 
 --availability-zone us-east-2b \ 
 --quantity 1 

# Response
{
 "HostIds": [
 "h-0fxxxxxxx90"
 ]
}

请记下返回的 HostIds,因为您启动该主机上的 EC2 实例时需要它。请记住,计费和 24 小时最短租赁时间从此刻开始。

Amazon EC2 Mac 实例

将主机分配给您的帐户后,您可以启动或停止其上的操作系统。此时,在 macOS 上,所有您熟悉和喜爱的 EC2 功能同样可以使用。下面是我最喜欢的五个功能。

  • 我们可以创建卷的 EBS 快照,并从这些快照创建 Amazon 机器映像。这意味着我们可以捕获磁盘的状态,对其进行快照,并创建启动映像以启动其他机器。如果您需要一组在所有实例上都可用的通用工具,并且这些工具的安装需要很长时间(例如 Xcode),这将特别有用。

  • 我们的 EC2 Mac 实例受到 VPC 安全组的保护,不会受到不必要的网络访问。这意味着我们可以控制授权哪些传入连接、在哪些端口上以及来自哪些 IP 地址。

  • 说到网络,我们可以使用在网络级别定义的相同 VPC 路由机制(NAT 网关PrivateLinkSite-to-Site VPNDirect Connect 等)从 macOS 访问其他亚马逊云科技服务。

  • 我们可以使用脚本来进行(并借此来自动化)专用主机的配置、配置移除以及实例的启动和停止。这将方便您实现各种自动化,有助于构建和测试流程。

  • 适用于 macOS 的 Amazon Systems Manager Agent 已预安装在 EC2 Mac 实例上。这意味着我们可以远程连接、创建隧道或发送要在主机上执行的命令,而无需管理凭据、SSH 密钥或网络访问。

启动、停止或终止

我们已经预留了 Mac Mini 供自己使用,因此可以在这台机器上启动和停止 macOS。亚马逊云科技希望您在启动任何 EC2 实例时分享一些详细信息。最小参数列表为:

  • 实例类型。它必须与专用主机的实例类型相同。截至本文撰写时,我们对于 x86 Mac mini 支持 mac1.metal,对于搭载 Apple 芯片的 Mac mini 支持mac2.metal。

  • (可选)SSH 密钥名。要通过 SSH 连接到实例,需要 SSH 密钥。您必须在笔记本电脑上创建密钥对,安全保管密钥对的私有部分,并将公有部分上传到 EC2。该文档提供帮助解决此问题的分步说明。文档说的是 Linux,但 macOS 的步骤也是相同的。Web 控制台也可以为您生成密钥对。

  • 要启动 EC2 实例的主机的标识符。它必须是从之前运行的 allocate-hosts 得到的 HostIds 参数。您只能在专用主机上启动一个实例。

  • 安全组 ID。安全组是网络过滤器,它们相当于用来保护实例的盾牌。如果您打算连接实例,则必须创建一个安全组,以向从您的源 IP 地址或地址范围传入的 TCP 连接授权,使其能够连接 TCP 22 端口。控制台将指导您执行此操作。我们的文档也为您提供了帮助

  • Amazon 机器映像。Amazon 机器映像是一种磁盘快照,其中包含已安装的操作系统和一些亚马逊云科技特有的工具和代理。如果您有自己的 AMI,您可以指定使用它(本博客系列的第四部分将对此进行更多介绍)。亚马逊云科技为您提供 macOS 最新的三个主要版本。在本文撰写时,这表示您可以启动运行 macOS Monterey 12.4、macOS Big Sur 11.6.6 或 macOS Catalina 10.15.7 的 EC2 Mac 实例。

只要满足所有这些参数,那么该过程与启动任何 EC2 实例类型没有什么不同。我们必须确保选择适合我们要求的 macOS AMI 版本。选择 mac2.metal 实例类型,然后选择主机 Tenancy(租期)和我们刚刚创建的 Host(主机)。

我们也可以使用命令行:

 aws ec2 run-instances \ 
 --instance-type mac2.metal \ 
 --key-name my_key \ 
 --placement HostId=h-0fxxxxxxx90 \ 
 --security-group-ids sg-01000000000000032 \ 
 --image-id AWS_OR_YOUR_AMI_ID

# Response
{
 "Groups": [],
 "Instances": [
 {
 "AmiLaunchIndex": 0,
 "ImageId": "ami-01xxxxbd",
 "InstanceId": "i-08xxxxx5c",
 "InstanceType": "mac2.metal",
 "KeyName": "my_key",
 "LaunchTime": "2021-11-08T16:47:39+00:00",
 "Monitoring": {
 "State": "disabled"
 },
... redacted for brevity ....

实例启动需要几分钟时间,在默认或公有 VPC 中启动时,它会被分配一个公有 IP 地址。您很快就可以用 SSH 连接它。有关此内容的更多信息,请参阅本博客系列的第二部分

同样,您可以停止、重启或终止实例。重启,顾名思义,是命令操作系统进行一次关机后再启动的流程。这等同于点击本地机器上的  菜单中的重新启动按钮。

停止 EC2 实例等同于本地机器上  菜单中的关机菜单选项。它会关闭操作系统和机器。您稍后可以重新启动它。请记住,这不会停止计费,因为计费与专用主机分配相关联。您的磁盘(EBS 卷)将被保留。

终止实例则完全不同。这项操作是永久性的。实例一旦终止,就无法重启。默认情况下,其关联的磁盘(EBS 卷)在终止时将被删除。

出于安全原因,在停止或终止实例时,底层主机将被完全清理,擦除本地磁盘、EFI NVRAM 和内存安全区域中的所有数据。

您可以使用控制台中的 Instance state(实例状态)下拉菜单更改实例状态。

您也可以使用 CLI。

# to stop the instance
aws ec2 stop-instances --instance-id i-08xxxxx5c

# to reboot the instance
aws ec2 reboot-instances --instance-id i-08xxxxx5c

# to terminate the instance
aws ec2 terminate-instances --instance-id i-08xxxxx5c

释放专用主机

请注意,计费单位是分配专用主机的时间。它并不是实例运行的时间。使用完 Mac mini 后,请务必用亚马逊云科技控制台或命令行释放专用主机。

aws ec2 release-hosts --host-ids h-0fxxxxxxx90

根据 macOS 许可协议(第 3.A.ii 节),您不能在分配主机后的最初 24 小时内释放主机

恭喜!您首次成功启动了 EC2 Mac 实例。