我想在没有互联网连接的情况下在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上更新 yum 或安装软件包。该实例运行 Amazon Linux 2 (AL2) 或 Amazon Linux 2023 (AL2023)。
简短描述
Amazon Linux 存储库托管在 Amazon Simple Storage Service (Amazon S3) 存储桶中。要在没有互联网连接的情况下在您的实例上更新和安装软件包,请为 Amazon S3 创建 Amazon Virtual Private Cloud (Amazon VPC) 网关端点。在 VPC 端点中加入允许访问存储库存储桶的策略。然后,将 VPC 端点与您实例子网的路由表相关联。
**注意:**要激活第三方存储库,例如 Extra Packages for Enterprise Linux (EPEL),您的实例必须通过以下设备之一接入互联网:
解决方法
测试配置
确保附加到您的实例的安全组允许出站 HTTP 或 HTTPS 流量。附加到用于 Amazon S3 的 VPC 端点的安全组必须允许来自您的实例的子网的入站 HTTP 流量。
此外,请查看与您的实例子网关联的网络访问控制列表(网络 ACL)。网络 ACL 必须允许通过端口 80 (HTTP) 和 443 (HTTPS) 流向 Amazon S3 服务的 AWS 区域的出站流量。网络 ACL 还必须允许来自 Amazon S3 服务区域的临时 TCP 端口 (1024-65535) 上的入站流量。Amazon S3 服务的区域是 Amazon S3 服务的公共 IP 地址 CIDR。您无法在网络 ACL 中使用前缀列表。而应使用 0.0.0.0/0 将 Amazon S3 CIDR 添加到您的网络 ACL 中。您还可以在网络 ACL 中使用实际 Amazon S3 CIDR。但是,Amazon S3 CIDR 可能会发生变化。
创建 VPC 端点
完成以下步骤:
-
打开 Amazon EC2 控制台。
-
选择您的实例。
-
选择 Networking(联网)选项卡,然后记下 VPC ID 和 Subnet ID(子网 ID)值。
-
打开 Amazon VPC 控制台。
-
选择 Subnets(子网),然后选择您的子网 ID。
-
选择 Route table(路由表)选项卡,然后记下 Route table ID(路由表 ID)值。
-
选择 Endpoints(端点),然后选择 Create endpoint(创建端点)。
-
要创建网关端点,请配置以下设置:
对于 Region(区域),选择要在其中创建端点的 Region code(区域代码)。例如,要在 us-east-1 中创建端点,请选择 com.amazonaws.us-east-1.s3。
对于 VPC,为您的实例选择 VPC ID。
对于 Configure route tables(配置路由表),为您的实例选择路由表 ID。
对于 Policy(策略),选择 Full Access(完全访问)以允许完全访问 Amazon S3。如果您选择 Custom(自定义),则必须允许在 Amazon Linux 存储库存储桶上进行 s3:GetObject API 调用。
**注意:**在以下示例策略中,请将 us-east-1 替换为您的端点区域。
AL2023:
{ "Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*"
]
}
]
}
AL2:
{ "Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com/*",
"arn:aws:s3:::amazonlinux-2-repos-us-east-1/*"
]
}
]
}
**注意:**在上述 AL2 策略中,arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com/* 和 arn:aws:s3:::amazonlinux-2-repos-us-east-1/* 存储桶托管存储库。
-
选择 Create endpoint(创建端点)。
在创建 VPC 端点后,您可以在 Amazon Linux 实例中安装和更新软件包。
相关信息
为什么我在运行 Amazon Linux 1、Amazon Linux 2 或 Amazon Linux 2023 的 EC2 实例上使用 yum 时会收到错误?
适用于 Amazon S3 的网关端点