หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Cosmos DB ใน Microsoft Fabric อาศัยการรับรองความถูกต้องของ Microsoft Entra ID และบทบาทระนาบข้อมูลในตัวเพื่อจัดการการรับรองความถูกต้องและการอนุญาต ในคู่มือนี้ คุณใช้ Microsoft Entra ID และบัญชีที่ลงชื่อเข้าใช้ของคุณเพื่อเชื่อมต่อกับสิ่งประดิษฐ์ Cosmos DB ใน Microsoft Fabric
ข้อกําหนดเบื้องต้น
ความจุ Fabric ที่มีอยู่
- ถ้าคุณไม่มีความจุ Fabric ให้เริ่มการทดลองใช้ Fabric
ฐานข้อมูล Cosmos DB ที่มีอยู่ใน Fabric
- ถ้าคุณยังไม่มี ให้สร้างฐานข้อมูล Cosmos DB ใหม่ใน Fabric
ข้อมูลประจําตัวที่มีสิทธิ์ อ่าน สําหรับฐานข้อมูลใน Fabric
- สําหรับข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ Fabric โปรดดู การควบคุมการเข้าถึง
ดึงข้อมูลตําแหน่งข้อมูล Cosmos DB
ขั้นแรก รับตําแหน่งข้อมูลสําหรับฐานข้อมูล Cosmos DB ใน Fabric จุดสิ้นสุดนี้จําเป็นสําหรับการเชื่อมต่อโดยใช้ Azure SDK
เปิดพอร์ทัล Fabric (https://app.fabric.microsoft.com)
นําทางไปยังฐานข้อมูล Cosmos DB ที่มีอยู่ของคุณ
เลือกตัวเลือก การตั้งค่า ในแถบเมนูสําหรับฐานข้อมูล
ในกล่องโต้ตอบการตั้งค่า ให้ไปที่ส่วนการเชื่อมต่อ จากนั้น คัดลอกค่าของฟิลด์ฐานข้อมูล Endpoint for Cosmos DB NoSQL คุณใช้ค่านี้ในขั้นตอนต่อมา
รับรองความถูกต้องจากสมุดบันทึก
สมุดบันทึก Fabric ไม่มีวิธีสร้างออบเจ็กต์ข้อมูลประจําตัว Azure ที่ถูกต้องที่ใช้โดยบริการ Azure ผู้ใช้รับรองความถูกต้องโดยใช้ ยูทิลิตี้ข้อมูลประจําตัว Fabric NotebookUtils ซึ่งต้องการขอบเขตการรับรองความถูกต้องสําหรับ Cosmos DB และสร้างโทเค็นในรูปแบบสตริง ซึ่งต้องใช้รหัสแบบกําหนดเองเพื่อสร้างออบเจ็กต์ข้อมูลประจําตัว Azure ที่ถูกต้อง
นี่คือตัวอย่างสมุดบันทึกที่สาธิตวิธีการทําเช่นนี้
เซลล์ [1]:
#Install packages
%pip install azure-cosmos
เซลล์ [2]:
#Imports and config values
import logging
from azure.cosmos.aio import CosmosClient
from azure.cosmos.exceptions import CosmosHttpResponseError
COSMOS_ENDPOINT = 'https://my-cosmos-endpoint.cosmos.fabric.microsoft.com:443/'
COSMOS_DATABASE_NAME = '{your-cosmos-artifact-name}'
COSMOS_CONTAINER_NAME = '{your-container-name}'
เนื้อหาของ เซลล์ 3 สร้างวัตถุ FabricTokenCredential() และประกอบด้วยรหัสที่จําเป็นในการสร้างวัตถุข้อมูลประจําตัวที่ถูกต้องสําหรับ Cosmos DB SDK จากสตริงโทเค็นที่สร้างขึ้นโดย ยูทิลิตี้ข้อมูลประจําตัว Fabric NotebookUtils ซึ่งจําเป็นในการรับรองความถูกต้องของผู้ใช้
เซลล์ [3]:
# Custom TokenCredential implementation for Fabric authentication in a notebook
%pip install azure-core
from azure.core.credentials import TokenCredential, AccessToken
import base64
import json
import notebookutils
from datetime import datetime, timezone
class FabricTokenCredential(TokenCredential):
def get_token(self, *scopes: str, claims: Optional[str] = None, tenant_id: Optional[str] = None,
enable_cae: bool = False, **kwargs: Any) -> AccessToken:
access_token = notebookutils.credentials.getToken("https://cosmos.azure.com/")
parts = access_token.split(".")
if len(parts) < 2:
raise ValueError("Invalid JWT format")
payload_b64 = parts[1]
# Fix padding
padding = (-len(payload_b64)) % 4
if padding:
payload_b64 += "=" * padding
payload_json = base64.urlsafe_b64decode(payload_b64.encode("utf-8")).decode("utf-8")
payload = json.loads(payload_json)
exp = payload.get("exp")
if exp is None:
raise ValueError("exp claim missing in token")
return AccessToken(token=access_token, expires_on=exp)
เซลล์ [4]:
# Create a Cosmos client with the FabricTokenCredential() and run a query
async with CosmosClient(endpoint, credential=FabricTokenCredential()) as client:
container = client.get_database_client(COSMOS_DATABASE_NAME).get_container_client(COSMOS_CONTAINER_NAME)
query_text = "SELECT * FROM c"
results = container.query_items(query=query_text)
items = []
async for item in results:
items.append(item)
for item in items:
print(item)