Azure Functions 2.x の Azure Cosmos DB バインドAzure Cosmos DB bindings for Azure Functions 2.x

この記事では、Azure Functions 2.x で Azure Cosmos DB のバインドを操作する方法について説明します。This article explains how to work with Azure Cosmos DB bindings in Azure Functions 2.x. Azure Functions は、Azure Cosmos DB のトリガー、入力、出力のバインドをサポートしています。Azure Functions supports trigger, input, and output bindings for Azure Cosmos DB.

注意

この記事は、Azure Functions version 2.x を対象としています。This article is for Azure Functions version 2.x. Functions 1.x でこれらのバインドを使用する方法については、Azure Functions 1.x の Azure Cosmos DB のバインドに関するページを参照してください。For information about how to use these bindings in Functions 1.x, see Azure Cosmos DB bindings for Azure Functions 1.x.

このバインドの元の名称は DocumentDB でした。This binding was originally named DocumentDB. Functions バージョン 2.x では、トリガー、バインド、およびパッケージの名称はすべて、Cosmos DB になっています。In Functions version 2.x, the trigger, bindings, and package are all named Cosmos DB.

これは、Azure Functions の開発者向けリファレンス情報です。This is reference information for Azure Functions developers. Azure Functions を初めて使用する場合は、先に次のリソースを参照してください。If you're new to Azure Functions, start with the following resources:

サポート対象 APISupported APIs

Azure Cosmos DB のバインドは、SQL API で使用する場合にのみサポートされます。Azure Cosmos DB bindings are only supported for use with the SQL API. 他のすべての Azure Cosmos DB API については、Azure Cosmos DB の MongoDB 用 APICassandra APIGremlin APITable API など、API 用の静的クライアントを使用して関数からデータベースにアクセスする必要があります。For all other Azure Cosmos DB APIs, you should access the database from your function by using the static client for your API, including Azure Cosmos DB's API for MongoDB, Cassandra API, Gremlin API, and Table API.

パッケージ - Functions 2.xPackages - Functions 2.x

Functions バージョン 2.x の Azure Cosmos DB バインドは、Microsoft.Azure.WebJobs.Extensions.CosmosDB NuGet パッケージのバージョン 3.x で提供されています。The Azure Cosmos DB bindings for Functions version 2.x are provided in the Microsoft.Azure.WebJobs.Extensions.CosmosDB NuGet package, version 3.x. バインドのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。Source code for the bindings is in the azure-webjobs-sdk-extensions GitHub repository.

次の表に、各開発環境でこのバインディングのサポートを追加する方法を示します。The following table tells how to add support for this binding in each development environment.

開発環境Development environment サポートを追加するにはTo add support
ローカル開発 - C# クラス ライブラリLocal development - C# class library パッケージをインストールするInstall the package
ローカル開発で - C# スクリプト、JavaScript、F#、Java、PythonLocal development - C# script, JavaScript, F#, Java and Python 拡張機能を登録するRegister the extension
Portal 開発Portal development 出力バインドの追加時にインストールするInstall when adding output binding

関数アプリ プロジェクトを再発行せずにポータルで既存のバインディング拡張機能を更新する方法については、拡張機能の更新に関するページを参照してください。To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

トリガーTrigger

Azure Cosmos DB のトリガーは Azure Cosmos DB 変更フィードを使用して、パーティション間の挿入と更新をリッスンします。The Azure Cosmos DB Trigger uses the Azure Cosmos DB Change Feed to listen for inserts and updates across partitions. 変更フィードは、削除ではなく挿入と更新を発行します。The change feed publishes inserts and updates, not deletions.

トリガー - 例Trigger - example

言語固有の例をご覧ください。See the language-specific example:

トリガーの例をスキップするSkip trigger examples

トリガー - C# の例Trigger - C# example

次の例では、指定されたデータベースとコレクション内に挿入または更新がある場合に呼び出される C# 関数を示します。The following example shows a C# function that is invoked when there are inserts or updates in the specified database and collection.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            ILogger log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.LogInformation($"Documents modified: {documents.Count}");
                log.LogInformation($"First document Id: {documents[0].Id}");
            }
        }
    }
}

トリガーの例をスキップするSkip trigger examples

トリガー - C# スクリプトの例Trigger - C# script example

次の例は、function.json ファイルの Cosmos DB トリガー バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows a Cosmos DB trigger binding in a function.json file and a C# script function that uses the binding. この関数は、Cosmos DB レコードが変更されるとログ メッセージを書き込みます。The function writes log messages when Cosmos DB records are modified.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

C# スクリプト コードを次に示します。Here's the C# script code:

    #r "Microsoft.Azure.DocumentDB.Core"

    using System;
    using Microsoft.Azure.Documents;
    using System.Collections.Generic;
    using Microsoft.Extensions.Logging;

    public static void Run(IReadOnlyList<Document> documents, ILogger log)
    {
      log.LogInformation("Documents modified " + documents.Count);
      log.LogInformation("First document Id " + documents[0].Id);
    }

トリガーの例をスキップするSkip trigger examples

トリガー - JavaScript の例Trigger - JavaScript example

次の例は、function.json ファイルの Cosmos DB トリガー バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows a Cosmos DB trigger binding in a function.json file and a JavaScript function that uses the binding. この関数は、Cosmos DB レコードが変更されるとログ メッセージを書き込みます。The function writes log messages when Cosmos DB records are modified.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

JavaScript コードを次に示します。Here's the JavaScript code:

    module.exports = function (context, documents) {
      context.log('First document Id modified : ', documents[0].id);

      context.done();
    }

トリガー - Java の例Trigger - Java example

次の例は、function.json ファイルの Cosmos DB トリガー バインドと、そのバインドが使用される Java 関数を示しています。The following example shows a Cosmos DB trigger binding in function.json file and a Java function that uses the binding. 指定されたデータベースとコレクション内に挿入または更新がある場合に、関数が関与します。The function is involved when there are inserts or updates in the specified database and collection.

{
    "type": "cosmosDBTrigger",
    "name": "items",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "AzureCosmosDBConnection",
    "databaseName": "ToDoList",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": false
}

Java コードを次に示します。Here's the Java code:

    @FunctionName("cosmosDBMonitor")
    public void cosmosDbProcessor(
        @CosmosDBTrigger(name = "items",
            databaseName = "ToDoList",
            collectionName = "Items",
            leaseCollectionName = "leases",
            createLeaseCollectionIfNotExists = true,
            connectionStringSetting = "AzureCosmosDBConnection") String[] items,
            final ExecutionContext context ) {
                context.getLogger().info(items.length + "item(s) is/are changed.");
            }

Java 関数ランタイム ライブラリで、その値が Cosmos DB に由来するパラメーター上で @CosmosDBTrigger 注釈を使用します。In the Java functions runtime library, use the @CosmosDBTrigger annotation on parameters whose value would come from Cosmos DB. この注釈は、Java のネイティブ型、POJO、または Optional<T> を使用した null 許容値で使用できます。This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

トリガーの例をスキップするSkip trigger examples

トリガー - Python の例Trigger - Python example

次の例は、function.json ファイルの Cosmos DB トリガー バインドと、そのバインドが使用される Python 関数を示しています。The following example shows a Cosmos DB trigger binding in a function.json file and a Python function that uses the binding. この関数は、Cosmos DB レコードが変更されるとログ メッセージを書き込みます。The function writes log messages when Cosmos DB records are modified.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDBTrigger",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Python コードを次に示します。Here's the Python code:

    import logging
    import azure.functions as func


    def main(documents: func.DocumentList) -> str:
        if documents:
            logging.info('First document Id modified: %s', documents[0]['id'])

トリガー - C# 属性Trigger - C# attributes

C# クラス ライブラリでは、CosmosDBTrigger 属性を使用します。In C# class libraries, use the CosmosDBTrigger attribute.

この属性のコンストラクターにはデータベース名とコレクションを指定します。The attribute's constructor takes the database name and collection name. これらの設定や構成できる他のプロパティについて詳しくは、「トリガー - 構成」をご覧ください。For information about those settings and other properties that you can configure, see Trigger - configuration. メソッド シグネチャでの CosmosDBTrigger 属性の例を次に示します。Here's a CosmosDBTrigger attribute example in a method signature:

    [FunctionName("DocumentUpdates")]
    public static void Run(
        [CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
    IReadOnlyList<Document> documents,
        ILogger log)
    {
        ...
    }

完全な例については、「トリガー - C# の例」を参照してください。For a complete example, see Trigger - C# example.

トリガー - 構成Trigger - configuration

次の表は、function.json ファイルと CosmosDBTrigger 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the CosmosDBTrigger attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype cosmosDBTrigger に設定する必要があります。Must be set to cosmosDBTrigger.
directiondirection in に設定する必要があります。Must be set to in. このパラメーターは、Azure Portal でトリガーを作成するときに自動で設定されます。This parameter is set automatically when you create the trigger in the Azure portal.
namename 変更されるドキュメントの一覧を表す、関数コードで使用する変数の名前。The variable name used in function code that represents the list of documents with changes.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting 監視されている Azure Cosmos DB アカウントに接続するために使用される接続文字列を含めたアプリ設定の名前。The name of an app setting that contains the connection string used to connect to the Azure Cosmos DB account being monitored.
databaseNamedatabaseName DatabaseNameDatabaseName 監視されているコレクションを使用する Azure Cosmos DB データベースの名前。The name of the Azure Cosmos DB database with the collection being monitored.
collectionNamecollectionName CollectionNameCollectionName 監視されているコレクションの名前。The name of the collection being monitored.
leaseConnectionStringSettingleaseConnectionStringSetting LeaseConnectionStringSettingLeaseConnectionStringSetting (省略可能) リース コレクションを保持するサービスへの接続文字列を含むアプリ設定の名前。(Optional) The name of an app setting that contains the connection string to the service which holds the lease collection. この値を設定しない場合、connectionStringSetting という値が使用されます。When not set, the connectionStringSetting value is used. このパラメーターは、ポータルでバインドが作成されるときに自動で設定されます。This parameter is automatically set when the binding is created in the portal. リース コレクションの接続文字列には書き込み権限が必要です。The connection string for the leases collection must have write permissions.
leaseDatabaseNameleaseDatabaseName LeaseDatabaseNameLeaseDatabaseName (省略可能) リースの保存のために使用するコレクションを保持しているデータベースの名前。(Optional) The name of the database that holds the collection used to store leases. この値を設定しない場合、databaseName の設定の値が使用されます。When not set, the value of the databaseName setting is used. このパラメーターは、ポータルでバインドが作成されるときに自動で設定されます。This parameter is automatically set when the binding is created in the portal.
leaseCollectionNameleaseCollectionName LeaseCollectionNameLeaseCollectionName (省略可能) リースの保存のために使用するコレクションの名前。(Optional) The name of the collection used to store leases. この値を設定しない場合、leases という値が使用されます。When not set, the value leases is used.
createLeaseCollectionIfNotExistscreateLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExistsCreateLeaseCollectionIfNotExists (省略可能) true を設定すると、リース コレクションが存在していない場合に自動でリース コレクションを作成します。(Optional) When set to true, the leases collection is automatically created when it doesn't already exist. 既定値は false です。The default value is false.
leasesCollectionThroughputleasesCollectionThroughput leasesCollectionThroughputLeasesCollectionThroughput (省略可能) リース コレクションの作成に割り当てる要求ユニットの量を定義します。(Optional) Defines the amount of Request Units to assign when the leases collection is created. この設定は、createLeaseCollectionIfNotExiststrue に設定されている場合のみ使用できます。This setting is only used When createLeaseCollectionIfNotExists is set to true. このパラメーターは、ポータルでバインドが作成されるときに自動で設定されます。This parameter is automatically set when the binding is created using the portal.
leaseCollectionPrefixleaseCollectionPrefix LeaseCollectionPrefixLeaseCollectionPrefix (省略可能) 設定すると、この関数のリース コレクション内に作成されたリースにプレフィックスが追加され、2 つの独立した Azure Functions が、異なるプレフィックスを使用することで同じリース コレクションを効率的に共有できます。(Optional) When set, it adds a prefix to the leases created in the Lease collection for this Function, effectively allowing two separate Azure Functions to share the same Lease collection by using different prefixes.
feedPollDelayfeedPollDelay FeedPollDelayFeedPollDelay (省略可能) 設定すると、現在の変更がすべて排除された後、パーティションでフィードの新しい変更をポーリングするまでの遅延時間がミリ秒単位で定義されます。(Optional) When set, it defines, in milliseconds, the delay in between polling a partition for new changes on the feed, after all current changes are drained. 既定値は 5,000 (5 秒) です。Default is 5000 (5 seconds).
leaseAcquireIntervalleaseAcquireInterval LeaseAcquireIntervalLeaseAcquireInterval (省略可能) 設定すると、パーティションが既知のホスト インスタンス間で均等に分散されているかどうかを計算するタスクを開始する間隔がミリ秒単位で定義されます。(Optional) When set, it defines, in milliseconds, the interval to kick off a task to compute if partitions are distributed evenly among known host instances. 既定値は 13,000 (13 秒) です。Default is 13000 (13 seconds).
leaseExpirationIntervalleaseExpirationInterval LeaseExpirationIntervalLeaseExpirationInterval (省略可能) 設定すると、パーティションを表すリースでリースを取得する間隔がミリ秒単位で定義されます。(Optional) When set, it defines, in milliseconds, the interval for which the lease is taken on a lease representing a partition. この間隔内にリースが更新されない場合、リースは期限切れとなり、パーティションの所有権は別のインスタンスに移動します。If the lease is not renewed within this interval, it will cause it to expire and ownership of the partition will move to another instance. 既定値は 60,000 (60 秒) です。Default is 60000 (60 seconds).
leaseRenewIntervalleaseRenewInterval LeaseRenewIntervalLeaseRenewInterval (省略可能) 設定すると、インスタンスが現在保持しているパーティションのすべてのリースの更新間隔がミリ秒単位で定義されます。(Optional) When set, it defines, in milliseconds, the renew interval for all leases for partitions currently held by an instance. 既定値は 17,000 (17 秒) です。Default is 17000 (17 seconds).
checkpointFrequencycheckpointFrequency CheckpointFrequencyCheckpointFrequency (省略可能) 設定すると、リース チェックポイントの間隔がミリ秒単位で定義されます。(Optional) When set, it defines, in milliseconds, the interval between lease checkpoints. 既定値は、常に各関数呼び出しの後です。Default is always after each Function call.
maxItemsPerInvocationmaxItemsPerInvocation MaxItemsPerInvocationMaxItemsPerInvocation (省略可能) 設定すると、関数呼び出しごとに、受信するアイテムの最大量がこのプロパティによって設定されます。(Optional) When set, this property sets the maximum amount of items received per Function call. 監視対象のコレクションでストアド プロシージャによって操作が実行されると、変更フィードから項目が読み取られるとき、トランザクション スコープが保持されます。If operations in the monitored collection are performed through stored procedures, transaction scope is preserved when reading items from the Change Feed. その結果、受信した項目の量は、指定された値を上回る可能性があります。このため、同じトランザクションによって変更された項目は 1 つのアトミック バッチの一部として返されます。As a result of this, it's possible for the amount of items received to be higher than the specified value so that the items changed by the same transaction are returned as part of one atomic batch.
startFromBeginningstartFromBeginning StartFromBeginningStartFromBeginning (省略可能) 設定すると、現在の時刻ではなく、コレクションの履歴の最初から変更の読み取りを開始するように、トリガーが指示されます。(Optional) When set, it tells the Trigger to start reading changes from the beginning of the history of the collection instead of the current time. これは、初めてトリガーが起動される場合にのみ機能します。その後の実行では、チェックポイントが既に格納されているためです。This only works the first time the Trigger starts, as in subsequent runs, the checkpoints are already stored. 既にリースが作成されているときにこれを true に設定しても効果はありません。Setting this to true when there are leases already created has no effect.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

トリガー - 使用方法Trigger - usage

トリガーは、パーティションに リース を保存するために使用する 2 つ目のコレクションを必要とします。The trigger requires a second collection that it uses to store leases over the partitions. トリガーが機能するためには、監視されるコレクションと、リースを含むコレクションの両方が使用できる必要があります。Both the collection being monitored and the collection that contains the leases must be available for the trigger to work.

重要

複数の関数が同じコレクションの Cosmos DB トリガーを使用するように構成している場合、各関数では専用のリース コレクションを使用するか、または各関数に対して異なる LeaseCollectionPrefixを指定する必要があります。If multiple functions are configured to use a Cosmos DB trigger for the same collection, each of the functions should use a dedicated lease collection or specify a different LeaseCollectionPrefix for each function. 専用のリース コレクションを使用していない場合は、関数のうちの 1 つしかトリガーされません。Otherwise, only one of the functions will be triggered. プレフィックスの詳細については、「構成」セクションを参照してください。For information about the prefix, see the Configuration section.

トリガーは、ドキュメントが更新または挿入されたかどうかを示すわけではなく、単にドキュメント自体を提供します。The trigger doesn't indicate whether a document was updated or inserted, it just provides the document itself. 更新と挿入を別の方法で処理する必要がある場合は、挿入または更新のタイムスタンプを実装することでこれを実現できます。If you need to handle updates and inserts differently, you could do that by implementing timestamp fields for insertion or update.

入力Input

Azure Cosmos DB 入力バインドでは、SQL API を使用して 1 つ以上の Azure Cosmos DB ドキュメントを取得して関数の入力パラメーターに渡します。The Azure Cosmos DB input binding uses the SQL API to retrieve one or more Azure Cosmos DB documents and passes them to the input parameter of the function. ドキュメント ID またはクエリ パラメーターは、関数を呼び出したトリガーに基づいて決定することができます。The document ID or query parameters can be determined based on the trigger that invokes the function.

注意

コレクションがパーティション分割されている場合、参照操作でも、パーティション キーの値を指定する必要があります。If the collection is partitioned, lookup operations need to also specify the partition key value.

入力 - 例Input - examples

次のリンクから、ID 値を指定することで単一のドキュメントを読み取る言語固有の例を参照してください。See the language-specific examples that read a single document by specifying an ID value:

入力の例をスキップするSkip input examples

入力 - C# の例Input - C# examples

このセクションには、次の例が含まれています。This section contains the following examples:

例では、次のようなシンプルな ToDoItem タイプを参照します。The examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string PartitionKey { get; set; }
        public string Description { get; set; }
    }
}

入力の例をスキップするSkip input examples

キュー トリガー、JSON からの ID の検索 (C#)Queue trigger, look up ID from JSON (C#)

次の例は、単一のドキュメントを取得する C# 関数を示しています。The following example shows a C# function that retrieves a single document. 関数は、JSON オブジェクトを含むキュー メッセージによってトリガーされます。The function is triggered by a queue message that contains a JSON object. キュー トリガーにより、検索する ID とパーティション キー値を含む、ToDoItemLookup という名前のオブジェクトに JSON が解析されます。The queue trigger parses the JSON into an object named ToDoItemLookup, which contains the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

namespace CosmosDBSamplesV2
{
    public class ToDoItemLookup
    {
        public string ToDoItemId { get; set; }

        public string ToDoItemPartitionKeyValue { get; set; }
    }
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromJSON
    {
        [FunctionName("DocByIdFromJSON")]
        public static void Run(
            [QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{ToDoItemId}",
                PartitionKey = "{ToDoItemPartitionKeyValue}")]ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId} Key={toDoItemLookup?.ToDoItemPartitionKeyValue}");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
        }
    }
}

入力の例をスキップするSkip input examples

HTTP トリガー、クエリ文字列からの ID の検索 (C#)HTTP trigger, look up ID from query string (C#)

次の例は、単一のドキュメントを取得する C# 関数を示しています。The following example shows a C# function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

注意

HTTP クエリ文字列パラメーターは大文字と小文字が区別されます。The HTTP query string parameter is case-sensitive.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromQueryString
    {
        [FunctionName("DocByIdFromQueryString")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{Query.id}",
                PartitionKey = "{Query.partitionKey}")] ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
            return new OkResult();
        }
    }
}

入力の例をスキップするSkip input examples

HTTP トリガー、ルート データからの ID の検索 (C#)HTTP trigger, look up ID from route data (C#)

次の例は、単一のドキュメントを取得する C# 関数を示しています。The following example shows a C# function that retrieves a single document. 関数は、ルート データを使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses route data to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromRouteData
    {
        [FunctionName("DocByIdFromRouteData")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems/{partitionKey}/{id}")]HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{id}",
                PartitionKey = "{partitionKey}")] ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
            return new OkResult();
        }
    }
}

入力の例をスキップするSkip input examples

HTTP トリガー、SqlQuery を使用したルート データからの ID の検索 (C#)HTTP trigger, look up ID from route data, using SqlQuery (C#)

次の例は、単一のドキュメントを取得する C# 関数を示しています。The following example shows a C# function that retrieves a single document. 関数は、ルート データを使用して検索のための ID を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses route data to specify the ID to look up. 該当の ID は、指定されたデータベースとコレクションからの ToDoItem ドキュメントの取得に使用されます。That ID is used to retrieve a ToDoItem document from the specified database and collection.

例では、SqlQuery パラメーターでバインド式を使用する方法を示しています。The example shows how to use a binding expression in the SqlQuery parameter. ここに示したようにルート データを SqlQuery パラメーターに渡すことはできますが、現在、クエリ文字列の値を渡すことはできませんYou can pass route data to the SqlQuery parameter as shown, but currently you can't pass query string values.

注意

ID だけでクエリを実行する必要がある場合、前の例のように、参照を使用することをお勧めします。要求ユニットの消費が少なくなります。If you need to query by just the ID, it is recommended to use a look up, like the previous examples, as it will consume less request units. ポイント読み取り操作 (GET) は ID によるクエリより効率性に優れていますPoint read operations (GET) are more efficient than queries by ID.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromRouteDataUsingSqlQuery
    {
        [FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems2/{id}")]HttpRequest req,
            [CosmosDB("ToDoItems", "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "select * from ToDoItems r where r.id = {id}")]
                IEnumerable<ToDoItem> toDoItems,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.LogInformation(toDoItem.Description);
            }
            return new OkResult();
        }
    }
}

入力の例をスキップするSkip input examples

HTTP トリガー、SqlQuery を使用した複数のドキュメントの取得 (C#)HTTP trigger, get multiple docs, using SqlQuery (C#)

次の例は、ドキュメントの一覧を取得する C# 関数を示しています。The following example shows a C# function that retrieves a list of documents. 関数は、HTTP 要求によってトリガーされます。The function is triggered by an HTTP request. クエリは、SqlQuery 属性プロパティで指定されます。The query is specified in the SqlQuery attribute property.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocsBySqlQuery
    {
        [FunctionName("DocsBySqlQuery")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
                IEnumerable<ToDoItem> toDoItems,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.LogInformation(toDoItem.Description);
            }
            return new OkResult();
        }
    }
}

入力の例をスキップするSkip input examples

HTTP トリガー、DocumentClient を使用した複数のドキュメントの取得 (C#)HTTP trigger, get multiple docs, using DocumentClient (C#)

次の例は、ドキュメントの一覧を取得する C# 関数を示しています。The following example shows a C# function that retrieves a list of documents. 関数は、HTTP 要求によってトリガーされます。The function is triggered by an HTTP request. コードでは、Azure Cosmos DB バインドによって提供される DocumentClient インスタンスを使用して、ドキュメントの一覧を読み取ります。The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. また、DocumentClient インスタンスは、書き込み操作に使用できます。The DocumentClient instance could also be used for write operations.

注意

IDocumentClient インターフェイスを使用してテストを容易にすることもできます。You can also use the IDocumentClient interface to make testing easier.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System;
using System.Linq;
using System.Threading.Tasks;

namespace CosmosDBSamplesV2
{
    public static class DocsByUsingDocumentClient
    {
        [FunctionName("DocsByUsingDocumentClient")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = null)]HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            var searchterm = req.Query["searchterm"];
            if (string.IsNullOrWhiteSpace(searchterm))
            {
                return (ActionResult)new NotFoundResult();
            }

            Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");

            log.LogInformation($"Searching for: {searchterm}");

            IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
                .Where(p => p.Description.Contains(searchterm))
                .AsDocumentQuery();

            while (query.HasMoreResults)
            {
                foreach (ToDoItem result in await query.ExecuteNextAsync())
                {
                    log.LogInformation(result.Description);
                }
            }
            return new OkResult();
        }
    }
}

入力の例をスキップするSkip input examples

入力 - C# スクリプトの例Input - C# script examples

このセクションには、次の例が含まれています。This section contains the following examples:

HTTP トリガーの例では、次のようなシンプルな ToDoItem タイプを参照します。The HTTP trigger examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

入力の例をスキップするSkip input examples

キュー トリガー、文字列からの ID の検索 (C# スクリプト)Queue trigger, look up ID from string (C# script)

次の例は、function.json ファイルの Cosmos DB 入力バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows a Cosmos DB input binding in a function.json file and a C# script function that uses the binding. この関数は、1 つのドキュメントを読み取って、そのドキュメントのテキスト値を更新します。The function reads a single document and updates the document's text value.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "inputDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger}",
    "partitionKey": "{partition key value}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

C# スクリプト コードを次に示します。Here's the C# script code:

    using System;

    // Change input document contents using Azure Cosmos DB input binding
    public static void Run(string myQueueItem, dynamic inputDocument)
    {
      inputDocument.text = "This has changed.";
    }

入力の例をスキップするSkip input examples

キュー トリガー、SqlQuery を使用した複数のドキュメントの取得 (C# スクリプト)Queue trigger, get multiple docs, using SqlQuery (C# script)

次の例は、function.json ファイルの Azure Cosmos DB 入力バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows an Azure Cosmos DB input binding in a function.json file and a C# script function that uses the binding. この関数は、SQL クエリで指定されている複数のドキュメントを、キュー トリガーを使用してクエリ パラメーターをカスタマイズすることで取得します。The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

キュー トリガーがパラメーター departmentId を提供します。The queue trigger provides a parameter departmentId. { "departmentId" : "Finance" } のキュー メッセージは、金融部門のすべてのレコードを返します。A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

C# スクリプト コードを次に示します。Here's the C# script code:

    public static void Run(QueuePayload myQueueItem, IEnumerable<dynamic> documents)
    {
        foreach (var doc in documents)
        {
            // operate on each document
        }
    }

    public class QueuePayload
    {
        public string departmentId { get; set; }
    }

入力の例をスキップするSkip input examples

HTTP トリガー、クエリ文字列からの ID の検索 (C# スクリプト)HTTP trigger, look up ID from query string (C# script)

次の例は、単一のドキュメントを取得する C# スクリプト関数を示しています。The following example shows a C# script function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}",
      "PartitionKey" : "{Query.partitionKeyValue}"
    }
  ],
  "disabled": false
}

C# スクリプト コードを次に示します。Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, ToDoItem toDoItem, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    if (toDoItem == null)
    {
         log.LogInformation($"ToDo item not found");
    }
    else
    {
        log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

入力の例をスキップするSkip input examples

HTTP トリガー、ルート データからの ID の検索 (C# スクリプト)HTTP trigger, look up ID from route data (C# script)

次の例は、単一のドキュメントを取得する C# スクリプト関数を示しています。The following example shows a C# script function that retrieves a single document. 関数は、ルート データを使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses route data to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{partitionKeyValue}/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}",
      "PartitionKey": "{partitionKeyValue}"
    }
  ],
  "disabled": false
}

C# スクリプト コードを次に示します。Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, ToDoItem toDoItem, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    if (toDoItem == null)
    {
         log.LogInformation($"ToDo item not found");
    }
    else
    {
        log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

入力の例をスキップするSkip input examples

HTTP トリガー、SqlQuery を使用した複数のドキュメントの取得 (C# スクリプト)HTTP trigger, get multiple docs, using SqlQuery (C# script)

次の例は、ドキュメントの一覧を取得する C# スクリプト関数を示しています。The following example shows a C# script function that retrieves a list of documents. 関数は、HTTP 要求によってトリガーされます。The function is triggered by an HTTP request. クエリは、SqlQuery 属性プロパティで指定されます。The query is specified in the SqlQuery attribute property.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "sqlQuery": "SELECT top 2 * FROM c order by c._ts desc"
    }
  ],
  "disabled": false
}

C# スクリプト コードを次に示します。Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, IEnumerable<ToDoItem> toDoItems, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    foreach (ToDoItem toDoItem in toDoItems)
    {
        log.LogInformation(toDoItem.Description);
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

入力の例をスキップするSkip input examples

HTTP トリガー、DocumentClient を使用した複数のドキュメントの取得 (C# スクリプト)HTTP trigger, get multiple docs, using DocumentClient (C# script)

次の例は、ドキュメントの一覧を取得する C# スクリプト関数を示しています。The following example shows a C# script function that retrieves a list of documents. 関数は、HTTP 要求によってトリガーされます。The function is triggered by an HTTP request. コードでは、Azure Cosmos DB バインドによって提供される DocumentClient インスタンスを使用して、ドキュメントの一覧を読み取ります。The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. また、DocumentClient インスタンスは、書き込み操作に使用できます。The DocumentClient instance could also be used for write operations.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "client",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "inout"
    }
  ],
  "disabled": false
}

C# スクリプト コードを次に示します。Here's the C# script code:

#r "Microsoft.Azure.Documents.Client"

using System.Net;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Extensions.Logging;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, DocumentClient client, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
    string searchterm = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
        .Value;

    if (searchterm == null)
    {
        return req.CreateResponse(HttpStatusCode.NotFound);
    }

    log.LogInformation($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
    IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
        .Where(p => p.Description.Contains(searchterm))
        .AsDocumentQuery();

    while (query.HasMoreResults)
    {
        foreach (ToDoItem result in await query.ExecuteNextAsync())
        {
            log.LogInformation(result.Description);
        }
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

入力の例をスキップするSkip input examples

入力 - JavaScript の例Input - JavaScript examples

このセクションには、次の例が含まれています。各例では、さまざまなソースから ID 値を指定して単一のドキュメントを読み取ります。This section contains the following examples that read a single document by specifying an ID value from various sources:

入力の例をスキップするSkip input examples

キュー トリガー、JSON からの ID の検索 (JavaScript)Queue trigger, look up ID from JSON (JavaScript)

次の例は、function.json ファイルの Cosmos DB 入力バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows a Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. この関数は、1 つのドキュメントを読み取って、そのドキュメントのテキスト値を更新します。The function reads a single document and updates the document's text value.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "inputDocumentIn",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger_payload_property}",
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
},
{
    "name": "inputDocumentOut",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": false,
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

JavaScript コードを次に示します。Here's the JavaScript code:

    // Change input document contents using Azure Cosmos DB input binding, using context.bindings.inputDocumentOut
    module.exports = function (context) {
    context.bindings.inputDocumentOut = context.bindings.inputDocumentIn;
    context.bindings.inputDocumentOut.text = "This was updated!";
    context.done();
    };

入力の例をスキップするSkip input examples

HTTP トリガー、クエリ文字列からの ID の検索 (JavaScript)HTTP trigger, look up ID from query string (JavaScript)

次の例は、単一のドキュメントを取得する JavaScript 関数を示しています。The following example shows a JavaScript function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}",
      "PartitionKey": "{Query.partitionKeyValue}"
    }
  ],
  "disabled": false
}

JavaScript コードを次に示します。Here's the JavaScript code:

module.exports = function (context, req, toDoItem) {
    context.log('JavaScript queue trigger function processed work item');
    if (!toDoItem)
    {
        context.log("ToDo item not found");
    }
    else
    {
        context.log("Found ToDo item, Description=" + toDoItem.Description);
    }

    context.done();
};

入力の例をスキップするSkip input examples

HTTP トリガー、ルート データからの ID の検索 (JavaScript)HTTP trigger, look up ID from route data (JavaScript)

次の例は、単一のドキュメントを取得する JavaScript 関数を示しています。The following example shows a JavaScript function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{partitionKeyValue}/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connection": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}",
      "PartitionKey": "{partitionKeyValue}"
    }
  ],
  "disabled": false
}

JavaScript コードを次に示します。Here's the JavaScript code:

module.exports = function (context, req, toDoItem) {
    context.log('JavaScript queue trigger function processed work item');
    if (!toDoItem)
    {
        context.log("ToDo item not found");
    }
    else
    {
        context.log("Found ToDo item, Description=" + toDoItem.Description);
    }

    context.done();
};

入力の例をスキップするSkip input examples

キュー トリガー、SqlQuery を使用した複数のドキュメントの取得 (JavaScript)Queue trigger, get multiple docs, using SqlQuery (JavaScript)

次の例は、function.json ファイルの Azure Cosmos DB 入力バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows an Azure Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. この関数は、SQL クエリで指定されている複数のドキュメントを、キュー トリガーを使用してクエリ パラメーターをカスタマイズすることで取得します。The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

キュー トリガーがパラメーター departmentId を提供します。The queue trigger provides a parameter departmentId. { "departmentId" : "Finance" } のキュー メッセージは、金融部門のすべてのレコードを返します。A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

JavaScript コードを次に示します。Here's the JavaScript code:

    module.exports = function (context, input) {
        var documents = context.bindings.documents;
        for (var i = 0; i < documents.length; i++) {
            var document = documents[i];
            // operate on each document
        }
        context.done();
    };

入力の例をスキップするSkip input examples

入力 - Python の例Input - Python examples

このセクションには、次の例が含まれています。各例では、さまざまなソースから ID 値を指定して単一のドキュメントを読み取ります。This section contains the following examples that read a single document by specifying an ID value from various sources:

入力の例をスキップするSkip input examples

キュー トリガー、JSON からの ID の検索 (Python)Queue trigger, look up ID from JSON (Python)

次の例は、function.json ファイルの Cosmos DB 入力バインドと、そのバインドが使用される Python 関数を示しています。The following example shows a Cosmos DB input binding in a function.json file and a Python function that uses the binding. この関数は、1 つのドキュメントを読み取って、そのドキュメントのテキスト値を更新します。The function reads a single document and updates the document's text value.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger_payload_property}",
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
},
{
    "name": "$return",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": false,
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

Python コードを次に示します。Here's the Python code:

import azure.functions as func


def main(queuemsg: func.QueueMessage, documents: func.DocumentList) -> func.Document:
    if documents:
        document = documents[0]
        document['text'] = 'This was updated!'
        return document

入力の例をスキップするSkip input examples

HTTP トリガー、クエリ文字列からの ID の検索 (Python)HTTP trigger, look up ID from query string (Python)

次の例は、単一のドキュメントを取得する Python 関数を示しています。The following example shows a Python function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "todoitems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}",
      "PartitionKey": "{Query.partitionKeyValue}"
    }
  ],
  "disabled": true,
  "scriptFile": "__init__.py"
}

Python コードを次に示します。Here's the Python code:

import logging
import azure.functions as func


def main(req: func.HttpRequest, todoitems: func.DocumentList) -> str:
    if not todoitems:
        logging.warning("ToDo item not found")
    else:
        logging.info("Found ToDo item, Description=%s",
                     todoitems[0]['description'])

    return 'OK'

入力の例をスキップするSkip input examples

HTTP トリガー、ルート データからの ID の検索 (Python)HTTP trigger, look up ID from route data (Python)

次の例は、単一のドキュメントを取得する Python 関数を示しています。The following example shows a Python function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by an HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションから ToDoItem ドキュメントを取得するために使用されます。That ID and partition key value are used to retrieve a ToDoItem document from the specified database and collection.

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{partitionKeyValue}/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "todoitems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connection": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}",
      "PartitionKey": "{partitionKeyValue}"
    }
  ],
  "disabled": false,
  "scriptFile": "__init__.py"
}

Python コードを次に示します。Here's the Python code:

import logging
import azure.functions as func


def main(req: func.HttpRequest, todoitems: func.DocumentList) -> str:
    if not todoitems:
        logging.warning("ToDo item not found")
    else:
        logging.info("Found ToDo item, Description=%s",
                     todoitems[0]['description'])
    return 'OK'

入力の例をスキップするSkip input examples

キュー トリガー、SqlQuery を使用した複数のドキュメントの取得 (Python)Queue trigger, get multiple docs, using SqlQuery (Python)

次の例は、function.json ファイルの Azure Cosmos DB 入力バインドと、そのバインドが使用される Python 関数を示しています。The following example shows an Azure Cosmos DB input binding in a function.json file and a Python function that uses the binding. この関数は、SQL クエリで指定されている複数のドキュメントを、キュー トリガーを使用してクエリ パラメーターをカスタマイズすることで取得します。The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

キュー トリガーがパラメーター departmentId を提供します。The queue trigger provides a parameter departmentId. { "departmentId" : "Finance" } のキュー メッセージは、金融部門のすべてのレコードを返します。A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

Python コードを次に示します。Here's the Python code:

import azure.functions as func

def main(queuemsg: func.QueueMessage, documents: func.DocumentList):
    for document in documents:
        # operate on each document

入力の例をスキップするSkip input examples

入力 - F# の例Input - F# examples

次の例は、function.json ファイルの Cosmos DB 入力バインドと、そのバインドが使用される F# スクリプト関数を示しています。The following example shows a Cosmos DB input binding in a function.json file and a F# function that uses the binding. この関数は、1 つのドキュメントを読み取って、そのドキュメントのテキスト値を更新します。The function reads a single document and updates the document's text value.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "inputDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

F# コードを次に示します。Here's the F# code:

    (* Change input document contents using Azure Cosmos DB input binding *)
    open FSharp.Interop.Dynamic
    let Run(myQueueItem: string, inputDocument: obj) =
    inputDocument?text <- "This has changed."

この例には、FSharp.Interop.DynamicDynamitey の NuGet 依存関係を指定する project.json ファイルが必要です。This example requires a project.json file that specifies the FSharp.Interop.Dynamic and Dynamitey NuGet dependencies:

{
    "frameworks": {
        "net46": {
            "dependencies": {
                "Dynamitey": "1.0.2",
                "FSharp.Interop.Dynamic": "3.0.0"
            }
        }
    }
}

project.json ファイルの追加方法については、のパッケージ管理に関するセクションを参照してください。To add a project.json file, see F# package management.

入力 - Java の例Input - Java examples

このセクションには、次の例が含まれています。This section contains the following examples:

例では、次のようなシンプルな ToDoItem タイプを参照します。The examples refer to a simple ToDoItem type:

public class ToDoItem {

  private String id;
  private String description;

  public String getId() {
    return id;
  }

  public String getDescription() {
    return description;
  }

  @Override
  public String toString() {
    return "ToDoItem={id=" + id + ",description=" + description + "}";
  }
}

HTTP トリガー、クエリ文字列からの ID の検索 - String パラメーター (Java)HTTP trigger, look up ID from query string - String parameter (Java)

次の例は、単一のドキュメントを取得する Java 関数を示しています。The following example shows a Java function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by a HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションからドキュメントを String 形式で取得するために使用されます。That ID and partition key value are used to retrieve a document from the specified database and collection, in String form.

public class DocByIdFromQueryString {

    @FunctionName("DocByIdFromQueryString")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{Query.id}",
              partitionKey = "{Query.partitionKeyValue}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            Optional<String> item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));

        // Convert and display
        if (!item.isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            // return JSON from Cosmos. Alternatively, we can parse the JSON string
            // and return an enriched JSON object.
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item.get())
                          .build();
        }
    }
}

Java 関数ランタイム ライブラリで、その値が Cosmos DB に由来する関数パラメーター上で @CosmosDBInput 注釈を使用します。In the Java functions runtime library, use the @CosmosDBInput annotation on function parameters whose value would come from Cosmos DB. この注釈は、Java のネイティブ型、POJO、または Optional<T> を使用した null 許容値で使用できます。This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

HTTP トリガー、クエリ文字列からの ID の検索 - POJO パラメーター (Java)HTTP trigger, look up ID from query string - POJO parameter (Java)

次の例は、単一のドキュメントを取得する Java 関数を示しています。The following example shows a Java function that retrieves a single document. 関数は、クエリ文字列を使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by a HTTP request that uses a query string to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションからドキュメントを取得するために使用されます。That ID and partition key value used to retrieve a document from the specified database and collection. このドキュメントはその後、前に作成した ToDoItem POJO のインスタンスに変換され、引数として関数に渡されます。The document is then converted to an instance of the ToDoItem POJO previously created, and passed as an argument to the function.

public class DocByIdFromQueryStringPojo {

    @FunctionName("DocByIdFromQueryStringPojo")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{Query.id}",
              partitionKey = "{Query.partitionKeyValue}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Item from the database is " + item);

        // Convert and display
        if (item == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item)
                          .build();
        }
    }
}

HTTP トリガー、ルート データからの ID の検索 (Java)HTTP trigger, look up ID from route data (Java)

次の例は、単一のドキュメントを取得する Java 関数を示しています。The following example shows a Java function that retrieves a single document. 関数は、ルート パラメーターを使用して検索のための ID とパーティション キー値を指定する HTTP 要求によってトリガーされます。The function is triggered by a HTTP request that uses a route parameter to specify the ID and partition key value to look up. その ID とパーティション キー値は、指定されたデータベースとコレクションからドキュメントを取得し、Optional<String> として返すために使用されます。That ID and partition key value are used to retrieve a document from the specified database and collection, returning it as an Optional<String>.

public class DocByIdFromRoute {

    @FunctionName("DocByIdFromRoute")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems/{partitionKeyValue}/{id}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{id}",
              partitionKey = "{partitionKeyValue}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            Optional<String> item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));

        // Convert and display
        if (!item.isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            // return JSON from Cosmos. Alternatively, we can parse the JSON string
            // and return an enriched JSON object.
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item.get())
                          .build();
        }
    }
}

HTTP トリガー、ルート データからの ID の検索、SqlQuery を使用 (Java)HTTP trigger, look up ID from route data, using SqlQuery (Java)

次の例は、単一のドキュメントを取得する Java 関数を示しています。The following example shows a Java function that retrieves a single document. この関数は、ルート パラメーターを使用して検索する ID を指定する HTTP 要求によってトリガーされます。The function is triggered by a HTTP request that uses a route parameter to specify the ID to look up. クエリ条件によっては多数のドキュメントが返される可能性があるため、その ID は、指定されたデータベースとコレクションからドキュメントを取得し、結果セットを ToDoItem[] に変換するために使用されます。That ID is used to retrieve a document from the specified database and collection, converting the result set to a ToDoItem[], since many documents may be returned, depending on the query criteria.

注意

ID だけでクエリを実行する必要がある場合、前の例のように、参照を使用することをお勧めします。要求ユニットの消費が少なくなります。If you need to query by just the ID, it is recommended to use a look up, like the previous examples, as it will consume less request units. ポイント読み取り操作 (GET) は ID によるクエリより効率性に優れていますPoint read operations (GET) are more efficient than queries by ID.

public class DocByIdFromRouteSqlQuery {

    @FunctionName("DocByIdFromRouteSqlQuery")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems2/{id}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              sqlQuery = "select * from Items r where r.id = {id}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem[] item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Items from the database are " + item);

        // Convert and display
        if (item == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item)
                          .build();
        }
    }
}

HTTP トリガー、ルート データからの複数のドキュメントの取得、SqlQuery を使用 (Java)HTTP trigger, get multiple docs from route data, using SqlQuery (Java)

次の例は、複数のドキュメントを取得する Java 関数を示しています。The following example shows a Java function that multiple documents. この関数は、ルート パラメーター desc を使用して description フィールドで検索する文字列を指定する HTTP 要求によってトリガーされます。The function is triggered by a HTTP request that uses a route parameter desc to specify the string to search for in the description field. この検索用語は、指定されたデータベースとコレクションからドキュメントのコレクションを取得し、結果セットを ToDoItem[] に変換して、それを引数として関数に渡すために使用されます。The search term is used to retrieve a collection of documents from the specified database and collection, converting the result set to a ToDoItem[] and passing it as an argument to the function.

public class DocsFromRouteSqlQuery {

    @FunctionName("DocsFromRouteSqlQuery")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems3/{desc}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              sqlQuery = "select * from Items r where contains(r.description, {desc})",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem[] items,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Number of items from the database is " + (items == null ? 0 : items.length));

        // Convert and display
        if (items == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("No documents found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(items)
                          .build();
        }
    }
}

入力 - 属性Input - attributes

C# クラス ライブラリでは、CosmosDB 属性を使用します。In C# class libraries, use the CosmosDB attribute.

この属性のコンストラクターにはデータベース名とコレクションを指定します。The attribute's constructor takes the database name and collection name. これらの設定や構成できる他のプロパティについて詳しくは、この後の構成に関するセクションをご覧ください。For information about those settings and other properties that you can configure, see the following configuration section.

入力 - 構成Input - configuration

次の表は、function.json ファイルと CosmosDB 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype cosmosDB に設定する必要があります。Must be set to cosmosDB.
directiondirection in に設定する必要があります。Must be set to in.
namename 関数のドキュメントを表すバインド パラメーターの名前。Name of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName ドキュメントを含むデータベース。The database containing the document.
collectionNamecollectionName CollectionNameCollectionName ドキュメントを含むコレクションの名前。The name of the collection that contains the document.
idid IdId 取得するドキュメントの ID。The ID of the document to retrieve. このプロパティは、バインド式をサポートしています。This property supports binding expressions. id プロパティと sqlQuery プロパティの両方は設定しないでください。Don't set both the id and sqlQuery properties. いずれも設定しない場合は、コレクション全体が取得されます。If you don't set either one, the entire collection is retrieved.
sqlQuerysqlQuery SqlQuerySqlQuery 複数のドキュメントを取得するときに使用する Azure Cosmos DB SQL クエリ。An Azure Cosmos DB SQL query used for retrieving multiple documents. このプロパティは、次の例のように実行時のバインドをサポートします。SELECT * FROM c where c.departmentId = {departmentId}The property supports runtime bindings, as in this example: SELECT * FROM c where c.departmentId = {departmentId}. id プロパティと sqlQuery プロパティの両方は設定しないでください。Don't set both the id and sqlQuery properties. いずれも設定しない場合は、コレクション全体が取得されます。If you don't set either one, the entire collection is retrieved.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting Azure Cosmos DB 接続文字列を含むアプリ設定の名前。The name of the app setting containing your Azure Cosmos DB connection string.
partitionKeypartitionKey PartitionKeyPartitionKey 参照用のパーティション キー値を指定します。Specifies the partition key value for the lookup. バインディング パラメーターを含めることもできます。May include binding parameters. パーティション分割されたコレクションの参照で必須です。It is required for lookups in partitioned collections.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

入力 - 使用方法Input - usage

C# および F# 関数では、関数が正常に終了したときに、名前付き入力パラメーターを介した入力ドキュメントへの変更がすべて自動的に保持されます。In C# and F# functions, when the function exits successfully, any changes made to the input document via named input parameters are automatically persisted.

JavaScript 関数の場合、関数の終了時に更新が自動的に行われることはありません。In JavaScript functions, updates are not made automatically upon function exit. 代わりに、context.bindings.<documentName>Incontext.bindings.<documentName>Out を使用して、更新を行います。Instead, use context.bindings.<documentName>In and context.bindings.<documentName>Out to make updates. JavaScript の例を参照してください。See the JavaScript example.

OutputOutput

Azure Cosmos DB 出力バインドを使用すると、SQL API を使って Azure Cosmos DB データベースに新しいドキュメントを記述できます。The Azure Cosmos DB output binding lets you write a new document to an Azure Cosmos DB database using the SQL API.

出力 - 例Output - examples

言語固有の例を参照してください。See the language-specific examples:

DocumentClient を使用した入力の例も参照してください。See also the input example that uses DocumentClient.

出力の例をスキップするSkip output examples

出力 - C# の例Output - C# examples

このセクションには、次の例が含まれています。This section contains the following examples:

  • キュー トリガー、1 つのドキュメントの書き込みQueue trigger, write one doc
  • キュー トリガー、IAsyncCollector を使用したドキュメントの書き込みQueue trigger, write docs using IAsyncCollector

例では、次のようなシンプルな ToDoItem タイプを参照します。The examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

出力の例をスキップするSkip output examples

キュー トリガー、1 つのドキュメントの書き込み (C#)Queue trigger, write one doc (C#)

次の例は、キュー ストレージからのメッセージで提供されるデータを使用して、ドキュメントをデータベースに追加する C# 関数を示しています。The following example shows a C# function that adds a document to a database, using data provided in message from Queue storage.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System;

namespace CosmosDBSamplesV2
{
    public static class WriteOneDoc
    {
        [FunctionName("WriteOneDoc")]
        public static void Run(
            [QueueTrigger("todoqueueforwrite")] string queueMessage,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
            ILogger log)
        {
            document = new { Description = queueMessage, id = Guid.NewGuid() };

            log.LogInformation($"C# Queue trigger function inserted one row");
            log.LogInformation($"Description={queueMessage}");
        }
    }
}

出力の例をスキップするSkip output examples

キュー トリガー、IAsyncCollector を使用したドキュメントの書き込み (C#)Queue trigger, write docs using IAsyncCollector (C#)

次の例は、キュー メッセージ JSON で提供されるデータを使用して、ドキュメントのコレクションをデータベースに追加する C# 関数を示しています。The following example shows a C# function that adds a collection of documents to a database, using data provided in a queue message JSON.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class WriteDocsIAsyncCollector
    {
        [FunctionName("WriteDocsIAsyncCollector")]
        public static async Task Run(
            [QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]
                IAsyncCollector<ToDoItem> toDoItemsOut,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

            foreach (ToDoItem toDoItem in toDoItemsIn)
            {
                log.LogInformation($"Description={toDoItem.Description}");
                await toDoItemsOut.AddAsync(toDoItem);
            }
        }
    }
}

出力の例をスキップするSkip output examples

出力 - C# スクリプトの例Output - C# script examples

このセクションには、次の例が含まれています。This section contains the following examples:

  • キュー トリガー、1 つのドキュメントの書き込みQueue trigger, write one doc
  • キュー トリガー、IAsyncCollector を使用したドキュメントの書き込みQueue trigger, write docs using IAsyncCollector

出力の例をスキップするSkip output examples

キュー トリガー、1 つのドキュメントの書き込み (C# スクリプト)Queue trigger, write one doc (C# script)

次の例は、function.json ファイルの Azure Cosmos DB 出力バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows an Azure Cosmos DB output binding in a function.json file and a C# script function that uses the binding. この関数は、次の形式で JSON を受信するキューのキュー入力バインドを使用します。The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

この関数は、各レコードに対して次の形式の Azure Cosmos DB ドキュメントを作成します。The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

C# スクリプト コードを次に示します。Here's the C# script code:

    #r "Newtonsoft.Json"

    using Microsoft.Azure.WebJobs.Host;
    using Newtonsoft.Json.Linq;
    using Microsoft.Extensions.Logging;

    public static void Run(string myQueueItem, out object employeeDocument, ILogger log)
    {
      log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");

      dynamic employee = JObject.Parse(myQueueItem);

      employeeDocument = new {
        id = employee.name + "-" + employee.employeeId,
        name = employee.name,
        employeeId = employee.employeeId,
        address = employee.address
      };
    }

キュー トリガー、IAsyncCollector を使用したドキュメントの書き込みQueue trigger, write docs using IAsyncCollector

複数のドキュメントを作成するために ICollector<T> または IAsyncCollector<T> にバインドできます。T は、サポートされている型のいずれかです。To create multiple documents, you can bind to ICollector<T> or IAsyncCollector<T> where T is one of the supported types.

この例では、次のようなシンプルな ToDoItem タイプを参照します。This example refers to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

function.json ファイルを次に示します。Here's the function.json file:

{
  "bindings": [
    {
      "name": "toDoItemsIn",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "todoqueueforwritemulti",
      "connectionStringSetting": "AzureWebJobsStorage"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItemsOut",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "out"
    }
  ],
  "disabled": false
}

C# スクリプト コードを次に示します。Here's the C# script code:

using System;
using Microsoft.Extensions.Logging;

public static async Task Run(ToDoItem[] toDoItemsIn, IAsyncCollector<ToDoItem> toDoItemsOut, ILogger log)
{
    log.LogInformation($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

    foreach (ToDoItem toDoItem in toDoItemsIn)
    {
        log.LogInformation($"Description={toDoItem.Description}");
        await toDoItemsOut.AddAsync(toDoItem);
    }
}

出力の例をスキップするSkip output examples

出力 - JavaScript の例Output - JavaScript examples

次の例は、function.json ファイルの Azure Cosmos DB 出力バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows an Azure Cosmos DB output binding in a function.json file and a JavaScript function that uses the binding. この関数は、次の形式で JSON を受信するキューのキュー入力バインドを使用します。The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

この関数は、各レコードに対して次の形式の Azure Cosmos DB ドキュメントを作成します。The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

JavaScript コードを次に示します。Here's the JavaScript code:

    module.exports = function (context) {

      context.bindings.employeeDocument = JSON.stringify({
        id: context.bindings.myQueueItem.name + "-" + context.bindings.myQueueItem.employeeId,
        name: context.bindings.myQueueItem.name,
        employeeId: context.bindings.myQueueItem.employeeId,
        address: context.bindings.myQueueItem.address
      });

      context.done();
    };

出力の例をスキップするSkip output examples

出力 - F# の例Output - F# examples

次の例は、function.json ファイルの Azure Cosmos DB 出力バインドと、そのバインドが使用される F# 関数を示しています。The following example shows an Azure Cosmos DB output binding in a function.json file and an F# function that uses the binding. この関数は、次の形式で JSON を受信するキューのキュー入力バインドを使用します。The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

この関数は、各レコードに対して次の形式の Azure Cosmos DB ドキュメントを作成します。The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

F# コードを次に示します。Here's the F# code:

    open FSharp.Interop.Dynamic
    open Newtonsoft.Json
    open Microsoft.Extensions.Logging

    type Employee = {
      id: string
      name: string
      employeeId: string
      address: string
    }

    let Run(myQueueItem: string, employeeDocument: byref<obj>, log: ILogger) =
      log.LogInformation(sprintf "F# Queue trigger function processed: %s" myQueueItem)
      let employee = JObject.Parse(myQueueItem)
      employeeDocument <-
        { id = sprintf "%s-%s" employee?name employee?employeeId
          name = employee?name
          employeeId = employee?employeeId
          address = employee?address }

この例には、FSharp.Interop.DynamicDynamitey の NuGet 依存関係を指定する project.json ファイルが必要です。This example requires a project.json file that specifies the FSharp.Interop.Dynamic and Dynamitey NuGet dependencies:

{
    "frameworks": {
        "net46": {
          "dependencies": {
            "Dynamitey": "1.0.2",
            "FSharp.Interop.Dynamic": "3.0.0"
           }
        }
    }
}

project.json ファイルの追加方法については、のパッケージ管理に関するセクションを参照してください。To add a project.json file, see F# package management.

出力 - Java の例Output - Java examples

キュー トリガー、戻り値を使用したメッセージのデータベースへの保存 (Java)Queue trigger, save message to database via return value (Java)

次の例は、キュー ストレージのメッセージからのデータを使用して、ドキュメントをデータベースに追加する Java 関数を示しています。The following example shows a Java function that adds a document to a database with data from a message in Queue storage.

@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 トリガー、戻り値を使用した 1 つのドキュメントのデータベースへの保存 (Java)HTTP trigger, save one document to database via return value (Java)

次の例は、シグネチャに @CosmosDBOutput の注釈が付けられ、型 String の戻り値を持つ Java 関数を示しています。The following example shows a Java function whose signature is annotated with @CosmosDBOutput and has return value of type String. この関数によって返された JSON ドキュメントは、対応する CosmosDB コレクションに自動的に書き込まれます。The JSON document returned by the function will be automatically written to the corresponding CosmosDB collection.

    @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 を使用した 1 つのドキュメントのデータベースへの保存 (Java)HTTP trigger, save one document to database via OutputBinding (Java)

次の例は、OutputBinding<T> 出力パラメーターを使用して CosmosDB にドキュメントを書き込む Java 関数を示しています。The following example shows a Java function that writes a document to CosmosDB via an OutputBinding<T> output parameter. この設定では、@CosmosDBOutput の注釈を付ける必要があるのは関数シグネチャではなく、outputItem パラメーターであることに注意してください。Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. OutputBinding<T> を使用すると、関数で CosmosDB にドキュメントを書き込むためのバインディングを利用しながら、関数の呼び出し元に JSON または XML ドキュメントなどの異なる値を返すこともできるようになります。Using OutputBinding<T> lets your function take advantage of the binding to write the document to CosmosDB while also allowing returning a different value to the function caller, such as a JSON or XML document.

    @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)HTTP trigger, save multiple documents to database via OutputBinding (Java)

次の例は、OutputBinding<T> 出力パラメーターを使用して CosmosDB に複数のドキュメントを書き込む Java 関数を示しています。The following example shows a Java function that writes multiple documents to CosmosDB via an OutputBinding<T> output parameter. この設定では、@CosmosDBOutput の注釈を付ける必要があるのは関数シグネチャではなく、outputItem パラメーターであることに注意してください。Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. 出力パラメーター outputItem には、そのテンプレート パラメーターの型として ToDoItem オブジェクトの一覧が含まれています。The output parameter, outputItem has a list of ToDoItem objects as its template parameter type. OutputBinding<T> を使用すると、関数で CosmosDB にドキュメントを書き込むためのバインディングを利用しながら、関数の呼び出し元に JSON または XML ドキュメントなどの異なる値を返すこともできるようになります。Using OutputBinding<T> lets your function take advantage of the binding to write the documents to CosmosDB while also allowing returning a different value to the function caller, such as a JSON or XML document.

    @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 関数ランタイム ライブラリで、その値が Cosmos DB に書き込まれるパラメーター上で @CosmosDBOutput 注釈を使用します。In the Java functions runtime library, use the @CosmosDBOutput annotation on parameters that will be written to Cosmos DB. 注釈パラメーターの型は OutputBinding<T> である必要があります。ここで、T は Java のネイティブ型または POJO のどちらかです。The annotation parameter type should be OutputBinding<T>, where T is either a native Java type or a POJO.

出力 - Python の例Output - Python examples

次の例は、関数の出力としてドキュメントを Azure CosmosDB データベースに書き込む方法を示しています。The following example demonstrates how to write a document to an Azure CosmosDB database as the output of a function.

バインディング定義は function.json で定義され、そこで typecosmosDB に設定されます。The binding definition is defined in function.json where type is set to cosmosDB.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "cosmosDB",
      "direction": "out",
      "name": "doc",
      "databaseName": "demodb",
      "collectionName": "data",
      "createIfNotExists": "true",
      "connectionStringSetting": "AzureCosmosDBConnectionString"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}

データベースに書き込むには、ドキュメント オブジェクトをデータベース パラメーターの set メソッドのに渡します。To write to the database, pass a document object to the set method of the database parameter.

import azure.functions as func

def main(req: func.HttpRequest, doc: func.Out[func.Document]) -> func.HttpResponse:

    request_body = req.get_body()

    doc.set(func.Document.from_json(request_body))

    return 'OK'

出力 - 属性Output - attributes

C# クラス ライブラリでは、CosmosDB 属性を使用します。In C# class libraries, use the CosmosDB attribute.

この属性のコンストラクターにはデータベース名とコレクションを指定します。The attribute's constructor takes the database name and collection name. これらの設定や構成できる他のプロパティについて詳しくは、「出力 - 構成」をご覧ください。For information about those settings and other properties that you can configure, see Output - configuration. メソッド シグネチャでの CosmosDB 属性の例を次に示します。Here's a CosmosDB attribute example in a method signature:

    [FunctionName("QueueToDocDB")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
        [CosmosDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
    {
        ...
    }

完全な例については、「出力 - C# の例」を参照してください。For a complete example, see Output - C# example.

出力 - 構成Output - configuration

次の表は、function.json ファイルと CosmosDB 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype cosmosDB に設定する必要があります。Must be set to cosmosDB.
directiondirection out に設定する必要があります。Must be set to out.
namename 関数のドキュメントを表すバインド パラメーターの名前。Name of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName ドキュメントが作成されたコレクションを含むデータベース。The database containing the collection where the document is created.
collectionNamecollectionName CollectionNameCollectionName ドキュメントが作成されたコレクションの名前。The name of the collection where the document is created.
createIfNotExistscreateIfNotExists CreateIfNotExistsCreateIfNotExists コレクションが存在しないときに作成するかどうかを示すブール値。A boolean value to indicate whether the collection is created when it doesn't exist. 既定値は false です。新しいコレクションは予約済みのスループットで作成され、これが価格に影響を及ぼすためです。The default is false because new collections are created with reserved throughput, which has cost implications. 詳細については、 価格に関するページを参照してください。For more information, see the pricing page.
partitionKeypartitionKey PartitionKeyPartitionKey CreateIfNotExists が true の場合に、作成されるコレクションのパーティション キー パスを定義します。When CreateIfNotExists is true, defines the partition key path for the created collection.
collectionThroughputcollectionThroughput CollectionThroughputCollectionThroughput CreateIfNotExists が true の場合に、作成されるコレクションのスループットを定義します。When CreateIfNotExists is true, defines the throughput of the created collection.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting Azure Cosmos DB 接続文字列を含むアプリ設定の名前。The name of the app setting containing your Azure Cosmos DB connection string.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

出力 - 使用方法Output - usage

既定では、関数の出力パラメーターに書き込むと、ドキュメントがデータベースに作成されます。By default, when you write to the output parameter in your function, a document is created in your database. このドキュメントには、自動的に生成された GUID がドキュメント ID として割り当てられます。This document has an automatically generated GUID as the document ID. 出力ドキュメントのドキュメント ID を指定するには、出力パラメーターに渡された JSON オブジェクトで id プロパティを指定します。You can specify the document ID of the output document by specifying the id property in the JSON object passed to the output parameter.

注意

既存のドキュメントの ID を指定した場合、既存のドキュメントは新しい出力ドキュメントによって上書きされます。When you specify the ID of an existing document, it gets overwritten by the new output document.

例外とリターン コードExceptions and return codes

バインドBinding リファレンスReference
Cosmos DBCosmosDB CosmosDB のエラー コードCosmosDB Error Codes

host.json 設定host.json settings

このセクションでは、バージョン 2.x でこのバインディングに使用可能なグローバル構成設定について説明します。This section describes the global configuration settings available for this binding in version 2.x. バージョン 2.x でのグローバル構成設定の詳細については、Azure Functions バージョン 2.x の host.json のリファレンスを参照してください。For more information about global configuration settings in version 2.x, see host.json reference for Azure Functions version 2.x.

{
    "version": "2.0",
    "extensions": {
        "cosmosDB": {
            "connectionMode": "Gateway",
            "protocol": "Https",
            "leaseOptions": {
                "leasePrefix": "prefix1"
            }
        }
    }
}
プロパティProperty DefaultDefault 説明Description
GatewayModeGatewayMode GatewayGateway Azure Cosmos DB サービスに接続する際に関数で使用される接続モード。The connection mode used by the function when connecting to the Azure Cosmos DB service. オプションは DirectGateway ですOptions are Direct and Gateway
ProtocolProtocol HttpsHttps Azure Cosmos DB サービスに接続する際に関数で使用される接続プロトコル。The connection protocol used by the function when connection to the Azure Cosmos DB service. 両方のモードの説明についてはこちらを参照してくださいRead here for an explanation of both modes
leasePrefixleasePrefix 該当なしn/a アプリ内のすべての関数で使用するプレフィックスをリースします。Lease prefix to use across all functions in an app.

次の手順Next steps