Snowpark Container Services 문제 해결

이 항목에서는 일반적인 문제와 이러한 문제를 해결하는 방법을 설명합니다.

이미지 레지스트리

  • 공용 서비스 엔드포인트에 액세스할 때 《invalid consent request》 오류가 수신되었습니다.

    현재 구현에서 Snowflake는 기본 역할을 사용하여 현재 사용자를 인증합니다. 이 오류는 아마 사용자가 ACCOUNTADMIN, SECURITYADMIN 또는 ORGADMIN과 같이 권한 있는 역할 중 하나를 기본 역할로 사용하고 있기 때문에 발생하는 것 같습니다(통합 사용에서 특정 역할 차단하기 참조). ALTER USER 명령을 사용하여 사용자의 기본 역할을 변경하고 다시 시도하십시오.

  • docker login 인증 실패.

    docker login 명령에 대문자 호스트 이름을 사용하지 말고 docker push, docker pull 명령에 소문자 호스트 이름을 사용하십시오. Docker CLI는 대/소문자 키와 함께 자격 증명을 저장합니다. 관련 Docker CLI 문제.

  • docker push 오류: 요청 URL에 호스트가 없습니다.

    Docker CLI와 상호 작용할 때 항상 URL에 있는 계정 이름의 밑줄을 하이픈으로 바꾸십시오. Docker CLI는 호스트 이름에 밑줄이 있으면 (cURL이 작동하더라도) 오류를 반환합니다. 예를 들어 다음 Docker 푸시는 《my_acct》를 계정 이름으로 지정합니다.

    docker push myorg-my_acct.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/service_to_service
    
    Copy

    Docker는 다음 오류를 반환합니다.

    Get "https:/v2/": http: no Host in request URL.
    

    또한 SHOW IMAGE REPOSITORIES 명령을 사용하여 유효한 리포지토리 URL을 가져올 수도 있습니다.

컴퓨팅 풀

  • 일시 중단된 컴퓨팅 풀이 STOPPING 상태로 고착되었습니다.

    서비스를 실행하면 컴퓨팅 풀이 중지되지 않습니다. ALTER COMPUTE POOL 명령을 사용하여 컴퓨팅 풀에 남아 있는 모든 활성 서비스를 일시 중단합니다.

    ALTER COMPUTE POOL <pool_name> STOP ALL
    
    Copy

서비스

  • 실행 중인 서비스가 더 이상 (서비스 함수 또는 공용 엔드포인트의) 요청에 응답하지 않습니다. 서비스 상태가 실행 중에서 보류 중으로 변경되었습니다.

    이는 컴퓨팅 풀 노드의 리소스 부족을 나타낼 수 있습니다. 컨테이너가 리소스(CPU/메모리) 집약적인 경우 너무 많은 서비스/작업이 단일 노드에 배치되지 않도록 서비스/작업 사양에 리소스 요청을 명시적으로 지정해야 합니다.

    현재 구현에서는 메모리 요청만 지정할 수 있습니다.

    예를 들어 컴퓨팅 풀의 노드에 64GB의 RAM이 있는 경우 서비스/작업에 대해 32GB 이상을 요청하면 한 번에 한 노드에서 하나의 서비스 또는 작업만 노드에서 실행할 수 있도록 보장하게 됩니다. 각 인스턴스 유형의 기능에 대한 자세한 내용은 CREATE COMPUTE POOL 섹션을 참조하십시오.

  • 서비스에 대한 공용 엔드포인트에 요청을 제출하는 경우 HTTP 인증 헤더에 큰따옴표를 사용하지 마십시오.

서비스 함수

  • 서비스 함수 시간 초과 및 중복 실행 문제.

    단일 서비스 함수 호출이 30초보다 오래 걸리는 경우 Snowflake는 함수를 다시 시도하고, 몇 번 다시 시도한 후에는 시간 초과 오류로 인해 함수가 실패합니다. 컨테이너의 함수 구현이 idempotent가 아닌 경우 예기치 않은 결과가 발생할 수 있습니다. 더 긴 시간 제한을 허용하는 다른 HTTP 코드(202)를 반환하여 비동기 실행을 사용해 보십시오. 자세한 내용은 비동기 원격 서비스 섹션을 참조하십시오.

  • 서비스 함수를 호출하면 《service not found》 오류가 반환되지만 SHOW SERVICES 명령은 서비스가 존재함을 보여줍니다.

    서비스 함수와 연결된 서비스가 삭제되고(DROP SERVICE) 다시 생성되었는지(CREATE SERVICE) 확인하십시오. 그렇다면 새로운 서비스를 가리키도록 서비스 함수를 다시 만들어야 합니다.