Udostępnij za pośrednictwem


Diagnozowanie i rozwiązywanie problemów z zabronionymi wyjątkami usługi Azure Cosmos DB

DOTYCZY: NoSQL

Kod stanu HTTP 403 oznacza, że żądanie jest zabronione do wykonania.

Blokowanie żądań przez zaporę

Żądania płaszczyzny danych mogą docierać do usługi Azure Cosmos DB za pośrednictwem następujących trzech ścieżek.

  • Ogólnodostępny Internet (IPv4)
  • Punkt końcowy usługi
  • Prywatny punkt końcowy

Gdy żądanie płaszczyzny danych zostanie zablokowane błędem 403 Forbidden, komunikat o błędzie określa, którą z trzech wcześniejszych ścieżek żądanie dotarło do Azure Cosmos DB.

  • Request originated from client IP {...} through public internet.
  • Request originated from client VNET through service endpoint.
  • Request originated from client VNET through private endpoint.

Rozwiązanie

Dowiedz się, jaką ścieżką jest spodziewane przybycie żądania do usługi Azure Cosmos DB.

  • Jeśli komunikat o błędzie pokazuje, że żądanie nie przyszło do usługi Azure Cosmos DB za pośrednictwem oczekiwanej ścieżki, problem prawdopodobnie dotyczy konfiguracji po stronie klienta. Dokładnie sprawdź konfigurację po stronie klienta, postępując zgodnie z dokumentacją.
    • Publiczny Internet: skonfiguruj zaporę ip w usłudze Azure Cosmos DB.
    • Punkt końcowy usługi: skonfiguruj dostęp do usługi Azure Cosmos DB z sieci wirtualnych. Zastanów się, czy oczekiwałeś użycia punktu końcowego usługi, ale żądanie przyszło do usługi Azure Cosmos DB z publicznego Internetu. Taka sytuacja może wskazywać, że podsieć uruchomiona przez klienta nie włączyła punktu końcowego usługi do usługi Azure Cosmos DB.
    • Prywatny punkt końcowy: skonfiguruj usługę Azure Private Link dla konta usługi Azure Cosmos DB. Należy również rozważyć, czy spodziewano się użycia prywatnego punktu końcowego, ale żądanie dotarło do usługi Azure Cosmos DB z publicznego Internetu. Taka sytuacja może wskazywać, że serwer nazw domen (DNS) na maszynie wirtualnej nie został skonfigurowany do rozpoznawania punktu końcowego konta jako prywatnego zamiast publicznego adresu IP.
  • Jeśli żądanie dotarło do usługi Azure Cosmos DB za pośrednictwem oczekiwanej ścieżki, żądanie zostało zablokowane, ponieważ tożsamość sieci źródłowej nie została skonfigurowana dla konta. Sprawdź ustawienia konta w zależności od ścieżki, którą żądanie dotarło do usługi Azure Cosmos DB.
    • Publiczny Internet: sprawdź konfiguracje dostępu do sieci publicznej konta i filtrów zakresu adresów IP.
    • Punkt końcowy usługi: sprawdź dostęp do sieci publicznej konta oraz konfiguracje filtrowania sieci wirtualnej.
    • Prywatny punkt końcowy: sprawdź konfigurację prywatnego punktu końcowego konta i prywatną konfigurację DNS klienta. Ten problem może być spowodowany uzyskaniem dostępu do konta z prywatnego punktu końcowego skonfigurowanego dla innego konta.

Jeśli ostatnio zaktualizowano konfiguracje zapory konta, należy pamiętać, że zastosowanie zmian może potrwać do 15 minut.

Klucz partycjonowania przekraczający pojemność magazynową

W tym scenariuszu często występują błędy, takie jak te w tym miejscu:

Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB

Rozwiązanie

Ten błąd oznacza, że bieżący projekt partycji i obciążenie próbuje przechowywać więcej niż dozwoloną ilość danych dla danej wartości klucza partycji. Nie ma limitu liczby partycji logicznych w kontenerze, ale rozmiar danych, które może przechowywać każda partycja logiczna, jest ograniczony. Aby uzyskać wyjaśnienia, możesz skontaktować się z pomocą techniczną.

Operacje inne niż dane nie są dozwolone

Ten scenariusz występuje, gdy podejmuje się próbę wykonania operacji niedotyczących danych przy użyciu tożsamości Microsoft Entra. W tym scenariuszu często występują błędy, takie jak te w tym miejscu:

Operation 'POST' on resource 'calls' is not allowed through Azure Cosmos DB endpoint
Forbidden (403); Substatus: 5300; The given request [PUT ...] cannot be authorized by AAD token in data plane.

Rozwiązanie

Wykonaj operację za pomocą usługi Azure Resource Manager, witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Jeśli używasz wyzwalacza Azure Functions Azure Cosmos DB, upewnij się, że właściwość CreateLeaseContainerIfNotExists wyzwalacza nie jest ustawiona na true. Użycie tożsamości entra firmy Microsoft blokuje dowolną operację niezwiązaną z danymi, taką jak tworzenie kontenera dzierżawy.