使用 Pulumi 从 DocumentDB-Account 中检索 AccountKey 或 ConnectionString
Retrieve AccountKey or ConnectionString from DocumentDB-Account using Pulumi
我创建了一个 CosmosDB/DocumentDB - 使用 AzureNextGen 的帐户:
var databaseAccount=new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccount(accountName,
new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccountArgs
{
// parameters
}
);
为了之后能够访问该数据库,我需要检索该数据库帐户的 key
或 connection string
:
我可以通过 databaseAccount.DocumentEndpoint.Apply(q => "AccountEndpoint=" + q)
构建连接字符串的第一部分(端点),但我无法获取更关键的部分,即密钥。
如何实现?
Azure API 不会自动 return 任何敏感数据。您需要 运行 对任何机密数据进行显式查询。
在这种情况下,您应该为此目的使用函数 listDatabaseAccountKeys
and listDatabaseAccountConnectionStrings
。这是 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;
复制自 this example。
转换为 C# 时,您将使用 Output.Tuple
而不是 pulumi.all
,如 this template。
基于 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);
我创建了一个 CosmosDB/DocumentDB - 使用 AzureNextGen 的帐户:
var databaseAccount=new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccount(accountName,
new Pulumi.AzureNextGen.DocumentDB.Latest.DatabaseAccountArgs
{
// parameters
}
);
为了之后能够访问该数据库,我需要检索该数据库帐户的 key
或 connection string
:
我可以通过 databaseAccount.DocumentEndpoint.Apply(q => "AccountEndpoint=" + q)
构建连接字符串的第一部分(端点),但我无法获取更关键的部分,即密钥。
如何实现?
Azure API 不会自动 return 任何敏感数据。您需要 运行 对任何机密数据进行显式查询。
在这种情况下,您应该为此目的使用函数 listDatabaseAccountKeys
and listDatabaseAccountConnectionStrings
。这是 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;
复制自 this example。
转换为 C# 时,您将使用 Output.Tuple
而不是 pulumi.all
,如 this template。
基于 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);