获取 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