{"record":{"id":"6e9ba608c09255ab","repo":"microsoft/graphrag","slug":"cosmosdb-storage-requires-connection-string-or","errorCode":null,"errorMessage":"CosmosDB Storage requires 'connection_string' or 'account_url'.","messagePattern":"CosmosDB Storage requires 'connection_string' or 'account_url'\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/graphrag-storage/graphrag_storage/azure_cosmos_storage.py","lineNumber":82,"sourceCode":"        logger.info(\"Creating CosmosDB key-value storage\")\n        if not database_name:\n            msg = \"CosmosDB Storage requires 'database_name'.\"\n            raise ValueError(msg)\n\n        if connection_string is not None and account_url is not None:\n            msg = \"Specify either 'connection_string' or 'account_url', not both.\"\n            raise ValueError(msg)\n\n        if connection_string:\n            self._cosmos_client = CosmosClient.from_connection_string(connection_string)\n        elif account_url:\n            self._cosmos_client = CosmosClient(\n                url=account_url,\n                credential=DefaultAzureCredential(),\n            )\n        else:\n            msg = \"CosmosDB Storage requires 'connection_string' or 'account_url'.\"\n            raise ValueError(msg)\n\n        self._encoding = encoding\n        self._database_name = database_name\n        self._connection_string = connection_string\n        self._cosmosdb_account_url = account_url\n        self._container_name = container_name\n        self._namespace = namespace\n        self._database_client = None\n        self._container_client = None\n\n        self._create_database()\n        self._create_container()\n\n    # ------------------------------------------------------------------\n    # Internal DB / container management\n    # ------------------------------------------------------------------\n\n    def _create_database(self) -> None:","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/microsoft/graphrag/blob/f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704/packages/graphrag-storage/graphrag_storage/azure_cosmos_storage.py#L64-L100","documentation":"After ruling out a missing database and conflicting credentials, the constructor requires at least one endpoint: either connection_string or account_url. With neither, there is no way to reach the Cosmos account, so construction fails fast instead of failing later during I/O.","triggerScenarios":"Calling AzureCosmosStorage with both connection_string=None and account_url=None — typically because the env vars holding them were never set in the runtime environment.","commonSituations":"Deploying to a container/CI where GRAPHRAG_COSMOSDB_CONNECTION_STRING was not injected; typo'd env var name; local .env not loaded.","solutions":["Set the connection string env var (or pass connection_string=...)","Or pass account_url and ensure DefaultAzureCredential can authenticate (az login, managed identity, etc.)","Print/verify effective config before pipeline start to catch empty values"],"exampleFix":"# before\nAzureCosmosStorage(database_name=\"graphrag\")\n# after\nAzureCosmosStorage(database_name=\"graphrag\", connection_string=os.environ[\"COSMOS_CONN_STR\"])","handlingStrategy":"validation","validationCode":"import os\nconn = os.environ.get(\"GRAPHRAG_COSMOSDB_CONNECTION_STRING\")\nurl = os.environ.get(\"GRAPHRAG_COSMOSDB_ACCOUNT_URL\")\nassert conn or url, \"COSMOS credentials missing\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fail fast at startup on missing credentials","Use a secrets manager or documented .env template"],"tags":["cosmosdb","credentials","missing-env-var"],"backgroundTag":"missing-credentials","analyzedSha":"f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704","analyzedAt":"2026-08-27T11:16:29.677Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}