【问题标题】:Azure: Web Apps - List Application Settings from deployed nodejs appAzure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置
【发布时间】: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 永远不会解决。有什么我在这里缺少的建议吗?

【问题讨论】:

    标签: javascript node.js azure azure-web-app-service azure-identity


    【解决方案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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多