基础工具
Mac 上直接装:
|
|
具体可以参考这里:Develop Azure Functions locally using Core Tools | Microsoft Learn
- 另外,这链接里也有怎么用命令行来创建的方法。下文 vscode 插件和 CLI 都会涉及。
Vscode 插件
参考这个:Create a Python function using Visual Studio Code - Azure Functions | Microsoft Learn
简介
在 vscode 中安装插件:Azure Functions
切到这个插件去点击添加一个函数,一步步往下都有说明,比较简单。
我选了 HTTP 触发器的模板,最后给我生成了这个文件:
调试运行
简单的运行,可以用插件面板上,下半部分中的 Project 展开,里面有个调试相关的操作(它可点击)。
它会先做一些安装,然后启动 function,IDE 进入 debug 模式。这时主要运行的命令是:func host start
,直接在命令行里运行这个命令也可以启动本地调试运行。但如果你想查询代码中打的日志,一定要记得加上 –verbose 的参数,所以正确的使用姿势是:
|
|
本地调试时,其实已经默认把 AZURE_FUNCTIONS_ENVIRONMENT 这个变量设置为 Development
了,如果你修改代码,它会触发服务的重启,非常方便。
它同时生成一个链接可以直接点击,它会触发函数执行:
创建
用 IDE 插件进行 function 创建上面已经介绍过来了,比较简单,不过读者可能会遇到网络问题而没法往下尝试。这里再介绍下 CLI 的方式来创建。
先初始化目录:
|
|
它会生成一些基础的配置文件,包括 [[https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-local#local-settings-file]] 和 host.json。
创建一个 api 入口:
|
|
Authlevel 有三个值:
- Anonymous 即任何人都可以访问,不需要带什么认证,相当于公开了。
- Function 函数级别的认证,创建的每个函数都得在 URL 上带一个 token 进行认证,参数是
?code=<token>
。 - Admin,最高级别的认证,只有具有管理员权限的用户才能访问函数,适用于包含敏感操作或数据的函数,如修改系统关键配置、访问敏感的业务数据等。这种模式依赖于复杂的身份管理系统(如 AAD)。
部署
平台创建应用
先打开 [[https://portal.azure.com/#browse/Microsoft.Web%2Fsites/kind/functionapp]] 这个 portal 地址,创建一个 Function App
(或者中文叫“函数应用”)。
Plugin
正式部署前,肯定是需要先登录的。正常是可以在插件上操作,如下:
如果不成功,可以用下文 CLI 的方法来登录。
选择 Deploy to Function App,直接进行部署。
我在使用的时候,经常遇到网络问题,因为某些你懂的原因,所以挺难的,得给 vscode 设置 Proxy (具体就不介绍了)
CLI 发布
登录
使用前也一样需要先登录 (上面的说明都是在本地开发):
|
|
运行时,它会打开一个网页进行登录授权
命令行也会有一堆打印,有如下关键信息就说明已经登录成功了。
发布操作
当然我们也可以选择用 CLI 来做发布:
|
|
具体细节可以参考这里:Create a Python function from the command line - Azure Functions | Microsoft Learn
这里的 project_name
跟在平台上创建的应用名要保持一致,要不然会找不到这个 App 而发布失败。
另外还有一点要注意的是,本地的 python 环境需要跟平台上的一致,避免本地跑的好好的、部署上去就缺一些模块:
部署完会生成一个地址可供访问:
部署的过程是会比较慢,我们从平台的部署日志中可以看到它部署完后,会等待 1 分钟:
在线上运行后,可以访问试试。
线上日志可以在这里看到:
不过经常连接不稳定,所以其实可以到另一个地方查看 :
重要插件 Azurite
安装另一个三方的 server 运行插件 Azurite,为开发人员提供了一个免费的本地环境,用于测试 Azure Blob、队列存储和表存储应用程序。常用的主要是 MySQL 操作,本地连不上线上 MySQL,它帮你开了一个代理,可以直接把本地调试时写的数据同步到线上。
如果没有它,本地如果运行定时任务就是出异常:
修改下 local.settings.json
的配置,把 AzureWebJobsStorage
设置成 "UseDevelopmentStorage=true"
。
打开命令面板,运行 Azurite start 来启动服务
这时它们的启动非常快,一闪而过,没关系,它已经在跑了。
比较烦的时,运行时,会在当前目录下生成一些文件:
- blobstorage 和 queuestorage
- 作用:
- 这些文件夹通常用于存储本地开发时的 Azure Blob 存储和 Azure Queue 存储的模拟数据。当你在本地运行和测试 Azure Functions 时,这些文件夹可以帮助模拟真实的 Azure 存储环境。
- 例如,如果你有一个 Azure Function,它从 Blob 存储中读取数据或者向 Queue 存储中写入数据,在本地开发环境中,这些文件夹会存储相关的数据,以便函数能够正常运行和测试。
- 使用场景:
- 在没有连接到真实 Azure 存储账户的情况下,本地开发和调试函数时需要用到。如果删除这些文件夹,可能会导致本地运行的函数在涉及到 Blob 或 Queue 操作时出现错误,因为它们找不到模拟的存储数据。
- 以 azurite_db 开头的.json 文件
- 作用:
- 这些文件是 Azurite 数据库文件。Azurite 是一个本地的 Azure 存储模拟器,用于在本地模拟 Azure Blob、Queue 和 Table 存储服务。这些.json 文件存储了 Azurite 模拟存储服务的数据结构和数据内容。
- 例如,azurite_db_blob.json 文件用于存储模拟的 Blob 存储数据结构和数据,azurite_db_queue.json 文件用于存储模拟的 Queue 存储数据等。
- 作用:
- 作用: