Amazon Linux 1、Amazon Linux 2 または Amazon Linux 2023 を実行している EC2 インスタンスで yum を使用するとエラーが発生するのはなぜですか?
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 リポジトリにアクセスできることを確認します:
- インスタンスがインターネットゲートウェイを使用するパブリックサブネットにある。詳細については、「インターネットアクセスを有効にする」を参照してください。
- インスタンスが NAT ゲートウェイを使用するプライベートサブネットにある。詳細については、「NAT ゲートウェイ」を参照してください。
- インスタンスが NAT インスタンスを使用するプライベートサブネットにある。詳細については、「NAT インスタンス」を参照してください。
- インスタンスが、Amazon Simple Storage Service (Amazon S3) VPC エンドポイントを使用するパブリックまたはプライベートサブネットにある。詳細については、「Amazon Linux 1、Amazon Linux 2、または Amazon Linux 2023 を実行している EC2 インスタンスで、インターネットにアクセスせずに yum を更新したり、パッケージをインストールしたりするにはどうすればよいですか?」を参照してください。
- インスタンスがプロキシを使用するプライベートサブネットにある。プロキシを使用するように yum を設定するには、以下のパラメータを使用して /etc/yum.conf ファイルを変更します。以下の例にある proxy-port、proxy-user-name、および proxy-password は、使用しているプロキシの正しい値に置き換えてください。
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 変数を定義していることを確認します。ディレクトリには、変数 awsdomain と awsregion を含める必要があります。以下のコマンド例で、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.re のmetadata_expire 値を変更してタイムアウト時間を変更してください。
関連するコンテンツ
- 質問済み 9ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 3ヶ月前lg...
- 承認された回答質問済み 8ヶ月前lg...
- AWS公式更新しました 8ヶ月前