技术求助:如何通过Azure CLI在Function App中创建函数?
Hey Ben, 我之前刚好做过用Azure CLI自动化部署Functions的流程,给你分享两个实用的方法,帮你搞定在已创建的Function App下添加JavaScript HTTP触发器的需求:
方法一:本地生成函数模板 + CLI部署(推荐)
这个方法用Azure Functions Core Tools先生成标准的JS HTTP触发器模板,再通过CLI把代码部署到云端的Function App,步骤清晰且符合Azure Functions的最佳实践:
安装Azure Functions Core Tools(如果还没装的话,它是本地开发Functions的必备工具)
本地生成函数项目和触发器:
# 初始化一个Node.js环境的函数项目 func init MyHttpFunctionProject --worker-runtime node cd MyHttpFunctionProject # 创建HTTP触发器函数,自定义名字比如MyFirstHttpTrigger func new --template "HTTP trigger" --name MyFirstHttpTrigger --language JavaScript执行完后,本地会生成包含HTTP触发器的完整项目结构,包括
function.json和index.js文件。打包并部署到云端Function App:
# 把当前目录的所有文件打包成zip(注意不要包含外层文件夹) zip -r function_package.zip . # 用CLI部署到已存在的Function App az functionapp deployment source config-zip \ --resource-group <你的资源组名称> \ --name <你的Function App名称> \ --src function_package.zip替换命令里的资源组和Function App名称,执行后就能在云端看到新创建的HTTP触发器了。
方法二:直接调用Azure Management API(CLI无原生命令时的替代方案)
Azure CLI目前没有直接创建单个函数的命令,但可以通过az rest调用Azure的管理API来实现,适合不想本地生成代码的场景:
先获取你的Function App资源ID:
function_app_id=$(az functionapp show \ --resource-group <你的资源组名称> \ --name <你的Function App名称> \ --query id -o tsv)调用API创建HTTP触发器:
az rest --method put \ --uri "$function_app_id/functions/MyHttpTrigger?api-version=2022-03-01" \ --body '{ "properties": { "config": { "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": ["get", "post"] }, { "type": "http", "direction": "out", "name": "res" } ] }, "files": { "index.js": "module.exports = async function (context, req) { context.log('\''JavaScript HTTP trigger function processed a request.'\''); const name = (req.query.name || (req.body && req.body.name)); const responseMessage = name ? '\''Hello, '\'' + name + '\''. This HTTP triggered function executed successfully.'\'' : '\''This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.'\''; context.res = { status: 200, body: responseMessage }; };", "function.json": "{ '\''bindings'\'' : [ { '\''authLevel'\'' : '\''anonymous'\'', '\''type'\'' : '\''httpTrigger'\'', '\''direction'\'' : '\''in'\'', '\''name'\'' : '\''req'\'', '\''methods'\'' : ['\''get'\'', '\''post'\''] }, { '\''type'\'' : '\''http'\'', '\''direction'\'' : '\''out'\'', '\''name'\'' : '\''res'\'' } ] }" } } }'这里可以根据需求修改
authLevel(比如改成function或admin来限制访问)、函数名称和代码逻辑。
小提示
- 方法一的优势是可以在本地先测试函数逻辑,再部署,不容易出错;
- 如果是自动化脚本,两种方法都可以集成进去,方法一需要确保脚本环境里安装了Core Tools和zip工具;
- 部署后可以用
az functionapp function show命令验证函数是否创建成功:az functionapp function show \ --resource-group <资源组名称> \ --name <Function App名称> \ --function-name <函数名称>
内容的提问来源于stack exchange,提问作者Ben D
相关产品推荐
相关产品推荐

