Post

GCE에서 Vertex AI 연동 이슈

GCE에서 Vertex AI 연동 이슈

문제상황

마이그레이션을 하면서 계정을 아이에 옮겼는데 한 가지 Vertex AI API를 호출하는 부분에 문제가 생겼습니다. Failed to generate contents 리턴이 있었습니다. 로컬에서도 비슷한 이슈를 봤었기 때문에 Permission 이슈라는 것은 인지를 하고 있었는데 왜 안될지에 대해 고민해보게 되었습니다. 로컬에서 가동시에는 Vertex AI를 잘 호출하고 있는 것을 볼 수 있었습니다. 문제는 배포한 GCE에서 해당 API를 호출하는 과정에서 발생했기 때문에 분명히 클라우드 서비스 상 세팅의 문제였습니다.

당시 프로젝트 구조도를 살펴봤을 때, 포트 설정을 하거나 API 권한 관련 이슈를 다루는 부분을 살펴봤습니다. 일단 VPC 인그레스, 이그레스 포트 설정은 잘 되어 있는 상태였고, VPC 내 서비스 계정(IAM)을 일치시켜 사용하고 있었기 때문에 내부 호출에는 지장이 없었습니다. 그리고 서비스 계정에서 Vertex AI 관리자로 오버스팩(?)을 설정해 놓은 상태였기 때문에 권한에 별다른 문제가 없지 않을지에 대해 생각했습니다.

해결방안

문제가 되는 부분은 정말 단순하게도 GCE에 보면 있는 API 및 ID 관리 부분에 사용여부의 허용을 하지 않았습니다. 콘솔에서 단순하게 허용된 서비스 목록을 보고 열려있다고 확인하고 이 부분을 체크하지 못했던 것입니다. (gcloud services enable aiplatform.googleapis.com --project=todaystock-439902)

그리고 인스턴스 그룹화를 위한 만든 인스턴스에는 처음에 사실 설정을 해두었지만, 로드밸런서 설정 문제로 인스턴스 그룹과 템플릿을 다시 세팅하면서 사진 부분의 설정이 빠져서 그냥 기본 API 사용 기준으로 설정되어 있었습니다. 그래서 새로 템플릿에 따라 설정된 인스턴스에서는 Vertex AI 기능 권한이 없어서 io.grpc.StatusRuntimeException: PERMISSION_DENIED 이슈가 발생했었습니다.

결과적으로 다시 인스턴스 템플릿을 새로 만들어 로드밸런서가 정상동작하는지 확인했고 로컬, 서버 내부 테스트, 도메인 호출 테스트로 문제가 없음을 확인했습니다. 설정 부분이 AWS와 다소 상이한 부분이 있다보니 이번 마이그레이션과 이슈를 잡는 부분에서도 조금 시간이 걸렸습니다. 기록을 위해 적어두고 이런 단순한 문제가 발생했을 때 기억해 두려고 합니다.

This post is licensed under CC BY 4.0 by the author.