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

    좋은 웹페이지 즐겨찾기