上次更新时间: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 实例中安装和更新软件包。