C# 使用Pulumi从DocumentDB帐户检索AccountKey或ConnectionString

C# 使用Pulumi从DocumentDB帐户检索AccountKey或ConnectionString,c#,azure,pulumi,C#,Azure,Pulumi,我使用AzureNextGen创建了一个CosmosDB/DocumentDB-帐户: var databaseAccount=new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccount(accountName, new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccountArgs { // parameters } ); 为了以后能够访问此数据库,我需要检索该数

我使用AzureNextGen创建了一个CosmosDB/DocumentDB-帐户:

var databaseAccount=new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccount(accountName, 
  new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccountArgs
  {
    // parameters
  }
);
为了以后能够访问此数据库,我需要检索该数据库帐户的
连接字符串

我可以通过
databaseAccount.DocumentEndpoint.Apply(q=>“AccountEndpoint=“+q)
构建连接字符串的第一部分(端点),但我无法获得更关键的部分,即密钥


如何实现这一点?

Azure API不会自动返回任何敏感数据。您需要对任何机密数据运行显式查询

在这种情况下,您应该为此使用函数和。以下是TypeScript中的一个片段:

const keys = pulumi.all([resourceGroupName, databaseAccount.name])
    .apply(([resourceGroupName, accountName]) =>
        documentdb.listDatabaseAccountKeys({ resourceGroupName, accountName }));

const connectionStrings = pulumi.all([resourceGroupName, databaseAccount.name])
    .apply(([resourceGroupName, accountName]) =>
        documentdb.listDatabaseAccountConnectionStrings({ resourceGroupName, accountName }));

const connectionString = connectionStrings.apply(cs => cs.connectionStrings![0].connectionString);
const masterKey = keys.primaryMasterKey;
抄袭自


当翻译成C#时,您将使用
Output.Tuple
而不是
pulumi。所有的
都与in类似。

基于Mikhails的回答,检索主键的C#-代码如下所示:

var keys = Pulumi.AzureNextGen.DocumentDB.Latest.ListDatabaseAccountKeys.InvokeAsync(
new Pulumi.AzureNextGen.DocumentDB.Latest.ListDatabaseAccountKeysArgs
{
  AcccountName = "databasename",
  ResourceGroupName = "resourcename"
});

var key = Output.Create(keys).Apply(q => q.PrimaryMasterKey);