Azure Cosmos DB 사용할 수 없음 예외 진단 및 문제 해결
적용 대상: NoSQL
HTTP 상태 코드 403은 요청을 완료할 수 없음을 나타냅니다.
방화벽 차단 요청
데이터 평면 요청은 다음 세 가지 경로를 통해 Azure Cosmos DB에 올 수 있습니다.
- 공용 인터넷(IPv4)
- 서비스 엔드포인트
- 프라이빗 엔드포인트
403 사용할 수 없음으로 데이터 평면 요청이 차단되면 요청이 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.
솔루션
Azure Cosmos DB에 예상되는 요청 경로를 이해합니다.
- 요청이 예상 경로를 통해 Azure Cosmos DB에 오지 않았다는 오류 메시지가 표시되면 클라이언트 쪽 설정에서 문제가 발생할 수 있습니다. 다음 설명서에 따라 클라이언트 쪽 설정을 다시 확인합니다.
- 공용 인터넷: Azure Cosmos DB에서 IP 방화벽 구성.
- 서비스 엔드포인트: 가상 네트워크에서 Azure Cosmos DB에 대한 액세스를 구성합니다. 서비스 엔드포인트를 사용해야 하지만 공용 인터넷에서 Azure Cosmos DB에 요청이 제공된 경우를 고려합니다. 이 상황은 클라이언트가 실행 중인 서브넷이 Azure Cosmos DB에 대한 서비스 엔드포인트를 사용하도록 설정하지 않았음을 나타낼 수 있습니다.
- 프라이빗 엔드포인트: Azure Cosmos DB 계정에 대한 Azure Private Link 구성. 또한 프라이빗 엔드포인트를 사용해야 하지만 공용 인터넷에서 Azure Cosmos DB에 요청이 전송되었는지도 고려합니다. 이 상황은 가상 머신의 DNS(도메인 이름 서버)가 공용 IP 주소 대신 계정 엔드포인트를 프라이빗으로 확인하도록 구성되지 않았음을 나타낼 수 있습니다.
- 요청이 예상 경로를 통해 Azure Cosmos DB에 온 경우 원본 네트워크 ID가 계정에 대해 구성되지 않았기 때문에 요청이 차단되었습니다. Azure Cosmos DB에 요청이 들어온 경로에 따라 계정 설정을 확인합니다.
- 공개 인터넷: 계정의 공용 네트워크 액세스 및 IP 범위 필터 구성을 확인합니다.
- 서비스 엔드포인트: 계정의 공용 네트워크 액세스 및 가상 네트워크 필터 구성을 확인합니다.
- 프라이빗 엔드포인트: 계정의 프라이빗 엔드포인트 구성과 클라이언트의 프라이빗 DNS 구성을 확인합니다. 이 문제는 다른 계정에 대해 설정된 프라이빗 엔드포인트에서 계정에 액세스하기 때문일 수 있습니다.
최근에 계정의 방화벽 구성을 업데이트한 경우 변경사항이 적용되는 데 최대 15분이 소요될 수 있습니다.
스토리지를 초과하는 파티션 키
이 시나리오에서는 다음과 같은 오류가 표시되는 것이 일반적입니다.
Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB
솔루션
이 오류는 현재 분할 설계 및 워크로드가 지정된 파티션 키 값에 대해 허용된 양보다 많은 데이터를 저장하려고 함을 의미합니다. 컨테이너의 논리 파티션 수에는 제한이 없지만 각 논리 파티션에서 저장할 수 있는 데이터의 크기는 제한됩니다. 지원을 위해 연락할 수 있습니다.
비데이타 작업은 허용되지 않습니다.
이 시나리오는 Microsoft Entra ID를 사용하여 비데이타 작업을 수행하려고 할 때 발생합니다. 이 시나리오에서는 다음과 같은 오류가 표시되는 것이 일반적입니다.
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.
솔루션
Azure Resource Manager, Azure Portal, Azure CLI 또는 Azure PowerShell을 통해 작업을 수행합니다.
Azure Functions Azure Cosmos DB 트리거를 사용하는 경우 트리거의 속성이 설정되지 않았는지 확인 CreateLeaseContainerIfNotExists
합니다 true
. Microsoft Entra ID를 사용하면 임대 컨테이너 만들기와 같은 비데이타 작업이 차단됩니다.