如何在没有互联网接入的情况下在运行 Amazon Linux 的 EC2 实例上更新 yum 或安装软件包?

2 分钟阅读
0

我想在没有互联网连接的情况下在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上更新 yum 或安装软件包。该实例运行 Amazon Linux 1 (AL1)、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 端点

完成以下步骤:

  1. 打开 Amazon EC2 控制台

  2. 选择您的实例。

  3. 选择 Networking(联网)选项卡,然后记下 VPC IDSubnet ID(子网 ID)值。

  4. 打开 Amazon VPC 控制台

  5. 选择 Subnets(子网),然后选择您的子网 ID。

  6. 选择 Route table(路由表)选项卡,然后记下 Route table ID(路由表 ID)值。

  7. 选择 Endpoints(端点),然后选择 Create endpoint(创建端点)。

  8. 要创建网关端点,请配置以下设置:
    对于 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/*"
          ]
        }
      ]
    }

    AL1:

    {  "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/*"
          ]
        }
      ]
    }

    **注意:**在前面的 AL1 和 AL2 策略中,arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com/*arn:aws:s3:::amazonlinux-2-repos-us-east-1/* 存储桶托管存储库。

  9. 选择 Create endpoint(创建端点)。

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

相关信息

为什么我在运行 Amazon Linux 1、Amazon Linux 2 或 Amazon Linux 2023 的 EC2 实例上使用 yum 时会收到错误?

适用于 Amazon S3 的网关端点

AWS 官方
AWS 官方已更新 22 天前