Azure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置

Posted

技术标签:

【中文标题】Azure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置【英文标题】:Azure: Web Apps - List Application Settings from deployed nodejs app 【发布时间】:2021-08-19 23:27:19 【问题描述】:

我已将 nodeJs 应用部署到 Linux Azure AppService。现在我想list 同一应用服务的服务器设置。在 Identity 选项卡下,我为此 AppService 启用了托管标识。在我的 NodeJs 应用程序中,我尝试了以下方法:

const  DefaultAzureCredential  = require("@azure/identity");

const credential = new DefaultAzureCredential();

credential.getToken().then(token => 
  ...
);

我不太确定这是在做什么,但我认为它没有连接,因为getToken 永远不会解决。有什么我在这里缺少的建议吗?

【问题讨论】:

【参考方案1】:

如果您想在应用服务内获取服务器设置值,您可以尝试process.env.NODE_ENV,如this doc 所示。而不是调用 Azure 管理 API。

如果您想在应用服务之外获取服务器设置值,您的代码无法直接访问服务器设置值,因此您应该调用 Azure 管理 API。如果您对DefaultAzureCredential 有问题,可以尝试ClientSecretCredential。试试下面的代码:

const  ClientSecretCredential  = require("@azure/identity");

const fetch = require("node-fetch")

let  tenantId='';
let  clientID = '';
let clientSecret = '';

let subscriptionID = ''
let resourceGroup = ''
let appServiceName = ''

new ClientSecretCredential(tenantId,clientID,clientSecret).getToken(['https://management.azure.com/.default']).then(result=>
    accessToken = result.token
    reqURL = `https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$appServiceName/config/appsettings/list?api-version=2019-08-01`
    fetch(reqURL, 
        method: 'post',
        headers:  'Authorization': 'Bearer ' +  accessToken,
    )
    .then(res => res.json())
    .then(json => console.log(json));

)

结果:

有关如何创建 Azure AD 应用并为其分配角色以使其有权调用 Azure 管理 API,请参阅this doc。

【讨论】:

我的目标是读写设置。所以,我同意,为了阅读,你可以使用环境变量。但是如果改变它们呢,AD 应用程序是必需的吗? @JeanlucaScaljeri,是的,如果您需要编写/修改环境变量,我认为您应该调用 Azure 管理 API。 好的。但是我在哪里可以找到您在示例中使用的 clientIDclientSecret @JeanlucaScaljeri,您需要注册一个 Azure AD 应用程序:docs.microsoft.com/en-us/azure/active-directory/develop/…,以便您可以获取 clientID 并创建一个秘密:docs.microsoft.com/en-us/azure/active-directory/develop/… 对于 Azure 管理 API,是的,请参见:pypi.org/project/azure-mgmt-resource

以上是关于Azure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章

Azure上采用Powershell从已有的VHD创建VM

Azure Databricks 群集初始化脚本 - 从已安装的存储安装轮

通过 Azure Devops 将 .Net Core 3.1 Web 应用程序部署到 Azure Linux Web 服务时出错

从 Azure 中的辅助角色部署 Web 角色

如何将python web应用程序部署到Microsoft Azure

部署在 Azure 虚拟机上的 Web 应用:持久性 VS 临时磁盘