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 のゲートウェイエンドポイント