{"record":{"id":"a5ab39c1d249ad88","repo":"BerriAI/litellm","slug":"gcs-bucket-is-required-for-vertex-ai-rag-ingestion","errorCode":null,"errorMessage":"gcs_bucket is required for Vertex AI RAG ingestion. Set via vector_store config or GCS_BUCKET_NAME env var.","messagePattern":"gcs_bucket is required for Vertex AI RAG ingestion\\. Set via vector_store config or GCS_BUCKET_NAME env var\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/llms/vertex_ai/rag_engine/ingestion.py","lineNumber":91,"sourceCode":"        # Get corpus ID (required for Vertex AI)\n        self.corpus_id = self.vector_store_config.get(\"vector_store_id\")\n        if not self.corpus_id:\n            raise ValueError(\n                \"vector_store_id (corpus ID) is required for Vertex AI RAG ingestion. \"\n                \"Please provide an existing RAG corpus ID.\"\n            )\n\n        # GCP config\n        self.vertex_project = self.vector_store_config.get(\"vertex_project\") or get_secret_str(\"VERTEXAI_PROJECT\")\n        self.vertex_location = (\n            self.vector_store_config.get(\"vertex_location\") or get_secret_str(\"VERTEXAI_LOCATION\") or \"us-central1\"\n        )\n        self.vertex_credentials = self.vector_store_config.get(\"vertex_credentials\")\n\n        # GCS bucket for file uploads\n        self.gcs_bucket = self.vector_store_config.get(\"gcs_bucket\") or os.environ.get(\"GCS_BUCKET_NAME\")\n        if not self.gcs_bucket:\n            raise ValueError(\n                \"gcs_bucket is required for Vertex AI RAG ingestion. \"\n                \"Set via vector_store config or GCS_BUCKET_NAME env var.\"\n            )\n\n        # Import settings\n        self.wait_for_import = self.vector_store_config.get(\"wait_for_import\", True)\n        self.import_timeout = _get_int(self.vector_store_config.get(\"import_timeout\"), 600)\n\n        # Validate required config\n        if not self.vertex_project:\n            raise ValueError(\n                \"vertex_project is required for Vertex AI RAG ingestion. \"\n                \"Set via vector_store config or VERTEXAI_PROJECT env var.\"\n            )\n\n    def _get_corpus_name(self) -> str:\n        \"\"\"Get full corpus resource name.\"\"\"\n        return f\"projects/{self.vertex_project}/locations/{self.vertex_location}/ragCorpora/{self.corpus_id}\"","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/vertex_ai/rag_engine/ingestion.py#L73-L109","documentation":"ValueError raised in VertexRAGIngestion.__init__ when no GCS bucket is configured. Vertex RAG ingestion uploads each file to Google Cloud Storage before importing it into the RAG corpus, so a bucket is resolved from vector_store config 'gcs_bucket' or the GCS_BUCKET_NAME environment variable and must be present.","triggerScenarios":"Building a Vertex RAG ingestion job whose vector_store config omits gcs_bucket and whose process environment lacks GCS_BUCKET_NAME.","commonSituations":"Teams that already created a corpus but forgot the upload bucket; env var named differently (GCS_BUCKET vs GCS_BUCKET_NAME); bucket exists in another project/account.","solutions":["Set gcs_bucket='my-bucket' in the vector_store config, or export GCS_BUCKET_NAME=my-bucket","Create the bucket first if needed: gcloud storage buckets create gs://my-bucket","Grant the credentials storage.objects.create on that bucket - otherwise init passes but the later upload step fails"],"exampleFix":"# before\nvector_store_config = {'vector_store_id': 'corpus-123', 'vertex_project': 'my-project'}\n\n# after\nvector_store_config = {\n    'vector_store_id': 'corpus-123',\n    'vertex_project': 'my-project',\n    'gcs_bucket': 'my-rag-uploads',  # or: export GCS_BUCKET_NAME=my-rag-uploads\n}","handlingStrategy":"validation","validationCode":"import os\n\ncfg = get_vector_store_config()\nbucket = cfg.get('gcs_bucket') or os.environ.get('GCS_BUCKET_NAME')\nassert bucket, 'gcs_bucket or GCS_BUCKET_NAME is required for vertex_ai RAG ingestion'","typeGuard":null,"tryCatchPattern":"try:\n    ingestion = VertexRAGIngestion(ingest_options=opts, router=router)\nexcept ValueError as e:\n    if 'gcs_bucket' in str(e):\n        raise SystemExit('Set gcs_bucket in vector_store config or export GCS_BUCKET_NAME')\n    raise","preventionTips":["Declare GCS_BUCKET_NAME alongside other Vertex env vars","Pre-create the upload bucket and verify naming (GCS_BUCKET_NAME, not GCS_BUCKET)","Validate all required vector_store keys before starting ingestion jobs"],"tags":["vertex-ai","rag","gcs","configuration"],"backgroundTag":"missing-env-var","analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}