我正在尝试连接Azure DocumentDB并使用Azure Functions保存文档,但我不知道如何创建连接。
答案 0 :(得分:4)
您可以使用Azure门户进行此操作。 创建DocumentDB后 -
例如
<td>Cat</td>
<td align="center">40</td>
<td align="center">67</td>
<td align="center">58<br>0</td>
<td align="center">32</td>
<td>Dog</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">58<br>0</td>
<td align="center">99</td>
<td>Snake</td>
<td align="center">7</td>
<td align="center">85</td>
<td align="center">58<br>0</td>
<td align="center">13</td>
您需要提供与您在输出选项卡中定义的对象相同的对象。
答案 1 :(得分:1)
您可以直接使用文档客户端:
var endpoint = "https://XXXXX.documents.azure.com:443/";
var authKey = "XXXXX";
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
var sqlCountQuery = "select value count(1) from c";
IDocumentQuery<dynamic> query = client.CreateDocumentQuery<dynamic>(UriFactory.CreateDocumentCollectionUri("YOUR_DB_ID", "YOUR_COLLECTON_ID"), sqlCountQuery).AsDocumentQuery();
....
}
答案 2 :(得分:1)
Azure Functions支持文档DB(Cosmos DB)开箱即用。您只需在V1中添加一个名为AzureWebJobsDocumentDBConnectionString
的环境变量,或在V2中添加AzureWebJobsCosmosDBConnectionString
。
然后只需使用CosmosDBTrigger
绑定属性作为输入绑定(例如在C#中):
public static class UpsertProductCosmosDbTrigger
{
[FunctionName("ProductUpsertCosmosDbTrigger")]
public static void Run(
[CosmosDBTrigger(
// Those names come from the application settings.
// Those names can come with both preceding % and trailing %.
databaseName: "CosmosDbDdatabaseName",
collectionName: "CosmosDbCollectionName",
LeaseDatabaseName = "CosmosDbDdatabaseName",
LeaseCollectionName = "CosmosDbLeaseCollectionName")]
IReadOnlyList<Document> input,
TraceWriter log)
...
对于输出绑定,使用V1中的DocumentDB
输出绑定属性和V2中的CosmosDB
,如:
[FunctionName("ProductUpsertHttpTrigger")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "products")]
HttpRequestMessage req,
[DocumentDB(
databaseName: "%CosmosDbDdatabaseName%",
collectionName: "%CosmosDbCollectionName%")] IAsyncCollector<Product> collector,
TraceWriter log)
...
我写了一篇关于此事的博文:https://blog.mexia.com.au/cosmos-db-in-azure-functions-v1-and-v2
答案 3 :(得分:0)
var EndpointUrl = "EndpointUrl";
var PrimaryKey = "PrimaryKeyValue"
this.client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey);
Database database = await this.client.CreateDatabaseIfNotExistsAsync(new Database { Id = cosmoDbName });
您可以从密钥部分的azure门户获取End-point-URL和Primary-Key值。
答案 4 :(得分:0)
假设C#具有类似Java的SDK。以下是针对Java
有两种方法可以从Azure函数连接到documentDB。
使用SDK
DocumentClient documentClient =新的DocumentClient( “ SERVICE_ENDPOINT”, “主密钥”, ConnectionPolicy.GetDefault(), ConsistencyLevel.Session);
引用-[https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-java-samples][1]。这也有.Net样本。
绑定
@FunctionName(“ CosmosDBStore”) @CosmosDBOutput(name =“数据库”, databaseName =“ db_name”, collectionName =“ col_name”, connectionStringSetting =“ AzureCosmosDBConnection”)
请确保您在应用程序设置和local.settings.json中有一个名称为“ AzureCosmosDBConnection”的变量(如果要在本地测试)
引荐-[https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb-v2][1]
上面的链接也有C#示例。