ربط إخراج 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>
    }

قائمة انتظار المشغل، حفظ الرسالة إلى قاعدة البيانات عبر القيمة المرجعة

يظهر المثال التالي دالة 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.

يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options تم تمريره output.cosmosDB() إلى الأسلوب . typedirectionلا تنطبق الخصائص و و name على نموذج v4.

يشرح الجدول التالي خصائص تكوين الرابط التي قمت بتعيينها في الملف 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. يمكنهم تحديد:

إذا كانت القيمة المكونة مطابقة بدقة لإعداد واحد ومطابقة لبادئة للإعدادات الأخرى، يتم استخدام المطابقة الدقيقة.

سلسلة الاتصال

يجب تخزين سلسلة الاتصال لحساب قاعدة البيانات في إعداد تطبيق باسم يطابق القيمة المحددة بواسطة خاصية الاتصال لتكوين الربط.

الاتصالات القائمة على الهوية

إذا كنت تستخدم الإصدار 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

الخطوات التالية