如何在具有托管标识的 Azure Durable Python Functions 中使用队列触发器

问题描述 投票:0回答:1

我正在为 Azure Durable Function 开发队列触发器。使用“queue_trigger”装饰器时,我需要提供一个连接字符串。但是,我需要避免直接使用连接字符串,而是使用托管标识连接到存储帐户/队列存储,最好使用 DefaultAzureCredential() 或类似方法。在下面的示例中,我当前在环境变量中设置了“QueueConnectionString”,但我想将其替换为托管身份以安全访问队列。

import azure.functions as func
import logging
import azure.durable_functions as adf

myApp = adf.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@myApp.durable_client_input(client_name="client")
@myApp.queue_trigger(arg_name="azqueue", queue_name="test", connection="QueueConnectionString")
async def begin_data_entry(azqueue: func.QueueMessage, client):
    logging.info('Python HTTP trigger function processed a request.')
    await client.start_new("activity_function_name", client_input={})
python azure azure-managed-identity azure-durable-functions queuetrigger
1个回答
0
投票

我使用

Managed identity
为 Azure 持久功能创建了一个示例队列触发器,使用
DefaultAzureCredential
处理发送到 Azure 存储队列的消息,它对我来说效果很好。

  • 最好在
    QueueConnectionString__queueServiceUri
    中添加存储URI
    local.settings.json
    ,如下所示。

local.settings.json:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "QueueConnection__queueServiceUri": "https://<storage_name>.queue.core.windows.net/"
  }
}

在代码中添加以下连接,它将从

local.settings.json
加载存储URI。

connection="QueueConnection__queueServiceUri"

代码:

import azure.functions as func
import logging
import azure.durable_functions as adf
from azure.identity import DefaultAzureCredential
from azure.storage.queue import QueueClient

myApp = adf.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@myApp.durable_client_input(client_name="client")
@myApp.queue_trigger(arg_name="azqueue", queue_name="test", connection="QueueConnection__queueServiceUri")
async def begin_data_entry(azqueue: func.QueueMessage, client):
    logging.info('Python HTTP trigger function processed a request.')
    await client.start_new("activity_function_name", client_input={})

我已将 owner 角色添加到服务原则,并将 Storage Queue Data Contributor 角色添加到 Azure 存储帐户中的函数应用程序,如下所示。

enter image description here

确保将以下 URI 添加到 Azure Function App > 环境变量 > 应用程序设置,如下所示。

"QueueConnection__queueServiceUri": "https://<storage_name>.queue.core.windows.net/"

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.