我有一个ARM模板,用于将DocumentDB以及其他Azure reosurces部署到资源组。我希望我的ARM模板能够设置使用DocumentDB作为输出的Stream Analytics作业。为此,ARM模板创建的DocumentDB帐户还需要具有数据库和集合设置。我找不到从ARM模板执行此操作的方法,因此我编写了一个Powershell CmdLet来为我创建数据库和碰撞。
第一个ARM模板无法创建Stream Analytics作业,因为它取决于首先创建数据库和集合。相反,我必须将部署分为两个ARM模板,第一个设置DocDb帐户,第二个设置SA工作。
问题是我在通过ARM模板部署帐户后无法直接在DocDB帐户中创建数据库。我收到以下消息的异常:“远程名称无法解析:'test.documents.azure.com'”当我尝试使用DocDbEndpoint和AuthKey执行CreateDatabaseAsync方法时,我从ARM模板部署中返回。
使用ARM模板部署Azure资源之后是否存在任何计时问题,然后才能以编程方式访问它们?对于以这种方式创建的其他Azure reosurces,这似乎不是问题。
对此问题的任何帮助都非常感谢,以及使用DocumentDB和Stream Analytic作业处理ARM模板的良好做法。
更新2016-03-23
用于设置与DocumentDB的连接以创建数据库的代码。
var query = values
.Where(x=> !holidays
.Select(h => h.holiday)
.Contains(x.someDate));
documentDbEndPoint的格式为:https://name.documents.azure.com:443/而 name 是我刚刚由ARM模板部署创建的DocDB帐户的名称。
我有一个库中的代码,我可以通过加载库来从控制台应用程序或Powershell脚本调用:
Uri endpointUri = new Uri(documentDbEndPoint);
DocumentClient client = new DocumentClient(endpointUri, authKey);
var db = await client.CreateDatabaseAsync(new Database { Id = databaseId });
return db;
无论我是使用PowerShell还是控制台应用程序,如果我在使用ARM模板创建DocDB帐户后尝试创建数据库,我会收到相同的错误。如果我等了一个小时左右,PowerShell脚本和控制台应用程序都可以运行,并且可以在帐户中创建数据库。
似乎存在某种时间问题,以便Azure为新创建的DocDB帐户设置dns记录,以便可以使用DocDB API访问它。
更新2 2016-03-23 只是尝试直接从门户创建DocDB帐户并执行此操作而不是从ARM模板创建它可以立即使用我的powershell脚本和控制台应用程序在帐户中创建数据库。
答案 0 :(得分:0)
此计时问题现已解决,您现在应该可以从ARM模板中使用它。