KeyError: 'IDENTITY_ENDPOINT' error in Azure environment

KeyError: 'IDENTITY_ENDPOINT' error in Azure environment

我已经在 Azure Linux 环境中部署了我的应用程序。

我按照官方python例子:https://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity?tabs=python

import os
import requests

identity_endpoint = os.environ["IDENTITY_ENDPOINT"]
identity_header = os.environ["IDENTITY_HEADER"]

def get_bearer_token(resource_uri):
    token_auth_uri = f"{identity_endpoint}?resource={resource_uri}&api-version=2019-08-01"
    head_msi = {'X-IDENTITY-HEADER':identity_header}

    resp = requests.get(token_auth_uri, headers=head_msi)
    access_token = resp.json()['access_token']

    return access_token

为什么我会收到 KeyError: 'IDENTITY_ENDPOINT' 错误?我需要做额外的配置吗?

看起来您可能还没有完成您提供的 link 中的某个步骤。当您将托管标识添加到 Azure 中的应用程序时,将添加这些环境变量。

link 提供了多种添加身份的方法,但现在为了简单起见,只需使用系统分配的身份即可。

因此,对于您在 Azure 门户中创建的应用服务,在身份下,检查您是否已将其设置为 On:

为了确认这已经创建了我们期望的 2 个环境变量,再次在应用服务的门户中,转到 SSH 会话(这代替了旧的控制台选项)。

在shell中键入printenv以查看所有设置的环境变量。查找您的应用当前无法找到的 2:

如果他们失踪了请告诉我,至少我们可以更好地进一步挖掘。