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 コマンドの出力メッセージを参考に、発生したエラーを特定します。次の一般的なエラーメッセージのうち、いずれかが表示される場合があります。
- 接続がタイムアウトしました (ABCD ミリ秒)
- HTTP Error 403 - Forbidden
- ホスト abcdexyz.$awsregion.$awsdomain を解決できませんでした
- HTTP Error 407 - Proxy Authentication Required
- 5000 ミリ秒経過後、解決がタイムアウトしました
解決策
接続がタイムアウトしました (ABCD ミリ秒)
この問題をトラブルシューティングするには、インスタンスにアタッチされているセキュリティグループがアウトバウンドの HTTP または HTTPS トラフィックを許可していることを確認します。さらに、インスタンスのサブネットに関連付けられているネットワークアクセスコントロールリスト (ネットワーク ACL) が、アウトバウンド 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
Amazon Linux リポジトリにアクセスするには、インスタンスは設定に応じて、次のいずれかのインターネットアクセス設定を使用する必要があります。
- パブリックサブネットのインスタンスでは、インターネットゲートウェイを使用します。
- プライベートサブネットのインスタンスでは、NAT ゲートウェイまたは NAT インスタンスを使用します。
- パブリックサブネットまたはプライベートサブネットのインスタンスでは、Amazon Simple Storage Service (Amazon S3) の仮想プライベートクラウド (VPC) エンドポイントを使用します。
- プロキシを使用するプライベートサブネットのインスタンスでは、設定ファイルに次のパラメータを追加することで、プロキシを使用するように yum を設定します。
注: プロキシを設定済みであり、同じ設定ファイルを使用している場合は、プロキシのパスワードはファイルにプレーンテキストで表示されます。proxy-port をプロキシが使用するポートに、proxy-user-name をプロキシのユーザー名に、proxy-password をプロキシのパスワードに置き換えます。詳細については、Fedora Project のウェブサイトで「プロキシサーバーで yum を使う」を参照してください。Amazon Linux 1 と 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
インスタンスを設定した後、次の curl コマンドを実行して、インスタンスがリポジトリにアクセスできることを確認します。
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
注: 次のコマンドで、us-east-1 はお使いのインスタンスの AWS リージョンに置き換えます。
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
curl コマンドを実行し、タイムアウトの問題がまだ発生しているかどうかをテストします。このエラーメッセージ例は、ネットワークが到達可能となり、タイムアウト問題が発生しなくなったことを示しています。
HTTP Error 403 - Forbidden
VPC エンドポイントを使用する
Amazon S3 VPC エンドポイントを使用する場合は、アタッチされたポリシーで Linux バージョンに応じた s3:GetObject API コールが許可されていることを確認します。
Amazon Linux 2023: arn:aws:s3:::al2023-repos-region-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/
**注:**上記のリソースで、region はお使いのインスタンスのリージョンに置き換えます。
詳細については、「Amazon S3 のゲートウェイエンドポイント」を参照してください。
プロキシを使用している
プロキシを使用して Amazon Linux リポジトリにアクセスする場合は、サブドメイン .amazonaws.com がプロキシ設定の許可リストに含まれていることを確認します。
サポートされていないリポジトリを使用している
次のエラーが発生する場合があります。 エラー: リポジトリ 'amazonlinux' のメタデータをダウンロードできませんでした。 GPG 検証は有効ですが、GPG 署名を使用できません。エラーが発生しているか、リポジトリが GPG 検証をサポートしていない可能性があります。これは既知の問題であり、/etc/yum.repos.d/ ディレクトリにあるリポジトリファイル (repository.repo ファイル、/etc/yum.conf など) で repo_gpgcheck を有効化すると発生します。Amazon Linux 2023 リポジトリでは、メタデータ署名が有効になっていません。なお、この構成をサポートされていないリポジトリに使用した場合は、パッケージのインストールやオペレーティングシステム (OS) の更新が失敗する可能性があります。これを回避するには、リポジトリの repo ファイルを開き、そのリポジトリの repo_gpgcheck 値を 0 に設定します。たとえば、値を repo_gpgcheck=0 に設定します。
この状況の詳細については、GitHub のウェブサイトで「[Bug] - repo_gpgcheck を有効にした後、パッケージをインストール/アップグレードできない」を参照してください。
ホスト abcdexyz.$awsregion.$awsdomain を解決できませんでした
/etc/yum/vars ディレクトリには、変数 awsdomain および awsregion が含まれている必要があります。次のコマンドを実行し、ディレクトリ /etc/yum/vars でカスタム yum 変数を定義していることを確認します。
$ cat /etc/yum/vars/awsregion us-east-1 $ cat /etc/yum/vars/awsdomain amazonaws.com
注: us-east-1 は、実際のインスタンスのリージョンに置き換えます。
インスタンスは Amazon Linux リポジトリのドメイン名を解決する必要があります。インスタンスの DNS 解決を確認するには、次のコマンドを実行します。
$ dig amazonlinux.us-east-1.amazonaws.com $ dig repo.us-east-1.amazonaws.com $ dig al2023-repos-us-east-1-de612dc2
注: us-east-1 は、実際のインスタンスのリージョンに置き換えます。
なお、Amazon 提供の DNS サーバー (IPv4 アドレス 169.254.169.253、IPv6 アドレス fd00:ec2::253) へのクエリは成功します。VPC の IPv4 ネットワーク範囲のベースに 2 を加えた予約済み IP アドレス である Amazon 提供の DNS サーバーへのクエリも成功します。IPv6 アドレスには、Nitro ベースの EC2 インスタンスでのみアクセスできます。
HTTP Error 407 - Proxy Authentication Required
この問題は、yum または dnf にプロキシサーバー用の適切な認証資格情報がなく、プロキシがリクエストを完了できない場合に発生します。yum または dnf がプロキシを使用するように設定するには、設定ファイルを次のパラメータで変更します。
proxy=http://proxy-server-IP-address:proxy_port proxy_username=proxy-user-name proxy_password=proxy-password
注: プロキシを設定済みであり、同じ設定ファイルを使用している場合は、プロキシのパスワードはファイルにプレーンテキストで表示されます。proxy-port をプロキシが使用するポートに、proxy-user-name をプロキシのユーザー名に、proxy-password をプロキシのパスワードに置き換えます。Amazon Linux 1 と Amazon Linux 2 では、/etc/yum.conf ファイルを変更します。Amazon Linux 2023 では、/etc/dnf/dnf.conf ファイルを変更します。
タイムアウトの問題
次のコマンドを実行し、/etc/resolv.conf ファイルに DNS サーバーの正しい IP アドレスがあることを確認します:
cat /etc/resolv.conf nameserver YourDNSIP
デフォルトのタイムアウト期間である 5000 ミリ秒を変更するには、yum 設定ファイルの timeout 値を変更します。詳しくは、die.net のウェブサイトで yum.conf について参照してください。Amazon Linux 2023 では、/etc/yum.repos.d/amazonlinux.repo の metadata_expire 値を変更してタイムアウト期間を変更します。
dig コマンドでクエリ時間を確認するには、次のコマンドを実行します。
$ dig repo.us-east-1.amazonaws.com | grep time
注: us-east-1 は、実際のインスタンスのリージョンに置き換えます。

関連するコンテンツ
- AWS公式更新しました 10ヶ月前
- AWS公式更新しました 2年前
- AWS公式更新しました 2ヶ月前