如何在无法访问互联网的情况下在运行 Amazon Linux 1 或 Amazon Linux 2 的 EC2 实例上更新 yum 或安装软件包?

上次更新时间:2021 年 5 月 5 日

我在我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行 Amazon Linux 1 或 Amazon Linux 2。如果我的实例无法访问互联网,该如何更新 yum 或安装软件包?

简短描述

Amazon Linux 存储库在 Amazon Simple Storage Service (Amazon S3) 存储桶中托管。要在没有互联网连接的情况下在实例上更新和安装软件包,请使用允许访问相关存储库存储桶的策略创建一个 S3 Amazon Virtual Private Cloud (Amazon VPC) 网关终端节点。然后,将此 VPC 终端节点与实例子网的路由表关联。

注意:要启用 EPEL 等第三方存储库,您的 EC2 实例必须通过以下任何一种方式连接到互联网:

NAT 网关 NAT 实例 互联网网关 到您的数据中心的 VPN/Direct Connect 连接,以通过公共互联网路由 yum 请求。 解决方法

注意:在使用此解决方法时请记住以下几点:

确保附加到您的 EC2 实例的安全组允许出站 HTTP 流量。 确保附加到 S3 VPC 终端节点的安全组允许来自 EC2 实例子网的入站 HTTP 流量。 确保与 EC2 实例子网关联的网络 ACL 允许以下操作:
使用端口 80 (HTTP) 传出流量到区域 S3 服务。
使用临时 TCP 端口从区域 S3 服务传入流量。临时端口为 1024-65535。
区域 S3 服务是包含 S3 接口终端节点的子网的 CIDR。或者,如果您使用 S3 网关,则区域 S3 服务是 S3 服务的公有 IP CIDR。网络 ACL 不支持前缀列表。要将 S3 CIDR 添加到网络 ACL 中,请使用 0.0.0.0/0 作为 S3 CIDR。您还可以将实际的 S3 CIDR 添加到 ACL 中。但是,请记住,S3 CIDR 可以随时更改。

1.打开 Amazon EC2 控制台,然后选择您的实例。

2.在 Networking(联网)选项卡上,记下 VPC ID 和 Subnet ID(子网 ID)。

3.打开 Amazon VPC 控制台,选择 Subnets(子网),然后选择您的 Subnet ID(子网 ID)。

4.选择 Route Table(路由表)选项卡,然后记下 Route Table ID(路由表 ID)。

5.选择 Endpoints(终端节点),然后选择 Create Endpoint(创建终端节点)。

6.使用以下信息创建终端节点:

对于 Service name(服务名称),选择 com.amazonaws..s3。选择您的资源所在的区域。例如,com.amazonaws.us-east-1.s3。有关区域代码的完整列表,请参阅可用区域。

对于 VPC,选择您的实例的 VPC ID。

对于 Configure route tables(配置路由表),选择您的实例的 Route Table ID(路由表 ID)。

7.对于 Policy(策略),选择 Full Access(完全访问)或 Custom(自定义)。

如果您选择 Full Access(完全访问),则您的终端节点策略将允许对 Amazon S3 的完全访问权限。

如果选择 Custom(自定义),则您必须允许对 Amazon Linux 存储库存储桶执行 API 调用 s3:GetObject:

Amazon Linux 2

存储库托管在 S3 存储桶 arn:aws:s3:::amazonlinux.region.amazonaws.com 和 arn:aws:s3:::amazonlinux-2-repos-region/* 中。以下示例策略允许 s3:GetObject API 调用。请将 region 替换为您的 AWS 区域。

{
    "Statement": ,
            "Effect": "Allow",
            "Resource": 
        }
    ]
}

Amazon Linux 1

存储库托管在 S3 存储桶 arn:aws:s3:::packages.region.amazonaws.com 和 arn:aws:s3:::repo.region.amazonaws.com 中。以下示例策略允许 s3:GetObject API 调用权限。请将 region 替换为您的 AWS 区域。

{
    "Statement": ,
            "Effect": "Allow",
            "Resource": 
        }
    ]
}

注意:请将资源 ARN 中的 Region 替换为您的实例所在的区域。有关更多信息,请参阅 Amazon S3 的终端节点策略。

8.选择 Create endpoint(创建终端节点)。

创建 S3 VPC 终端节点后,您就可以在您的 Amazon Linux 实例中安装和更新软件包。