Share via


자산 캐싱 문제 해결

자산 캐싱은 다운로드한 패키지(자산)를 로컬 또는 네트워크에 저장하여 패키지 검색을 가속화하여 외부 원본에 대한 종속성을 줄입니다. 이 가이드는 자산 캐시 설정 또는 작업에 어려움을 겪는 사용자를 지원합니다.

초기 설정 지침은 자산 캐싱 설명서를 참조 하세요.

자산 캐싱 오류 진단

vcpkg는 인터넷에서 아티팩트 다운로드 전에 사용 가능한 자산 캐시를 검사. 기본적으로 캐시에서 자산을 찾을 수 없는 경우 자동으로 외부 원본으로 대체됩니다.

'x-block-origin' 옵션은 자산 복원 오류를 명시적 빌드 오류로 변환하여 의도하지 않은 외부 다운로드를 방지합니다. 이 옵션을 사용하여 보안을 강화하고 누락된 캐시 적발을 더 잘 표시할 수 있습니다.

자산 복원 문제 검색

자산 복원 문제는 기본적으로 자동입니다. 아티팩트의 다운로드 URL의 유효성을 검사하여 검색할 수 있습니다.

Downloading 7zip...
https://www.7-zip.org/a/7z2301-extra.7z -> C:\vcpkg\downloads\7z2301-extra.7z

또는 옵션을 사용할 때 x-block-origin 명시적 오류가 발생합니다.

error: Failed to download from mirror set

자산 업로드 문제 검색

자산 원본이 올바르게 구성된 경우 vcpkg는 자산을 캐시에 업로드할 수 없는 경우 경고를 내보낸다.

warning: failed to store back to mirror

아티팩트가 내 자산 캐시에서 업로드되거나 복원되지 않음

x-azurl vcpkg에서 제공하는 자산 캐시 백 엔드는 Azure Storage 컨테이너에서 작동하도록 설계되었으며 간단한 토큰 인증으로 PUT 요청을 수락하는 다른 스토리지 서비스와 함께 작동할 수 있습니다.

구성의 형식은 다음과 같습니다.

x-azurl,<url>,<sas>[,<rw>]

  • <url>: 컨테이너의 기본 URL
  • <sas>: Azure Storage 컨테이너로 작업하는 경우 SAS(공유 액세스 서명) 토큰입니다. 또는 다른 공급자와 함께 작업하는 경우 인증 요청 매개 변수입니다.
  • <rw>: (선택 사항) 읽기/쓰기 권한 구성

참고 항목

Azure Storage 컨테이너를 사용하도록 디자인되었습니다. 백 엔드는 x-azurl 요청을 <url>?<sas>수락하는 스토리지 서비스에 사용할 수 있습니다.

예를 들어 x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite 요청이 .의 형태로 생성됩니다 https://contoso.com?token=TOKEN_VALUE.

자산 캐시 공급자에 권한 부여가 필요하지 않은 경우 매개 변수를 <sas> 비워 둘 수 있습니다. 예들 들어 x-azurl,https://contoso.com,,readwrite입니다.

원인 1: URL의 형식이 올바르게 지정되지 않았습니다.

자산 캐시를 설정할 때 URL의 일부로 포함 https:// 해야 합니다.

해결 단계:

1 - 구성된 URL이 올바른지 확인합니다.

원인 2: 권한 부여 토큰의 형식이 올바르게 지정되지 않았습니다.

vcpkg는 매개 변수를 <sas> 사용하여 자산 캐시 공급자에 인증합니다. 권한 부여가 성공하지 못할 수 있는 다양한 이유가 있습니다.

Azure Storage 컨테이너 <sas> 를 사용하는 경우 매개 변수는 다른 요청 매개 변수 서식이 없는 SAS 토큰만 포함해야 합니다. 예시:

x-azurl,https://mystorageaccount.blob.core.windows.net/mystoragecontainer,sasvaluehere,readwrite

자세한 내용은 SAS 토큰 생성에 대한 설명서를 참조하세요. 생성된 토큰의 읽기 및 쓰기 권한이 필요한 사용 사례와 일치하는지 확인합니다.

다른 공급자를 사용하는 경우 요청 매개 변수의 형식을 올바르게 지정해야 할 수 있습니다. 예를 들어 토큰 값 앞에 매개 변수 이름을 접두사로 추가합니다.

x-azurl,https://contoso.com,authorization=tokenvaluehere,readwrite.

해결 단계:

1 - 권한 부여 토큰이 만료되지 않았는지 확인

2 - 권한 부여 토큰에 컨테이너에 대한 올바른 권한이 있는지 확인

3 - 권한 부여 토큰의 값이 올바른지 확인

4 - 권한 부여 토큰의 형식이 공급자가 예상한 형식과 일치하는지 확인합니다.

"미러 집합에서 다운로드하지 못했습니다." 오류 메시지가 표시됩니다.

이 문제는 자산 캐싱 구성에 포함되는 경우에 발생합니다.x-block-origin

턴 실패를 사용하여 x-block-origin 구성된 캐시의 자산을 패키지 빌드 실패로 복원합니다. 외부 원본에 대한 원치 않는 액세스를 방지합니다.

해결 단계:

1 - 네트워크에 자산 원본에 대한 액세스 권한이 있는지 확인

2 - 요청된 자산이 구성된 자산 캐시 중 하나 이상에 있는지 확인합니다. 패키지가 없는 경우 이 문제를 해결하는 두 가지 방법이 있습니다.

  • vcpkg에서 자산을 다운로드하고 구성된 자산 캐시에 업로드할 수 있도록 일시적으로 사용하지 않도록 설정합니다 x-block-origin .
  • 구성된 자산 캐시 중 하나에 자산을 수동으로 업로드합니다.

3 - 자산 캐시가 제대로 구성되었는지 확인하고 아티팩트의 단계를 수행하여 내 자산 캐시에서 업로드되거나 복원되지 않습니다.

문제는 여기에 나열되지 않습니다.

여기에 문제가 나열되지 않으면 리포지토리를 방문하여 새 문제를 만듭니다.