インターネットにアクセスせずに Amazon Linux 1、Amazon Linux 2、または Amazon Linux 2023 を 実行している EC2 インスタンスで yum を更新したり、パッケージをインストールする方法はありますか?

所要時間2分
0

yum を更新するか、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにパッケージをインストールしたいです。インスタンスはインターネットに接続されていない状態で Amazon Linux 2、Amazon Linux 2、または Amazon Linux 2023 を実行しています。

簡単な説明

Amazon Linux リポジトリは Amazon シンプルストレージサービス (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 のゲートウェイエンドポイント

AWS公式
AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ