Amazon Linux 1、Amazon Linux 2 または Amazon Linux 2023 を実行している EC2 インスタンスで yum を使用するとエラーが発生するのはなぜですか?

所要時間3分
0

Amazon Linux 1、Amazon Linux 2、または Amazon Linux 2023 を実行している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで yum を使用するとエラーが発生します。

簡単な説明

yum コマンドの出力メッセージを使用して、発生したエラーを特定します。一般的なエラーメッセージは次のとおりです:

  • Connection timed out XXX milliseconds
  • HTTP Error 403 - Forbidden
  • Could not resolve host: xxxxxxxxx.$awsregion.$awsdomain
  • HTTP Error 407 - Proxy Authentication Required
  • Resolving timed out after 5000 milliseconds

解決策

Connection timed out XXXX milliseconds

1. EC2 インスタンスにアタッチされたセキュリティグループで、アウトバウンド HTTP/HTTPS トラフィックが許可されていることを確認します。

2. EC2 インスタンスのサブネットに関連付けられたネットワーク ACLで、NACL 経由のアウトバウンド HTTP/HTTPS トラフィックが許可されていることを確認します。

次の例は、ポート 80 および 443 でアウトバウンドトラフィックを許可するカスタムネットワーク ACL を示しています:

Inbound rules
Rule#    Type                    Protocol    Port Range    Source        Allow/Deny
100      Custom TCP Rule         TCP (6)     1024-65535    0.0.0.0/0     ALLOW
101      Custom TCP Rule         TCP (6)     1024-65535    ::/0          ALLOW
*        ALL Traffic             ALL         ALL           ::/0          DENY
*        ALL Traffic             ALL         ALL           0.0.0.0/0     DENY
Outbound rules
Rule #    Type                   Protocol    Port Range    Source       Allow/Deny
100       HTTP (80)              TCP (6)     80            0.0.0.0/0    ALLOW
101       HTTPS (443)            TCP (6)     443           0.0.0.0/0    ALLOW
102       HTTP (80)              TCP (6)     80            ::/0         ALLOW
103       HTTPS (443)            TCP (6)     443           ::/0         ALLOW
*         ALL Traffic            ALL         ALL           ::/0         DENY
*         ALL Traffic            ALL         ALL           0.0.0.0/0    DENY

3. 次のオプションのいずれかを使用して、EC2 インスタンスが Amazon Linux リポジトリにアクセスできることを確認します:

proxy=http://proxy-server-IP-address:proxy_port
proxy_username="proxy-user-name"
proxy_password="proxy-password"

詳細については、fedoraproject.org ウェブサイトの「プロキシサーバーで yum を使う」を参照してください。

4. 前述のオプションのいずれかを使用してインスタンスを設定したら、以下の curl コマンドを実行して、インスタンスがリポジトリにアクセスできることを確認します。以下のコマンドの us-east-1 は、インスタンスの AWS リージョンに置き換えてください。

Amazon Linux 2023

curl -I al2023-repos-us-east-1-de612dc2.s3.dualstack.us-east-1.amazonaws.com

Amazon Linux 1

curl -I repo.us-east-1.amazonaws.com

Amazon Linux 2

curl -I amazonlinux.us-east-1.amazonaws.com

curl コマンドはすべての Amazon マシンイメージ (AMI) に事前インストールされていますが、認証情報なしでは Amazon Linux リポジトリにアクセスすることはできません。curl コマンドは、yum リポジトリの認証情報を取得できません。以下のようなアクセス拒否エラーメッセージが表示されます。curl コマンドは、タイムアウトの問題が引き続き発生しているかどうかをテストするために使用されます。このエラーメッセージは、ネットワークが到達可能で、タイムアウト問題が発生していないことを示しています:

$ curl -I amazonlinux.us-east-1.amazonaws.com
HTTP/1.1 403 Forbidden
x-amz-bucket-region: us-east-1
x-amz-request-id: xxxxxxxx
x-amz-id-2: xxxxxxxxxxxxx=
Content-Type: application/xml
Date: Thu, 17 Nov 2022 16:59:59 GMT
Server: AmazonS3

telnet などのソフトウェアをインストールするには、以下のコマンドを実行します:

sudo yum install telnet

HTTP Error 403 - Forbidden

1. インスタンスの VPC で Amazon S3 VPC エンドポイントを使用する場合は、アタッチされたポリシーが、以下のリソースでの s3:GetObject API 呼び出しを許可していることを確認します。次の例では、region をインスタンスの AWS リージョンに置き換えます。

Amazon Linux 2023: の場合

「arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*」

Amazon Linux 1: の場合

「arn:aws:s3:::packages.region.amazonaws.com/*」

「arn:aws:s3:::repo.region.amazonaws.com/*」

Amazon Linux 2: の場合

「arn:aws:s3:::amazonlinux.region.amazonaws.com/*」

「arn:aws:s3:::amazonlinux-2-repos-region/*」

詳細については、「Amazon S3 のゲートウェイエンドポイント」を参照してください。

2. プロキシを使用して Amazon Linux リポジトリにアクセスする場合は、サブドメイン .amazonaws.com がプロキシ設定の許可リストに含まれていることを確認します。

Could not resolve host: xxxxxxxx.$awsregion.$awsdomain

1. 次のコマンドを実行して、ディレクトリ /etc/yum/vars がカスタム yum 変数を定義していることを確認します。ディレクトリには、変数 awsdomainawsregion を含める必要があります。以下のコマンド例で、us-east-1 をインスタンスの AWS リージョンに置き換えます。

$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com

2. 以下のコマンドを実行して、インスタンスの DNS 名前解決を確認します。インスタンスは Amazon Linux リポジトリのドメイン名を解決する必要があります。

$ dig amazonlinux.us-east-1.amazonaws.com

$ dig repo.us-east-1.amazonaws.com

$ dig al2023-repos-us-east-1-de612dc2

169.254.169.253 の IPv4 アドレスおよび fd00:ec2:: 253 の IPv6 アドレスにある Amazon 提供の DNS サーバーへのクエリは成功します。VPC IPv4 ネットワーク範囲のベースに 2 を加えた予約済み IP アドレスにある Amazon 提供の DNS サーバーへのクエリも成功します。IPv6 アドレスには、Nitro ベースの EC2 インスタンスでのみアクセスできます。

HTTP Error 407 - Proxy Authentication Required

HTTP エラー 407 は、yum または dnf にプロキシサーバー用の適切な認証資格情報がないため、プロキシが要求を完了できない場合に発生します。yum または dnf がプロキシを使用するように設定するには、/etc/yum.conf ファイルを次のパラメータで変更します:

Amazon Linux 1 and Amazon Linux 2 : /etc/yum.conf
Amazon Linux 2023 : /etc/dnf/dnf.conf

proxy=http://proxy-server-IP-address:proxy_port
proxy_username=proxy-user-name
proxy_password=proxy-password

Resolving timed out after 5000 milliseconds

以下のコマンドを実行して、/etc/resolv.conf ファイルに DNS サーバーの正しい IP があることを確認します:

cat /etc/resolv.conf
nameserver YourDNSIP

yum 設定ファイルのタイムアウト値を変更することで、5,000 ミリ秒のタイムアウト時間を変更できます。詳細については、linux.die.net ウェブサイトの yum.conf を参照してください。

dig を使用してクエリ時間を確認するには、以下のコマンドを実行します:

$ dig repo.us-east-1.amazonaws.com | grep time

Amazon Linux 2023 の場合は、/etc/yum.repos.d/amazonlinux.remetadata_expire 値を変更してタイムアウト時間を変更してください。

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

関連するコンテンツ