未找到 HTTP 触发器(Azure Functions)

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

我正在尝试完成云恢复挑战,但我陷入了以下步骤:(https://i.stack.imgur.com/HFSjq.png)

我创建了一个azure函数和一个http_trigger,当我使用为http触发器给出的默认代码时,它工作得很好,但这不是我想要实现的。

当我更新代码以尝试将其与我的 CosmosDB 集成时,只需向其写入一个简单的值并将其部署到我的函数中,http 触发器就完全从仪表板中消失,这意味着我无法执行它,使其变得毫无意义。请参阅我正在尝试使用的附加代码:

'''' 导入 azure.functions 作为 func
导入日志记录

def main(req: func.HttpRequest, outputDocument: func.Out[func.Document]) -> func.HttpResponse: logging.info('Python HTTP 触发函数处理了一个请求。')

# Hardcoding the name to "YourName"
name = "Charlie"

# Your data to be stored in Cosmos DB
data_to_store = {
    "name": name,
    "additional_property": "value"  # Add any additional properties you want to store
}

# Use the Cosmos DB output binding to store the data
outputDocument.set(func.Document.from_dict(data_to_store))

return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")

''''

我已按照 MSLearn 上的建议将 CosmosDbConnectionString 更新为 local.settings.json 中的主要字符串。

我的requirements.txt文件夹中有以下内容: (https://i.stack.imgur.com/IalS7.png)

尝试了各种不同的代码示例,但它们都返回了 http 触发错误 (https://i.stack.imgur.com/madSP.png)

请帮忙,提前致谢。

azure azure-functions azure-cosmosdb
1个回答
0
投票

未找到 HTTP 触发器。

此错误是由于您的

function_app.py
中http触发器的语法格式不正确造成的。使用 python 模型 V2 时,应遵循正确的格式。

在您的代码中缺少这些,这对于识别 http 触发器的功能很重要。

app =func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="http_trigger")

作为参考,请检查此文档

有关 CosmosDB 输出绑定参考,请检查此文档

注: 在 CosmosDB 输出绑定中,使用

container_name
代替
collection_name
,使用
connection
代替
connection_string_setting

我的代码:

function_app.py

import azure.functions as func
import logging

app =func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.cosmos_db_output(arg_name="outputDoc",database_name="Testdb",container_name="test_container",connection="CosmosDbConnectionString")
@app.route(route="http_trigger")
def http_trigger(req: func.HttpRequest, outputDoc: func.Out[func.Document]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = "Vivek"

    data_to_store={
        "id": "123",
        "Name": name,
        "Data": "Test"
    }

    outputDoc.set(func.Document.from_dict(data_to_store))

    return func.HttpResponse("Document successfully processed.", status_code=200)

OUTPUT
:

enter image description here

enter image description here

{
    "id": "123",
    "Name": "Vivek",
    "Data": "Test",
    "_rid": "sycqAIfM4i4BAAAAAAAAAA==",
    "_self": "dbs/sycqAA==/colls/sycqAIfM4i4=/docs/sycqAIfM4i4BAAAAAAAAAA==/",
    "_etag": "\"64000074-0000-0700-0000-65b3c3370000\"",
    "_attachments": "attachments/",
    "_ts": 1706279735
}

enter image description here

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