AWS CodeBuild에서 도커 이미지를 사용할 때 “이미지 구성을 가져오는 중 오류 발생: 요청이 너무 많음” 오류를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS CodeBuild에서 도커 이미지를 사용할 때 발생하는 “이미지 구성을 가져오는 중 오류 발생: 요청이 너무 많음” 오류를 해결하고 싶습니다.

간략한 설명

CodeBuild에서 도커 이미지를 사용하는 경우 공용 DockerHub 리포지토리에서 레이어를 가져올 때 제한이 생길 수 있습니다.

제한이 때문에 발생하는 오류를 해결하려면 DockerHub 계정 보안 인증 정보를 사용해 레이어 풀을 인증하도록 CodeBuild를 구성해야 합니다.

중요: 다음 단계를 완료하려면 DockerHub 계정 및 계정 사용자 이름과 암호가 있어야 합니다.

해결 방법

AWS Secrets Manager로 DockerHub 보안 인증 정보 저장

  1. AWS Secrets Manager 콘솔을 엽니다.

  2. 새 비밀 저장을 선택합니다.

  3. 비밀 유형 선택 섹션에서 기타 유형 비밀을 선택합니다.

  4. 이 비밀에 저장할 키/값 쌍 지정 섹션에서 비밀 키/값 탭을 선택합니다.

  5. 첫 번째 텍스트 상자에 사용자 이름을 입력합니다. 두 번째 텍스트 상자에 DockerHub 사용자 이름을 입력합니다. 그 후 행 추가를 선택합니다.

  6. 새 행의 첫 번째 텍스트 상자에 암호를 입력합니다. 두 번째 텍스트 상자에 DockerHub 암호를 입력합니다. 그 후 행 추가를 선택합니다.

  7. 다음을 선택합니다.

  8. 비밀 이름에 비밀 이름을 입력합니다. 예: dockerhub

  9. 다음을 선택합니다.

  10. 자동 회전 비활성화가 기본 설정으로 선택되어 있는지 확인합니다.

  11. 다음을 선택합니다.

  12. 스토어를 선택합니다.

  13. 비밀 이름 열에서 내 비밀을 선택합니다.

  14. 비밀 세부 정보 섹션에서 비밀 ARN에 대한 Amazon 리소스 이름(ARN)을 기록해 둡니다.

참고: 고객 관리 암호화 키로 구성된 비밀을 만든 경우, 구성된 키를 사용해 kms:Decrypt 작업에 권한을 추가해야 합니다.

프로비저닝 단계에서 발생하는 제한 문제 해결

  1. CodeBuild 콘솔을 엽니다.

  2. 탐색 창에서 빌드를 선택하고 빌드 프로젝트를 선택합니다.

  3. 내 빌드 프로젝트를 선택합니다.

  4. 편집을 클릭한 후 환경을 선택합니다.

  5. 이미지 재정의를 선택합니다.

  6. 새 환경 이미지에서 사용자 지정 이미지를 선택합니다.

  7. 환경 유형에서 사용자 지정 이미지를 선택합니다.

  8. 이미지 레지스트리에서 기타 레지스트리를 선택합니다.

  9. 외부 레지스트리 URL에는 도커 이미지 이름을 입력합니다.

  10. 레지스트리 보안 인증 정보에는 앞서 기록해 둔 비밀 ARN을 입력합니다.

  11. 환경 업데이트를 선택합니다.

다른 단계에서 발생하는 제한 문제 해결

중요: 비밀에 액세스하려면 CodeBuild 서비스 역할에 AWS ID 및 액세스 관리(IAM) 권한을 부여해야 합니다.

  1. CodeBuild 콘솔을 엽니다.

  2. 탐색 창에서 빌드를 선택하고 빌드 프로젝트를 선택합니다.

  3. 내 빌드 프로젝트를 선택합니다.

  4. 빌드 세부 정보 탭을 선택합니다.

  5. 환경 섹션의 서비스 역할에서 서비스 역할 ARN을 선택합니다. 그러면 IAM 콘솔이 열립니다.

  6. 권한 탭에서 인라인 정책 추가를 선택합니다.

  7. JSON 탭을 선택합니다.

  8. 텍스트 편집기의 코드를 다음 IAM 정책으로 대체합니다.

참고: YOUR_SECRET_ARN을 기록해 둔 비밀 ARN으로 바꾸세요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "YOUR_SECRET_ARN*"
      ]
    }
  ]
}
  1. 정책 검토를 선택합니다.

  2. 이름에 정책 이름을 입력합니다. 예: dockerhub_secret_access 참고: 정책 이름은 원하는 대로 정할 수 있습니다. 이 이름은 나중에 참조할 용도로만 사용됩니다.

  3. 정책 생성을 선택합니다.

비밀을 찾을 수 있도록 CodeBuild 구성

  1. CodeBuild 콘솔을 엽니다.

  2. 탐색 창에서 빌드를 선택하고 빌드 프로젝트를 선택합니다.

  3. 내 빌드 프로젝트를 선택합니다.

  4. 편집을 클릭한 후 환경을 선택합니다.

  5. 추가 구성 섹션을 확장합니다.

  6. 환경 변수를 추가하려면 환경 변수 섹션에서 이름DOCKERHUB_USERNAM을 입력합니다.

  7. 필드에 비밀 이름 다음에 :username을 입력합니다. 예: dockerhub:username

  8. 유형에서 비밀 관리자를 선택합니다.

  9. 다음 환경 변수를 추가하려면 환경 변수 추가를 선택합니다.

  10. 이름DOCKERHUB_PASSWORD를 입력합니다.

  11. 필드에 비밀 이름 다음에 :password를 입력합니다. 예: dockerhub:password

  12. 유형에서 비밀 관리자를 선택합니다.

  13. 환경 업데이트를 선택합니다.

  14. 다른 Docker 작업을 수행하기 전에 buildspec을 수정하고 다음 명령을 추가합니다.

echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin

경고: 이 명령을 사용하면 Docker 로그인 사용자 이름과 비밀번호의 세부 정보가 빌드 로그에 기록될 수 있습니다. 제한 오류를 해결한 후에 Docker 암호를 재설정하세요.

다음 예를 참고하세요.

version: 0.2

phases:
  install:
    commands:
      - echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
  build:
    commands:
      - docker pull docker:dind
AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠