ربط إخراج Azure Cosmos DB لوظائف Azure 2.x وأعلى
يتيح لك رابط إخراج Azure Cosmos DB كتابة مستند جديد في قاعدة بيانات Azure Cosmos DB باستخدام واجهة برمجة تطبيقات SQL.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
تدعم Azure Functions نموذجي برمجة ل Python. تعتمد الطريقة التي تحدد بها روابطك على نموذج البرمجة الذي اخترته.
يتيح لك نموذج برمجة Python v2 تحديد الروابط باستخدام المحسنات مباشرة في التعليمات البرمجية لدالة Python. لمزيد من المعلومات، راجع دليل مطور Python.
تدعم هذه المقالة كلا نموذجي البرمجة.
يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework. تستخدم
Microsoft.Azure.Functions.Worker.Extensions.*
ملحقات دالات عملية العامل المعزولة مساحات الأسماء. - نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف. في تباين هذا النموذج، يمكن تشغيل الدالات باستخدام البرمجة النصية C#، والتي يتم دعمها بشكل أساسي لتحرير مدخل C#. تستخدم
Microsoft.Azure.WebJobs.Extensions.*
ملحقات الوظائف قيد المعالجة مساحات الأسماء.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
مثال
ما لم تتم الإشارة إلى خلاف ذلك، فإن الأمثلة الواردة في هذه المقالة تستهدف الإصدار 3.x من ملحق Azure Cosmos DB. للاستخدام مع إصدار الملحق 4.x، تحتاج إلى استبدال السلسلة collection
في أسماء الخصائص والسمات ب container
و connection_string_setting
ب connection
.
تحدد التعليمات البرمجية التالية نوع MyDocument
:
public class MyDocument
{
public string? Id { get; set; }
public string? Text { get; set; }
public int Number { get; set; }
public bool Boolean { get; set; }
}
في المثال التالي، نوع الإرجاع هو IReadOnlyList<T>
، وهو قائمة معدلة من المستندات من معلمة ربط المشغل:
using System.Collections.Generic;
using System.Linq;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public class CosmosDBFunction
{
private readonly ILogger<CosmosDBFunction> _logger;
public CosmosDBFunction(ILogger<CosmosDBFunction> logger)
{
_logger = logger;
}
//<docsnippet_exponential_backoff_retry_example>
[Function(nameof(CosmosDBFunction))]
[ExponentialBackoffRetry(5, "00:00:04", "00:15:00")]
[CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", Connection = "CosmosDBConnection", CreateIfNotExists = true)]
public object? Run(
[CosmosDBTrigger(
"%CosmosDb%",
"%CosmosContainerIn%",
Connection = "CosmosDBConnection",
LeaseContainerName = "leases",
CreateLeaseContainerIfNotExists = true)] IReadOnlyList<MyDocument> input,
FunctionContext context)
{
if (input != null && input.Any())
{
foreach (var doc in input)
{
_logger.LogInformation("Doc Id: {id}", doc.Id);
}
// Cosmos Output
return input.Select(p => new { id = p.Id });
}
return null;
}
//</docsnippet_exponential_backoff_retry_example>
}
- قائمة انتظار المشغل، حفظ الرسالة إلى قاعدة البيانات عبر القيمة المرجعة
- مشغل HTTP، حفظ مستند واحد إلى قاعدة البيانات عبر القيمة المرجعة
- مشغل HTTP، حفظ مستند واحد إلى قاعدة البيانات عبر OutputBinding
- مشغل HTTP، حفظ مستندات متعددة إلى قاعدة البيانات عبر OutputBinding
قائمة انتظار المشغل، حفظ الرسالة إلى قاعدة البيانات عبر القيمة المرجعة
يظهر المثال التالي دالة Java التي تضيف مستندًا إلى قاعدة البيانات مع بيانات من رسالة في محزن قائمة الانتظار.
@FunctionName("getItem")
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "AzureCosmosDBConnection")
public String cosmosDbQueryById(
@QueueTrigger(name = "msg",
queueName = "myqueue-items",
connection = "AzureWebJobsStorage")
String message,
final ExecutionContext context) {
return "{ id: \"" + System.currentTimeMillis() + "\", Description: " + message + " }";
}
مشغل HTTP، حفظ مستند واحد إلى قاعدة البيانات عبر القيمة المرجعة
يظهر المثال التالي دالة Java التي تم توضيح توقيعها بـ @CosmosDBOutput
بالقيمة المرجعة من نوع String
. ستتم كتابة مستند JSON الذي تم إرجاعه بواسطة الدالة تلقائيا إلى مجموعة Azure Cosmos DB المقابلة.
@FunctionName("WriteOneDoc")
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
public String run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Generate document
final String jsonDocument = "{\"id\":\"" + id + "\", " +
"\"description\": \"" + name + "\"}";
context.getLogger().info("Document to be saved: " + jsonDocument);
return jsonDocument;
}
مشغل HTTP، حفظ مستند واحد إلى قاعدة البيانات عبر OutputBinding
يوضح المثال التالي دالة Java التي تكتب مستندا إلى Azure Cosmos DB عبر معلمة OutputBinding<T>
إخراج. في هذا المثال، المعلمة outputItem
يجب أن تكون موضحة بـ @CosmosDBOutput
، وليس بتوقيع الدالة. يتيح استخدام OutputBinding<T>
لدالتك الاستفادة من الربط لكتابة المستند إلى Azure Cosmos DB مع السماح أيضا بإرجاع قيمة مختلفة لمستدعي الدالة، مثل مستند JSON أو XML.
@FunctionName("WriteOneDocOutputBinding")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
OutputBinding<String> outputItem,
final ExecutionContext context) {
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Generate document
final String jsonDocument = "{\"id\":\"" + id + "\", " +
"\"description\": \"" + name + "\"}";
context.getLogger().info("Document to be saved: " + jsonDocument);
// Set outputItem's value to the JSON document to be saved
outputItem.setValue(jsonDocument);
// return a different document to the browser or calling client.
return request.createResponseBuilder(HttpStatus.OK)
.body("Document created successfully.")
.build();
}
مشغل HTTP، حفظ مستندات متعددة إلى قاعدة البيانات عبر OutputBinding
يوضح المثال التالي دالة Java التي تكتب مستندات متعددة إلى Azure Cosmos DB عبر معلمة OutputBinding<T>
إخراج. في هذا المثال، المعلمة outputItem
موضحة بـ @CosmosDBOutput
، وليس بتوقيع الدالة. معلمة الإخراج، outputItem
تحتوي على قائمة بالعناصر ToDoItem
كنوع معلمة القالب الخاص بها. يتيح استخدام OutputBinding<T>
لدالتك الاستفادة من الربط لكتابة المستندات إلى Azure Cosmos DB مع السماح أيضا بإرجاع قيمة مختلفة إلى مستدعي الدالة، مثل مستند JSON أو XML.
@FunctionName("WriteMultipleDocsOutputBinding")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
OutputBinding<List<ToDoItem>> outputItem,
final ExecutionContext context) {
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Generate documents
List<ToDoItem> items = new ArrayList<>();
for (int i = 0; i < 5; i ++) {
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Create ToDoItem
ToDoItem item = new ToDoItem(String.valueOf(id), name);
items.add(item);
}
// Set outputItem's value to the list of POJOs to be saved
outputItem.setValue(items);
context.getLogger().info("Document to be saved: " + items);
// return a different document to the browser or calling client.
return request.createResponseBuilder(HttpStatus.OK)
.body("Documents created successfully.")
.build();
}
في مكتبة وقت تشغيل وظائف Java، استخدم التعليق التوضيحي @CosmosDBOutput
على المعلمات التي ستتم كتابتها إلى Azure Cosmos DB. يجب أن يكون نوع معلمة التعليق التوضيحي OutputBinding<T>
، حيث T
هو إما نوع Java أصلي أو POJO.
يوضح المثال التالي قائمة انتظار تخزين تم تشغيلها لدالة TypeScript لقائمة انتظار تتلقى JSON بالتنسيق التالي:
{
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
تقوم الدالة بإنشاء مستندات Azure Cosmos DB بالتنسيق التالي لكل سجل:
{
"id": "John Henry-123456",
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
إليك التعليمات البرمجية TypeScript:
import { app, InvocationContext, output } from '@azure/functions';
interface MyQueueItem {
name: string;
employeeId: string;
address: string;
}
interface MyCosmosItem {
id: string;
name: string;
employeeId: string;
address: string;
}
export async function storageQueueTrigger1(queueItem: MyQueueItem, context: InvocationContext): Promise<MyCosmosItem> {
return {
id: `${queueItem.name}-${queueItem.employeeId}`,
name: queueItem.name,
employeeId: queueItem.employeeId,
address: queueItem.address,
};
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'inputqueue',
connection: 'MyStorageConnectionAppSetting',
return: output.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
createIfNotExists: true,
connectionStringSetting: 'MyAccount_COSMOSDB',
}),
handler: storageQueueTrigger1,
});
لإخراج مستندات متعددة، قم بإعادة صفيف بدلا من كائن واحد. على سبيل المثال:
return [
{
id: 'John Henry-123456',
name: 'John Henry',
employeeId: '123456',
address: 'A town nearby',
},
{
id: 'John Doe-123457',
name: 'John Doe',
employeeId: '123457',
address: 'A town far away',
},
];
يوضح المثال التالي وظيفة JavaScript التي تم تشغيلها في قائمة انتظار التخزين لقائمة انتظار تتلقى JSON بالتنسيق التالي:
{
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
تقوم الدالة بإنشاء مستندات Azure Cosmos DB بالتنسيق التالي لكل سجل:
{
"id": "John Henry-123456",
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
ها هي كود JavaScript:
const { app, output } = require('@azure/functions');
const cosmosOutput = output.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
createIfNotExists: true,
connectionStringSetting: 'MyAccount_COSMOSDB',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'inputqueue',
connection: 'MyStorageConnectionAppSetting',
return: cosmosOutput,
handler: (queueItem, context) => {
return {
id: `${queueItem.name}-${queueItem.employeeId}`,
name: queueItem.name,
employeeId: queueItem.employeeId,
address: queueItem.address,
};
},
});
لإخراج مستندات متعددة، قم بإعادة صفيف بدلا من كائن واحد. على سبيل المثال:
return [
{
id: 'John Henry-123456',
name: 'John Henry',
employeeId: '123456',
address: 'A town nearby',
},
{
id: 'John Doe-123457',
name: 'John Doe',
employeeId: '123457',
address: 'A town far away',
},
];
يوضح المثال التالي كيفية كتابة البيانات إلى Azure Cosmos DB باستخدام ربط إخراج. يتم الإعلان عن الربط في ملف تكوين الدالة (functions.json)، ويأخذ البيانات من رسالة قائمة انتظار ويكتب إلى مستند Azure Cosmos DB.
{
"name": "EmployeeDocument",
"type": "cosmosDB",
"databaseName": "MyDatabase",
"collectionName": "MyCollection",
"createIfNotExists": true,
"connectionStringSetting": "MyStorageConnectionAppSetting",
"direction": "out"
}
في ملف run.ps1، العنصر الذي تم إرجاعه من الدالة يتم تعيينه إلى EmployeeDocument
كائن، وهو ثابت في قاعدة البيانات.
param($QueueItem, $TriggerMetadata)
Push-OutputBinding -Name EmployeeDocument -Value @{
id = $QueueItem.name + '-' + $QueueItem.employeeId
name = $QueueItem.name
employeeId = $QueueItem.employeeId
address = $QueueItem.address
}
يوضح المثال التالي كيفية كتابة مستند إلى قاعدة بيانات Cosmos DB Azure كإخراج دالة. يعتمد المثال على ما إذا كنت تستخدم نموذج برمجة v1 أو v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.route()
@app.cosmos_db_output(arg_name="documents",
database_name="DB_NAME",
collection_name="COLLECTION_NAME",
create_if_not_exists=True,
connection_string_setting="CONNECTION_SETTING")
def main(req: func.HttpRequest, documents: func.Out[func.Document]) -> func.HttpResponse:
request_body = req.get_body()
documents.set(func.Document.from_json(request_body))
return 'OK'
السمات
تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمات لتعريف الدالة. يستخدم البرنامج النصي C# بدلا من ذلك ملف تكوين function.json كما هو موضح في دليل البرمجة النصية C#.
خاصية السمة | الوصف |
---|---|
Connection | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بحساب Azure Cosmos DB الذي تتم مراقبته. لمزيد من المعلومات، راجع الاتصالات. |
DatabaseName | اسم قاعدة بيانات Azure Cosmos DB مع الحاوية التي يتم مراقبتها. |
ContainerName | اسم الحاوية التي يتم مراقبتها. |
CreateIfNotExists | قيمة منطقية للإشارة إلى ما إذا كانت الحاوية قد تم إنشاؤها عند عدم وجودها أم لا. القيمة الافتراضية هي false لأنه يتم إنشاء حاويات جديدة باستخدام معدل النقل المحجوز، والذي له آثار تكلفة. لمزيد من المعلومات، راجع صفحة التسعير. |
مفتاح القسم | عندما تكون CreateIfNotExists صحيحة، يحدد مسار مفتاح القسم للحاوية التي تم إنشاؤها. قد تتضمن معلمات الربط. |
ContainerThroughput | عندما تكون CreateIfNotExists صحيحة، فهي تحدد معدل نقل الحاوية التي تم إنشاؤها. |
PreferredLocations | (اختياري) يعرف المواقع المفضلة (المناطق) لحسابات قاعدة البيانات المنسوخة جغرافياً في خدمة Azure Cosmos DB. يجب فصل القيم بفاصلة. على سبيل المثال، East US,South Central US,North Europe |
الديكور
ينطبق فقط على نموذج برمجة Python v2.
بالنسبة لوظائف Python v2 المعرفة باستخدام مصمم الديكور، الخصائص التالية على cosmos_db_output
:
الخاصية | الوصف |
---|---|
arg_name |
اسم المتغير المستخدم في رمز الدالة الذي يمثل قائمة المستندات ذات التغييرات. |
database_name |
اسم قاعدة بيانات Azure Cosmos DB مع المجموعة التي يتم مراقبتها. |
collection_name |
اسم مجموعة Azure Cosmos DB التي تتم مراقبتها. |
create_if_not_exists |
قيمة منطقية تشير إلى ما إذا كان يجب إنشاء قاعدة البيانات والمجموعة إذا لم تكن موجودة. |
connection_string_setting |
تتم مراقبة سلسلة الاتصال Azure Cosmos DB. |
للحصول على وظائف Python المعرفة باستخدام function.json، راجع قسم التكوين.
تعليقات توضيحية
في مكتبة وقت تشغيل دوال Java، استخدم التعليق التوضيحي @CosmosDBOutput
على المعلمات التي سيجري كتابتها إلى Azure Cosmos DB. يدعم التعليق التوضيحي الخصائص التالية:
التكوين
ينطبق فقط على نموذج برمجة Python v1.
يشرح الجدول التالي خصائص تكوين الرابط التي قمت بتعيينها في الملف function.json، حيث تختلف الخصائص حسب إصدار الملحق:
خاصية function.json | الوصف |
---|---|
الاتصال | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بحساب Azure Cosmos DB الذي تتم مراقبته. لمزيد من المعلومات، راجع الاتصالات. |
databaseName | اسم قاعدة بيانات Azure Cosmos DB مع الحاوية التي يتم مراقبتها. |
containerName | اسم الحاوية التي يتم مراقبتها. |
createIfNotExists | قيمة منطقية للإشارة إلى ما إذا كانت الحاوية قد تم إنشاؤها عند عدم وجودها أم لا. القيمة الافتراضية هي false لأنه يتم إنشاء حاويات جديدة باستخدام معدل النقل المحجوز، والذي له آثار تكلفة. لمزيد من المعلومات، راجع صفحة التسعير. |
partitionKey | عندما تكون createIfNotExists صحيحة، يحدد مسار مفتاح القسم للحاوية التي تم إنشاؤها. قد تتضمن معلمات الربط. |
ContainerThroughput | عندما تكون createIfNotExists صحيحة، فهي تحدد معدل نقل الحاوية التي تم إنشاؤها. |
preferredLocations | (اختياري) يعرف المواقع المفضلة (المناطق) لحسابات قاعدة البيانات المنسوخة جغرافياً في خدمة Azure Cosmos DB. يجب فصل القيم بفاصلة. على سبيل المثال، East US,South Central US,North Europe |
راجع قسم Example للحصول على أمثلة كاملة.
الاستخدام
بشكل افتراضي، عند الكتابة إلى معلمة الإخراج في الدالة الخاصة بك، يتم إنشاء مستند في قاعدة البيانات الخاصة بك. يجب تحديد معرف المستند لمستند الإخراج عن طريق تحديد الخاصية id
في كائن JSON الذي تم تمريره إلى معلمة الإخراج.
إشعار
عند تحديد معرف مستند موجود، فإنه يُحذف بواسطة مستند الإخراج الجديد.
يعتمد نوع المعلمة التي يدعمها ربط إخراج Cosmos DB على إصدار وقت تشغيل الوظائف وإصدار حزمة الملحق ونمط C# المستخدم.
عندما تريد أن تكتب الدالة إلى مستند واحد، يمكن ربط إخراج Cosmos DB بالأنواع التالية:
النوع | الوصف |
---|---|
أنواع قابلة للتسلسل إلى JSON | كائن يمثل محتوى JSON لمستند. تحاول الدالات تسلسل نوع كائن CLR (POCO) قديم عادي في بيانات JSON. |
عندما تريد أن تكتب الدالة إلى مستندات متعددة، يمكن ربط إخراج Cosmos DB بالأنواع التالية:
النوع | الوصف |
---|---|
T[] أين T هو نوع JSON القابل للتسلسل |
صفيف يحتوي على مستندات متعددة. يمثل كل إدخال مستندا واحدا. |
بالنسبة لسيناريوهات الإخراج الأخرى، قم بإنشاء CosmosClient واستخدامه مع أنواع أخرى من Microsoft.Azure.Cosmos مباشرة. راجع تسجيل عملاء Azure للحصول على مثال لاستخدام إدخال التبعية لإنشاء نوع عميل من Azure SDK.
الاتصالات
الخصائص connectionStringSetting
/connection
وleaseConnectionStringSetting
/leaseConnection
هي مراجع لتكوين البيئة الذي يحدد كيفية اتصال التطبيق بـAzure Cosmos DB. يمكنهم تحديد:
- اسم أحد إعدادات التطبيق الذي يحتوي على سلسلة اتصال
- اسم بادئة مشتركة لإعدادات تطبيق متعددة، مع تعريف اتصال يستند إلى الهوية معًا. يتوفر هذا الخيار فقط للإصدارات
connection
وleaseConnection
من الإصدار 4.x أو أعلى من الملحق.
إذا كانت القيمة المكونة مطابقة بدقة لإعداد واحد ومطابقة لبادئة للإعدادات الأخرى، يتم استخدام المطابقة الدقيقة.
سلسلة الاتصال
يجب تخزين سلسلة الاتصال لحساب قاعدة البيانات في إعداد تطبيق باسم يطابق القيمة المحددة بواسطة خاصية الاتصال لتكوين الربط.
الاتصالات القائمة على الهوية
إذا كنت تستخدم الإصدار 4.x أو أعلى من الملحق، فبدلا من استخدام سلسلة الاتصال مع سر، يمكنك أن يكون التطبيق يستخدم هوية Microsoft Entra. للقيام بذلك، يمكنك تعريف الإعدادات ضمن بادئة شائعة تعين خاصية الاتصال في تكوين المشغل والربط.
في هذا الوضع، يتطلب الملحق الخصائص التالية:
الخاصية | قالب متغير البيئة | الوصف | مثال للقيمة |
---|---|---|---|
نقطة نهاية الحساب | <CONNECTION_NAME_PREFIX>__accountEndpoint |
نقطة نهاية حساب Azure Cosmos DB URI. | https://<database_account_name>.documents.azure.com:443/ |
قد يتم تعيين خصائص إضافية لتخصيص الاتصال. راجع الخصائص الشائعة للاتصالات المعتمدة على الهوية.
عند استضافتها في خدمة Azure Functions، تستخدم الاتصالات المستندة إلى الهوية هوية مدارة. تستخدم الهوية المعينة من قبل النظام بشكل افتراضي على الرغم من إمكانية تحديد هوية معينة من قبل المستخدم مع خصائص credential
و clientID
. لاحظ أن تكوين هوية معينة من المستخدم باستخدام معرف مورد غير معتمد. عند التشغيل في سياقات أخرى، مثل التنمية المحلية، يتم استخدام هوية المطور الخاصة بك بدلًا من ذلك، على الرغم من أنه يمكن تخصيصها. راجع التطوير المحلي من خلال الاتصالات القائمة على الهوية.
منح الإذن للهوية
مهما كانت الهوية المستخدمة يجب أن يكون لديك أذونات لتنفيذ الإجراءات المقصودة. بالنسبة لمعظم خدمات Azure، يعني هذا أنك بحاجة إلى تعيين دور في Azure RBAC، باستخدام أدوار مضمنة أو مخصصة توفر هذه الأذونات.
هام
قد تعرض بعض الأذونات بواسطة الخدمة الهدف غير الضرورية لكافة السياقات. حيثما أمكن، الالتزام بمبدأ أقل امتيازومنح الهوية الامتيازات المطلوبة فقط. على سبيل المثال، إذا كان التطبيق يحتاج إلى أن يكون قادرًا على القراءة من مصدر بيانات فحسب، فاستخدم دورًا لديه إذن للقراءة فحسب. سيكون من غير المناسب إسناد دور يسمح أيضا بالكتابة إلى تلك الدائرة، لأن ذلك سيكون إذنًا مفرطًا لعملية قراءة. وبالمثل، قد ترغب في ضمان تحديد نطاق تعيين الدور فقط على الموارد التي تحتاج إلى قراءة.
لا يستخدم Cosmos DB Azure RBAC لعمليات البيانات. بدلا من ذلك، فإنه يستخدم نظام التحكم في الوصول استنادا إلى الدور المدمج في Cosmos DB الذي تم إنشاؤه على مفاهيم مماثلة. ستحتاج إلى إنشاء تعيين دور يوفر الوصول إلى حساب قاعدة البيانات في وقت التشغيل. أدوار إدارة التحكم في الوصول استنادا إلى الدور في Azure مثل المالك غير كافية. يعرض الجدول التالي الأدوار المضمنة الموصى بها عند استخدام ملحق Azure Cosmos DB في التشغيل العادي. قد يتطلب طلبك أذونات إضافية بناءً على الرمز الذي تكتبه.
نوع الربط | مثال على الأدوارالمضمنة 1 |
---|---|
المشغل2 | مساهم البيانات المضمن في Cosmos DB |
ربط بيانات الإدخال | قارئ البيانات المضمن في Cosmos DB |
ربط بيانات الإخراج | مساهم البيانات المضمن في Cosmos DB |
1 لا يمكن استخدام هذه الأدوار في تعيين دور Azure RBAC. راجع وثائق نظام التحكم في الوصول استنادا إلى الدور المضمن في Cosmos DB للحصول على تفاصيل حول كيفية تعيين هذه الأدوار.
2 عند استخدام الهوية، يتعامل Cosmos DB مع إنشاء الحاوية على أنها عملية إدارة. لا يتوفر كلعملية مستوى بيانات للمشغل. ستحتاج إلى التأكد من إنشاء الحاويات التي يحتاجها المشغل (بما في ذلك حاوية التأجير) قبل إعداد وظيفتك.
الاستثناءات والتعليمات البرمجية للإرجاع
Binding | المرجع |
---|---|
Azure Cosmos DB | رموز حالة HTTP لـ Azure Cosmos DB |