Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 yum을 업데이트하거나 패키지를 설치하려고 합니다. 인스턴스에서 인터넷 연결 없이 mazon Linux 2, Amazon Linux 2, Amazon Linux 2023을 실행하고 있습니다.
간략한 설명
Amazon Linux 리포지토리는 Amazon Simple Storage Service(S3) 버킷에서 호스팅합니다. 인터넷 연결 없이 인스턴스에 패키지를 업데이트하고 설치하려면 S3 Amazon Virtual Private Cloud(VPC) 게이트웨이 엔드포인트를 생성하세요. Amazon S3 VPC 게이트웨이 엔드포인트에 리포지토리 버킷 액세스를 허용하는 정책을 포함하세요. 그런 다음 VPC 엔드포인트를 인스턴스 서브넷의 라우팅 테이블에 연결합니다.
참고: EPEL과 같은 타사 리포지토리를 켜려면 다음 장치 중 하나를 통해 EC2 인스턴스가 인터넷에 연결되어 있어야 합니다.
해결 방법
사전 요구 사항:
- EC2 인스턴스에 연결된 보안 그룹은 아웃바운드 HTTP 트래픽을 허용해야 합니다.
- S3 VPC 엔드포인트에 연결된 보안 그룹은 EC2 인스턴스의 서브넷에서 들어오는 인바운드 HTTP 트래픽을 허용해야 합니다.
- EC2 인스턴스의 서브넷과 연결된 네트워크 액세스 제어 목록(네트워크 ACL)은 포트 80(HTTP) 및 443(HTTPS)에서 AWS 리전 Amazon S3 서비스로 송신을 허용해야 합니다. 또한 리전 S3 서비스에서 임시 TCP 포트로 수신을 허용해야 합니다. 임시 포트는 1024-65535입니다. 리전 Amazon S3 서비스는 S3 서비스의 공용 IP 주소 CIDR(클래스 없는 도메인 간 라우팅)입니다. 네트워크 ACL에서는 접두사 목록을 지원하지 않습니다. S3 CIDR을 네트워크 ACL에 추가하려면 0.0.0.0/0을 사용하세요. 네트워크 ACL에서 실질 S3 CIDR을 사용할 수도 있습니다. S3 CIDR을 언제든지 변경할 수 있습니다.
1. Amazon EC2 콘솔을 열고 인스턴스를 선택합니다.
-
네트워킹 탭에서 VPC ID 및 서브넷 ID를 메모해 둡니다.
-
Amazon VPC 콘솔을 열고 서브넷을 선택한 다음 서브넷 ID를 선택합니다.
-
라우팅 테이블 탭을 선택하고 라우팅 테이블 ID를 메모해 둡니다.
-
엔드포인트를 선택하고 엔드포인트 생성을 누릅니다.
-
게이트웨이 엔드포인트를 생성합니다.
us-east-1에서 엔드포인트를 만들려면 ccom.amazonaws.us-east-1.s3를 선택하세요. 다른 AWS 리전에 엔드포인트를 만들려면 해당 리전 코드를 선택하세요. 지역 코드의 전체 목록은 사용 가능한 리전을 참고하세요.
VPC에서 인스턴스 VPC ID를 선택합니다.
라우팅 테이블 구성에서 인스턴스의 라우팅 테이블 ID를 선택합니다.
-
정책에서 전체 액세스 또는 사용자 지정을 선택합니다.
전체 액세스를 선택하면 엔드포인트 정책에 따라 Amazon S3 전체 액세스가 허용됩니다.
사용자 지정을 선택하면 Amazon Linux 리포지토리 버킷에서 API 호출 s3:GetObject를 허용해야 합니다. 다음 예제에서는 us-east-1을 사용합니다. 엔드포인트가 다른 리전에 있는 경우 us-east-1을 해당 리전으로 바꾸세요.
Amazon Linux 2023
{
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*"
]
}
]
}
Amazon Linux 2
S3 버킷 arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com 및 arn:aws:s3:::amazonlinux-2-repos-us-east-1/*에서 리포지토리를 호스팅합니다. 다음은 s3:GetObject API 호출을 허용하는 예제 정책입니다.
{
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com/*",
"arn:aws:s3:::amazonlinux-2-repos-us-east-1/*"
]
}
]
}
Amazon Linux 1
{
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::packages.us-east-1.amazonaws.com/*",
"arn:aws:s3:::repo.us-east-1.amazonaws.com/*"
]
}
]
}
- 엔드포인트 생성을 선택합니다.
S3 VPC 엔드포인트를 생성한 후 Amazon Linux 인스턴스에 패키지를 설치하고 업데이트할 수 있습니다.
관련 정보
Amazon Linux 1이나 Amazon Linux 2를 실행하는 EC2 인스턴스에서 yum을 사용할 때 오류가 발생하는 이유는 무엇인가요?
Amazon S3용 게이트웨이 엔드포인트