Amazon Linux 1 또는 Amazon Linux 2를 실행하는 EC2 인스턴스에서 yum을 사용할 때 오류가 발생하는 이유는 무엇인가요?
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 리포지토리에 액세스할 수 있는지 확인합니다.
- 인스턴스가 인터넷 게이트웨이가 있는 퍼블릭 서브넷에 있습니다. 자세한 내용은 인터넷 액세스 활성화를 참조하세요.
- 인스턴스가 NAT 게이트웨이가 있는 프라이빗 서브넷에 있습니다. 자세한 내용은 NAT 게이트웨이를 참조하세요.
- 인스턴스가 NAT 인스턴스가 있는 프라이빗 서브넷에 있습니다. 자세한 내용은 NAT 인스턴스를 참조하세요.
- 인스턴스가 Amazon Simple Storage Service(S3) VPC 엔드포인트가 있는 퍼블릭 또는 프라이빗 서브넷에 있습니다. 자세한 내용은 Amazon Linux 1 또는 Amazon Linux 2를 실행하는 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을 사용자 인스턴스의 리전으로 바꿉니다.
Amazon Linux 1
curl -I repo.us-east-1.amazonaws.com
Amazon Linux 2
curl -I amazonlinux.us-east-1.amazonaws.com
참고: curl은 모든 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 호출을 허용하는지 확인합니다.
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을 사용자 인스턴스의 리전으로 바꿉니다.
$ 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 시스템에 구축된 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 구성 파일의 제한 시간 값을 수정하여 5,000밀리초의 제한 시간 기간을 수정할 수 있습니다.
dig를 사용하여 쿼리 시간을 확인하려면 다음 명령을 실행합니다.
$ dig repo.us-east-1.amazonaws.com | grep time

관련 콘텐츠
- 질문됨 11일 전lg...
- 질문됨 2달 전lg...
- 질문됨 4달 전lg...
- 질문됨 4달 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 10달 전