我想更新 yum,或者在我的 Amazon Elastic Compute Cloud(Amazon EC2)实例上安装软件包。该实例在没有接入互联网的情况下运行 Amazon Linux 1、Amazon Linux 2 或 Amazon Linux 2023。
简短描述
Amazon Linux 存储库托管在 Amazon Simple Storage Service(Amazon S3)桶中。要在没有互联网连接的情况下在您的实例上更新和安装软件包,请创建 S3 Amazon Virtual Private Cloud(Amazon VPC)网关端点。在 Amazon S3 VPC 网关端点中,加入允许访问存储库存储桶的策略。然后,将 VPC 端点与您实例子网的路由表相关联。
**注意:**要启用第三方存储库(如 EPEL),您的 EC2 实例必须能够通过以下设备之一接入互联网:
解决方法
先决条件:
- 附加到您的 EC2 实例的安全组必须允许出站 HTTP 流量。
- 附加到您的 S3 VPC 端点的安全组必须允许来自您的 EC2 实例的子网的入站 HTTP 流量。
- 与您的 EC2 实例的子网关联的网络访问控制列表(网络 ACL)必须允许端口 80(HTTP)和 443(HTTPS)上的出口流量流向 AWS 区域 Amazon S3 服务。它们还必须允许流量从区域 S3 服务进入临时 TCP 端口。临时端口为 1024-65535。区域 Amazon S3 服务是 S3 服务的公有 IP 地址 CIDR(无类别域间路由)。网络 ACL 不支持前缀列表。要将 S3 CIDR 添加到您的网络 ACL,请使用 0.0.0.0/0。您还可以在网络 ACL 中使用实际 S3 CIDR。但是,S3 CIDR 可以随时更改。
1. 打开 Amazon EC2 控制台,然后选择您的实例。
2. 在联网选项卡上,记下 VPC ID 和子网 ID。
3. 打开 Amazon VPC 控制台,选择子网,然后选择您的子网 ID。
4. 选择路由表选项卡,然后记下路由表 ID。
5. 选择端点,然后选择创建端点。
6. 创建网关端点:
如果您要在 us-east-1 中创建端点,请选择 com.amazonaws.us-east-1.s3。如果您要在其他 AWS 区域创建端点,请选择相应的区域代码。有关区域代码的完整列表,请参阅可用区域。
对于 VPC,为您的实例选择 VPC ID。
对于配置路由表,为您的实例选择路由表 ID。
7. 对于策略,选择完全访问权限或自定义。
如果您选择完全访问权限,那么您的端点策略允许完全访问 Amazon S3。
如果您选择自定义,则必须允许在 Amazon Linux 存储库桶上进行 s3:GetObject API 调用。以下示例使用的是 **us-east-1。**如果您的端点位于不同的区域,请将 us-east-1 替换为您的区域。
Amazon Linux 2023
{
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*"
]
}
]
}
Amazon Linux 2
S3 桶 arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com 和 arn:aws:s3:::amazonlinux-2-repos-us-east-1/* 可托管存储库。以下是允许进行 s3:GetObject API 调用的策略示例。
{
"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/*"
]
}
]
}
Amazon Linux 1
{
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::packages.us-east-1.amazonaws.com/*",
"arn:aws:s3:::repo.us-east-1.amazonaws.com/*"
]
}
]
}
8. 选择创建端点。
在创建 S3 VPC 端点后,您可以在 Amazon Linux 实例中安装和更新软件包。
相关信息
为什么在运行 Amazon Linux 1 或 Amazon Linux 2 的 EC2 实例上使用 yum 时会遇到错误?
适用于 Amazon S3 的网关端点