返回

如何使用托管身份简化 Azure Event Grid 输出绑定的事件发送

python

Azure Event Grid 输出绑定:使用托管身份的秘诀

作为开发人员,您经常需要使用 Azure Event Grid 将事件发送到其他服务。如果您希望简化此流程,可以使用 Azure Event Grid 输出绑定。然而,在 Python v2 中,使用托管身份而不是主题终结点和密钥时,您需要进行一些调整。

问题:
当您尝试使用托管身份时,可能会遇到以下问题:

  • topic_endpoint_uritopic_key_setting 参数不适用于托管身份。
  • 缺少 auth_settings 参数。

解决方案:
要解决此问题,请执行以下步骤:

  1. 删除 topic_endpoint_uritopic_key_setting 参数。
  2. 添加 auth_settings 参数,并将其设置为 AzureAuthCredential.ManagedIdentity

修改后的代码:

@app.function_name(name="eventgrid_output")
@app.route(route="eventgrid_output")
@app.event_grid_output(
    arg_name="outputEvent",
    auth_settings=func.AzureAuthCredential.ManagedIdentity)
def eventgrid_output(eventGridEvent: func.EventGridEvent, 
         outputEvent: func.Out[func.EventGridOutputEvent]) -> None:

    logging.log("eventGridEvent: ", eventGridEvent)

    outputEvent.set(
        func.EventGridOutputEvent(
            id="test-id",
            data={"tag1": "value1", "tag2": "value2"},
            subject="test-subject",
            event_type="test-event-1",
            event_time=datetime.datetime.utcnow(),
            data_version="1.0"))

结论:
通过使用托管身份,您可以简化使用 Azure Event Grid 输出绑定的过程。只需遵循本文中概述的步骤,您就可以轻松地将事件发送到其他服务,无需担心手动配置主题终结点和密钥。

常见问题解答:

  1. 什么是托管身份?
    托管身份是 Azure 提供的一种服务,可自动管理服务主体的凭据,用于对 Azure 资源进行身份验证和授权。

  2. 为什么使用托管身份比使用主题终结点和密钥更好?
    托管身份提供了更安全、更简单的身份验证方法,无需手动管理凭据。

  3. 此解决方案是否适用于 Python v3 中的 Azure Event Grid 输出绑定?
    否,此解决方案仅适用于 Python v2 中的输出绑定。

  4. 如果我在应用托管身份时遇到问题怎么办?
    请参阅 Azure 文档以获取有关如何使用托管身份的详细信息。

  5. 有哪些其他资源可以帮助我了解 Azure Event Grid 输出绑定?