View a markdown version of this page

亚马逊 EC2 上的 AL2 - Amazon Linux 2

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 EC2 上的 AL2

注意

AL2 不再是亚马逊 Linux 的当前版本。AL2023 是 AL2 的继任者。AL2023 有关更多信息,请参阅 AL2023 用户指南中的比较 AL2 和 AL2023 以及 AL2023 中的 Package 变更列表。AL2023 AL2023 AL2023

使用 AL2 AMI 启动亚马逊 EC2 实例

您可以使用 AL2 AMI 启动亚马逊 EC2 实例。有关更多信息,请参阅步骤 1:启动实例

使用 Systems Manager 查找最新的 AL2 AMI

Amazon EC2 为由维护的公有 AMI 提供 AWS Systems Manager 公共参数 AWS ,您可以在启动实例时使用这些参数。例如,该 EC2-provided 参数在所有区域/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2都可用,并且始终指向给定区域中最新版本的 AL2 AMI。

要使用最新的 AL2023 AMI AWS Systems Manager,请参阅 AL2023 入门。AL2023 AL2023

在以下路径中提供 Amazon EC2 AMI 公有参数:

/aws/service/ami-amazon-linux-latest

您可以通过运行以下 AWS CLI 命令来查看当前 AWS 区域中所有 Amazon Linux AMI 的列表。

aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest --query "Parameters[].Name"
使用公有参数启动实例

以下示例使用 EC2-provided 公共参数使用最新的 AL2 AMI 启动m5.xlarge实例。

要在命令中指定参数,请使用以下语法:resolve:ssm:public-parameter,其中 resolve:ssm 是标准前缀,public-parameter 是公有参数的路径和名称。

在本示例中,不包括 --count--security-group 参数。对于 --count,默认为 1。如有默认 VPC 和默认安全组,则将使用它们。

aws ec2 run-instances --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2 --instance-type m5.xlarge --key-name MyKeyPair

有关更多信息,请参阅AWS Systems Manager 用户指南中的使用公共参数

了解亚马逊 Linux 2 AMI 的名称

亚马逊 Linux 2 AMI 名称使用以下命名方案:

amzn2-ami-[minimal-][kernel-{5.10,default,4.14}]-hvm-{x86_64,aarch64}-{ebs,gp2}

  • 最小 AMI 附带一组最小化的预装软件包,以减小图像大小。

  • 内核版本决定了相应的 AMI 上预安装的内核版本:

    • kernel-5.10选择 Linux 内核版本 5.10。这是 AL2 的推荐内核版本。

    • kernel-default为 AL2 选择推荐的默认内核。它是内核 5.10 的别名。

    • kernel-4.14选择 Linux 内核版本 4.14。这只是为了兼容较早的 AMI 版本而提供的。请勿使用此版本启动新实例。预计此 AMI 将不再受支持。

    • 存在一组特殊的 AMI 名称,但不引用特定的内核。这些 AMI 是内核 4.14 的别名。 提供这些 AMI 只是为了与较早的 AMI 版本兼容。请勿使用此 AMI 名称启动新实例。预计这些 AMI 的内核会更新。

  • x86_64/aarch64决定要在哪个 CPU 平台上运行 AMI。对于基于英特尔和 AMD 的 EC2 实例,请选择 x86_64。为 EC2 Graviton 实例选择 aarch64。

  • ebs/gp2确定用于为相应 AMI 提供服务的 EBS 卷类型。请参阅 EBS 卷类型以供参考。请务必选择 gp2。

连接亚马逊 EC2 实例

您可以通过多种方式连接您的 Amazon Linux 实例,包括 SSH 和 EC2 In AWS Systems Manager Session Manager stance Connect。有关更多信息,请参阅《Amazon EC2 用户指南》中的连接到 Linux 实例

SSH 用户和 sudo

默认情况下,亚马逊 Linux 不允许root使用远程安全外壳 (SSH)。此外,禁用密码身份验证以防止暴力攻击。要在 Amazon Linux 实例上启用 SSH 登录,您必须在实例启动时为其提供密钥对。您还必须设置用于启动实例的安全组以允许 SSH 访问。默认情况下,唯一可以使用 SSH 远程登录的账户是ec2-user。此账户也有sudo权限。如果您启用远程root登录,请注意它不如依赖密钥对和辅助用户安全。

AL2 AMI 启动模式

AL2 AMI 没有设置启动模式参数。从 AL2 AMI 启动的实例遵循实例类型的默认启动模式值。有关更多信息,请参阅 Amazon EC2 用户指南中的启动模式

程序包存储库

此信息适用于 AL2。有关 AL2023 的信息,请参阅亚马逊 Linux 2023 用户指南中的在 AL2023 中管理软件包和操作系统更新。AL2023 AL2023

AL2 和 AL1 旨在与每个 Amazon EC AWS 2 区域托管的在线软件包存储库一起使用。这些存储库在所有区域中提供,可使用 yum 更新工具进行访问。通过在每个区域托管存储库,我们可以快速部署更新,不会产生任何数据传输费。

重要

AL1 的最新版本已于 2023 年 12 月 31 日停产,自 2024 年 1 月 1 日起将不会收到任何安全更新或错误修复。有关更多信息,请参阅 Amazon Linux AMI 生命周期终止

如果您不需要为实例保留数据或自定义设置,则可以使用当前的 AL2 AMI 启动新实例。如果您确实需要保留实例的数据或自定义设置,则可以通过 Amazon Linux 软件包存储库维护这些实例。这些存储库包含所有更新后的程序包。您可以选择将这些更新应用到正在运行的实例中。即使发布了新版本,AMI 和更新包的早期版本仍可继续使用。

注意

要在 Amazon EC2 实例上更新和安装无需访问互联网的软件包,请参阅如何在运行 AL1、AL2 或 AL2023 的 Amazon EC2 实例上更新 yum 或在没有互联网访问的情况下安装软件包?AL2023

要安装程序包,请使用以下命令:

[ec2-user ~]$ sudo yum install package

如果您发现 Amazon Linux 不包含您需要的应用程序,您可以直接在 Amazon Linux 实例上安装该应用程序。Amazon Linux 使用 RPM 和yum软件包管理,这可能是安装新应用程序的最直接方法。您应该首先查看我们的中央 Amazon Linux 存储库,确定其中是否有您需要应用程序,因为许多应用程序在那里都可以找到。然后,您可以将这些应用程序添加到您的 Amazon Linux 实例中。

要将应用程序上传到正在运行的 Amazon Linux 实例,请使用 scpsftp,然后通过登录实例来配置应用程序。您还可以使用内置 cloud-init 程序包中的 PACKAGE_SETUP 操作,在实例启动时,上传应用程序。有关更多信息,请参阅在 AL2 上使用云初始化

安全更新

安全更新是使用软件包存储库提供的。安全更新和更新后的 AMI 安全警报均在 Amazon Linux 安全中心发布。有关 AWS 安全策略的更多信息,或要报告安全问题,请访问 AWS 云安全

AL1 和 AL2 配置为在启动时下载并安装关键或重要的安全更新。此配置中不包括内核更新。

在 AL2023 中,与 AL1 和 AL2 相比,此配置发生了变化。AL2023 有关 AL2023 安全更新的更多信息,请参阅亚马逊 Linux 2023 用户指南中的安全更新和功能。AL2023

我们建议您在启动后针对您的用例进行必要的更新。例如,您可能希望在启动时应用所有更新(而不仅仅是安全更新),或者评估每个更新并仅应用适用于您的系统的更新。这将使用以下 cloud-init 设置来进行控制:repo_upgrade。下方 cloud-init 配置片段显示了如何修改传递到实例初始化用户数据文本中的设置:

#cloud-config repo_upgrade: security

repo_upgrade 的可能值如下所示:

critical

应用未完成的关键安全更新。

important

应用未完成的关键和重要安全更新。

medium

应用未完成的关键、重要和中等安全更新。

low

应用所有未完成的安全更新,包括具有低严重性的安全更新。

security

应用 Amazon 标记为安全更新的明显关键或重要更新。

bugfix

应用 Amazon 标记为缺陷修正的更新。缺陷修正是一组较大的更新,其中包括安全更新和针对各种其他小漏洞的修正更新。

all

应用全部适用更新 (不论类别)。

none

实例启动时不应用任何更新。

备注

亚马逊 Linux 不会将任何更新标记为bugfix。要应用来自亚马逊 Linux 的与安全无关的更新,请使用repo_upgrade: all

repo_upgrade 的默认设置是安全的。也就是说,如果您未在用户数据中指定其他值,在默认情况下,Amazon Linux 会在启动时执行针对所有已安装程序包的安全升级。Amazon Linux 还会使用 /etc/motd 文件列出登录时可用更新的数量,通知您已安装程序包的任何更新。要安装这些更新,您需要在实例上运行 sudo yum upgrade

存储库配置

对于 AL1 和 AL2,AMI 是创建 AMI 时可用包的快照,但安全更新除外。任何不在原始 AMI 上但在运行时安装的软件包都将是可用的最新版本。要获取可用于 AL2 的最新软件包,请运行yum update -y

故障排除技巧

如果您在 nano 实例类型上运行 yum update 时遇到 cannot allocate memory 错误(例如 t3.nano),则可能需要分配交换空间才能启用更新。

对于 AL2023,与 AL1 和 AL2 相比,存储库配置发生了变化。AL2023 有关 AL2023 存储库的更多信息,请参阅管理程序包和操作系统更新

AL2023 之前的版本已配置为持续提供更新,以确保 Amazon Linux 次要版本的滚动更新,这也称为滚动发布。作为最佳实践,我们建议您将您的 AMI 更新为最新的可用的 AMI,而不是启动旧的 AMI 并应用更新。

In-place 不支持在主要 Amazon Linux 版本之间进行升级,例如从 AL1 升级到 AL2 或从 AL2 升级到 AL2023。AL2023 有关更多信息,请参阅 Amazon Linux 可用性