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

最終更新日: 2022 年 3 月 24 日

Amazon Linux 1 または Amazon Linux 2 を実行している 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.    前述のオプションのいずれかを使用してインスタンスを設定した後、次の telnet コマンドを実行して、インスタンスがリポジトリにアクセスできることを確認します。次のコマンドで、us-east-1 をインスタンスのリージョンに置き換えます。

Amazon Linux 1

telnet repo.us-east-1.amazonaws.com 80

Amazon Linux 2

telnet amazonlinux.us-east-1.amazonaws.com 80

注意:Telnet はすべての AMI にデフォルトでインストールされるわけではありません。telnet をインストールするには、次のコマンドを実行します。

sudo yum install telnet

HTTP Error 403 - Forbidden

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

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 がプロキシ設定の許可リストに含まれていることを確認します。

ホスト xxxxxxxx.$awsregion.$awsdomain を解決できませんでした

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

$ 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

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

「HTTP Error 407 - Proxy Authentication Required」

これは、yum にプロキシサーバー用の適切な認証資格情報がないため、プロキシが要求を完了できない場合に発生します。yum がプロキシを使用するように設定するには、/etc/yum.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 設定ファイルタイムアウト値を変更することで、5000 ミリ秒のタイムアウト時間を変更できます。

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

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

この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?