Amazon Linux2에서 yum 할 수 없을 때 의심해야 할 일
5013 단어 AmazonLinux2vpcS3AWS
결론
VPC 엔드포인트의 정책 설정을 의심합니다.
사건
EC2(Amazon Linux2)에서
yum update
가 통과하지 않았다.$ sudo yum update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Could not retrieve mirrorlist http://amazonlinux.us-east-1.amazonaws.com/2/core/latest/x86_64/mirror.list error was
14: HTTP Error 403 - Forbidden
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...
4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:
yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>
5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot find a valid baseurl for repo: amzn2-core/2/x86_64
원인과 대처법
Amazon Linux2의 yum 리포지토리에 액세스할 수 없기 때문에 오류가 발생했습니다.
Amazon Linux 및 Amazon Linux2의 yum 리포지토리는 S3에 있습니다.
EC2 인스턴스가 속한 VPC의 엔드포인트는
S3의 yum 리포지토리에 액세스할 수 있도록 정책을 구성합니다.
VPC 엔드포인트 정책을 변경하는 방법
[EC2] -> [인스턴스]로 이동하여 yum할 수 없는 인스턴스를 선택합니다.
설명 탭에 'VPC ID'가 있으므로 클릭합니다.
전환 대상에서 왼쪽 목록에서 [엔드포인트]를 선택합니다.
EC2가 속한 VPC를 클릭하고 아래 열에서 정책을 선택합니다.
정책 편집 버튼에서 정책을 변경할 수 있습니다.
Amazon Linux2의 경우
중요한 것은 Resources에
"arn:aws:s3:::amazonlinux.*.amazonaws.com/*"
가 들어 있다는 것입니다.이하에 설정 예를 나타냅니다만, 아마 이 예대로는 되어 있지 않다고 생각합니다.
Resources에
"arn:aws:s3:::amazonlinux.*.amazonaws.com/*"
를 추가하고 저장하는 것이 좋습니다.추기한 행이 Resource안에서 마지막 행이 아닌 경우는, 말미에,(콤마)를 붙여 잊지 않도록 합시다.
{
"Statement": [
{
"Sid": "AmazonLinux2AMIRepositoryAccess",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::amazonlinux.*.amazonaws.com/*"
]
}
]
}
Amazon Linux의 경우(참고)
여기에서는 다음 두 가지 리소스에 액세스할 수 있어야 합니다.
"arn:aws:s3:::packages.*.amazonaws.com/*"
"arn:aws:s3:::repo.*.amazonaws.com/*"
여기도 Amazon Linux2의 경우와 마찬가지로 Resource 안에 이상의 2개를 추기합시다.
다음은 설정 예입니다.
{
"Statement": [
{
"Sid": "AmazonLinuxAMIRepositoryAccess",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::packages.*.amazonaws.com/*",
"arn:aws:s3:::repo.*.amazonaws.com/*"
]
}
]
}
결과
무사히 yum이 지나갔습니다.
$ sudo yum update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 2.4 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package binutils.x86_64 0:2.29.1-29.amzn2 will be updated
---> Package binutils.x86_64 0:2.29.1-30.amzn2 will be an update
---> Package dyninst.x86_64 0:9.3.1-1.amzn2.0.2 will be updated
---> Package dyninst.x86_64 0:9.3.1-3.amzn2 will be an update
(以下略)
참고
Endpoints for Amazon S3
Reference
이 문제에 관하여(Amazon Linux2에서 yum 할 수 없을 때 의심해야 할 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/polarbear08/items/4031e5f8e494e8cf3fee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)