获取 Azure 中 Postgres 实例的防火墙规则列表 return 在 azure 函数中为空
Get the list of firewall rules on a Postgres Instance in Azure return empty in a azure function
我正在尝试使用 azure-js-sdk 获取 Azure 中 Postgres 实例的防火墙规则列表。在本地它就像一个魅力,我从我选择的 postgres 实例中获得了防火墙规则列表。
...
const azureCredential = new DefaultAzureCredential();
const subscriptionClient = new SubscriptionClient(azureCredential);
const postgresCli = new PostgreSQLManagementClient(azureCredential, "mySubscriptionId");
const fwRules = postgresCli.firewallRules.listByServer("myResourceGroup", "myServerName");
for await (const fwRule of fwRules) {
context.log.info("in the for of fwRules");
context.log.info("DELETING ", fwRule.name, " in ", azResourceGroup);
...
}
但是,当我 运行 在无服务器函数中使用此代码时,fwRules 对象为空并且不显示我的防火墙规则。也不例外。
index.ts
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
try {
const azureCredential = new DefaultAzureCredential();
const subscriptionClient = new SubscriptionClient(azureCredential);
const postgresCli = new PostgreSQLManagementClient(azureCredential, "mySubscriptionId");
const fwRules = postgresCli.firewallRules.listByServer("myResourceGroup", "myServerName");
for await (const fwRule of fwRules) {
context.log.info("in the for of fwRules");
context.log.info("DELETING ", fwRule.name, " in ", azResourceGroup);
...
}
}
catch (e) {
context.log.error(e);
context.res = { status: 500, body: 'Internal Server Error' };
}
};
function.json
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"scriptFile": "../target/foobar/index.js"
这段代码有问题吗?或者您是否已经遇到过这个问题?我不知道如何进一步调试这段代码以了解它不进入循环的原因。
此致,
模糊了。
您可以尝试另一种方法从 Azure Function App 连接到 Azure PostgreSQL 数据库并尝试获取防火墙规则 adterwords。
步骤 1:为 PostgreSQL 配置 Azure AD 身份验证
第 2 步:为函数应用启用托管标识
第 3 步:使用托管身份 ID 在 Postgres 中创建用户
第 4 步:为函数 app 编写代码
第 5 步:测试函数应用并连接到 Postgres
检查连接并获取防火墙规则。
参考:Connect from Function app with managed identity to Azure Database for PostgreSQL
我正在尝试使用 azure-js-sdk 获取 Azure 中 Postgres 实例的防火墙规则列表。在本地它就像一个魅力,我从我选择的 postgres 实例中获得了防火墙规则列表。
...
const azureCredential = new DefaultAzureCredential();
const subscriptionClient = new SubscriptionClient(azureCredential);
const postgresCli = new PostgreSQLManagementClient(azureCredential, "mySubscriptionId");
const fwRules = postgresCli.firewallRules.listByServer("myResourceGroup", "myServerName");
for await (const fwRule of fwRules) {
context.log.info("in the for of fwRules");
context.log.info("DELETING ", fwRule.name, " in ", azResourceGroup);
...
}
但是,当我 运行 在无服务器函数中使用此代码时,fwRules 对象为空并且不显示我的防火墙规则。也不例外。
index.ts
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
try {
const azureCredential = new DefaultAzureCredential();
const subscriptionClient = new SubscriptionClient(azureCredential);
const postgresCli = new PostgreSQLManagementClient(azureCredential, "mySubscriptionId");
const fwRules = postgresCli.firewallRules.listByServer("myResourceGroup", "myServerName");
for await (const fwRule of fwRules) {
context.log.info("in the for of fwRules");
context.log.info("DELETING ", fwRule.name, " in ", azResourceGroup);
...
}
}
catch (e) {
context.log.error(e);
context.res = { status: 500, body: 'Internal Server Error' };
}
};
function.json
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"scriptFile": "../target/foobar/index.js"
这段代码有问题吗?或者您是否已经遇到过这个问题?我不知道如何进一步调试这段代码以了解它不进入循环的原因。
此致, 模糊了。
您可以尝试另一种方法从 Azure Function App 连接到 Azure PostgreSQL 数据库并尝试获取防火墙规则 adterwords。
步骤 1:为 PostgreSQL 配置 Azure AD 身份验证
第 2 步:为函数应用启用托管标识
第 3 步:使用托管身份 ID 在 Postgres 中创建用户
第 4 步:为函数 app 编写代码
第 5 步:测试函数应用并连接到 Postgres
检查连接并获取防火墙规则。
参考:Connect from Function app with managed identity to Azure Database for PostgreSQL