创建函数
====

#### 创建函数

开通云函数服务后，首先需要在AGC中创建函数，并添加函数执行的代码。

1.  登录[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)，点击“开发与服务”。
    
2.  在项目列表中点击需要创建云函数的项目。
    
3.  在左侧导航栏选择“云开发（Serverless） > 云函数”，进入云函数主界面。
    
4.  选择“函数”页签，点击“创建函数”。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3f/v3/tsg_S5lkS5iQ3fHCO7n7sQ/zh-cn_image_0000002625108653.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=7B6C10898CDFFA6EE0BDD46AB1D0FE0BD518CC12118AB9A3C8014FD56B9401D5)
    
5.  页面右侧抽屉式滑出“创建函数”窗口，按照“函数配置 -> 触发器 -> 函数代码 -> 层配置”引导顺序配置函数。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/db/v3/t1zVCWsrSBqoF9zLJHt3aA/zh-cn_image_0000002594669136.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=060A3A19768C2C1FB54E912B410C02ED7BB03B54C8B2A5D7CDFECFBB5FC5BBBB)
    

#### 函数配置

1.  在“函数配置”页面，配置“函数名称”、“触发方式”、“超时时长”等函数信息。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2b/v3/Ghx5f2QNR7uJclAqgj801g/zh-cn_image_0000002594829064.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=D9FE16F91CE7B5B306111C14143876E49AB6B71C0C5B3590415EEB59B654D2D6)
    
    | 配置项 | **说明** |
    | :-- | :-- |
    | 函数名称 | 函数的名称。 |
    | 描述 | 函数的描述信息。 |
    | 触发方式 | 
    **请配置为“事件调用”。**
    
    “事件调用”表示通过触发器方式调用函数。
    
     |
    | 超时时长 | 
    
    函数最大运行时长，超过该时长，则默认函数执行失败，单位为s，取值范围为1~1800。不同调用方式下，函数最大运行时长不同：
    
    \- “同步”调用方式时，函数最大运行时长为55s。
    
    \- “异步”调用方式时，函数最大运行时长为1800s。
    
     |
    | 实例并发 | 函数请求并发量上限，单位为个，取值范围为1~10000。 |
    | 环境变量 | key-value形式，可以将需要的变量配置信息传入函数执行环境中，用于函数在运行时读取和使用。 |
    
2.  （可选）可根据需要添加环境变量，支持**表单格式**和**JSON格式**两种编辑方式。添加完成后，还可以点击“JSON格式导出”，导出以“函数名称.json”格式命名的环境变量文件，以备后续使用。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/72/v3/-0vxb8FKTVGpXy0OB6d0Pw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=04470A8D339E192C71A6BDAFB2AD9BA8481AAB2A1EDDDE5BCBEF1B4708DA6DAB)
    
    *   环境变量的key值具有唯一性，且“PROJECT\_CREDENTIAL”和“AGC\_”为系统级环境变量标识，不允许添加以其命名或以其为前缀的环境变量。
        
    *   环境变量总数不超过1000个。
        
    
    *   表单格式编辑
        
        点击“新增变量”，输入key和value值，如下图中所示，env1为环境变量的key值，test为value值。点击![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2a/v3/93HsGk20Q2espLppQE4tSw/zh-cn_image_0000002625188511.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=A9904ED5DEEE55205CA6D9633158CB91D5FCD24E0769A87E7912626E8831F005)可将变量删除。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/07/v3/CFSlteGcQYaBExz9Z_WoAg/zh-cn_image_0000002625108655.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=FF86CAD3BDB96CE6D9E434153F513BAD9E3F002B2AEAD4D8D997DDB1733CF138)
        
    *   JSON格式编辑
        
        选中“JSON格式编辑”，在文本框中以key-value键值对JSON格式添加环境变量。当添加的环境变量比较多时，为了方便核对，可点击“format”对变量进行格式化排列。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/31/v3/FBvCQKQXTUei7zEtZXyt0g/zh-cn_image_0000002594669138.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=ACEBC8BBE3C00E9159FB9254181DEAAE5539704B8105B32707D1E8940612F8FA)
        
3.  “函数配置”页面配置完成后点击“下一步”。
    

#### 触发器

进入“触发器”页面，可基于函数触发场景配置需要的触发器，本场景下添加HTTP触发器。“触发器类型”和“请求方式”保持默认选择，并配置“认证类型”，配置完成后点击“下一步”。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/5a/v3/H3CDDQu5Qbminvv0opJj0A/zh-cn_image_0000002594829066.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=03AD00B705396B897220F181132921DFB2DFDB19B03C09AEFC178D5D8B7DCBDE)

| 参数 | 说明 |
| :-- | :-- |
| 触发器类型 | HTTP触发器。 |
| 请求方式 | HTTP触发器目前仅支持POST请求方式。 |
| 认证类型 | 
HTTP触发器的认证类型。

\- API客户端鉴权（Client适用）：端侧网关认证，适用于来自APP客户端侧（即本地应用或者项目）的函数调用。

\- API客户端鉴权（Server适用）：云侧网关认证，适用于来自APP服务器侧（即云函数）的函数调用。

 |
| 启用decode | 通过HTTP触发器触发函数时，对于contentType为“application/x-www-form-urlencoded”的触发请求，是否使用URLDecoder对请求body进行解码再传入到函数中。 |

#### 函数代码

进入“函数代码”页面，配置“运行环境”、“内存配置”、“代码输入类型”等信息，配置完成后点击“下一步”。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1b/v3/d-Dtwpt6T_anF6Sm7jhPGQ/zh-cn_image_0000002625188513.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=C429AEE16BC5C4050089A7C74D9C7FB997C44991BDDE28DAC74C11924425F659)

| 配置项 | **说明** |
| :-- | :-- |
| 运行环境 | 函数容器的运行环境。请选择nodejs 20.x/latest，其中latest表示使用最新版本。 |
| 内存配置 | 函数容器所占有的内存大小，单位为MB，取值范围：500，1000，2000，4000。 |
| 代码输入类型 | 
包括“在线编辑”与“\*.zip文件”两种方式，默认值为“在线编辑”。

选择“\*.zip文件”方式部署云函数时，入口方法文件的编写方法请参见[入口方法](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/cloudfoundation-develop-function-nodejs#入口方法)。

 |
| 函数入口 | 

包括入口文件名称和入口方法名称，通过“.”连接。例如handler.myHandler，其中handler为入口文件名称，myHandler为入口方法名称。

nodejs运行环境下入口文件必须放置在函数部署包的根目录下，具体请参见[准备函数部署包](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/cloudfoundation-develop-function-nodejs#准备函数部署包)。

 |
| 代码文件 | 

用于在线编辑函数代码或上传函数部署包。

\- “代码输入类型”配置项选择“在线编辑”时，可在创建函数界面集成的WebIDE区域在线编辑函数代码。WebIDE的详细使用方法见下文。

\- “代码输入类型”配置项选择“\*.zip文件”时，点击![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/78/v3/7hzRsvAOSnOrL4Y3jiwi4A/zh-cn_image_0000002625108657.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=83D25B54AFD34BD24A37C606EB7EFD143143F6DF1DAD908E65992CF6CA941475)即可上传函数部署包，也可直接拖曳zip文件至虚线框内。

 |

**WebIDE**

当“代码输入类型”配置项选择“在线编辑”时，创建函数界面中集成了WebIDE功能，支持在线编辑函数代码。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4d/v3/yzptvcsQTLes7Pv4AueKAg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=9244447D5A2BCBDF61FDA37FFF058323738FD187E2C0EECB33344EAA60CE36ED)

如果在函数实例已经运行的情况下进行函数代码或配置更新，AGC后台会滚动更新函数实例，请耐心等待10-20s。

WebIDE从左至右分两个部分：目录树、代码编辑器和最大化，如下图所示。编辑完成后平台会生成部署包并上传。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d9/v3/m2MRDIeYTbKqspu6aEkfrw/zh-cn_image_0000002594669140.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=7A8AA50C4FDABFEFC6B2AB90D8AD00E027F0BCFB9C5A1D78DB95C9E6528C39F2)

| 组成 | 说明 |
| :-- | :-- |
| 目录树 | 
目录树支持如下能力：

\- 新增文件夹：选中一个文件或文件夹，点击右上角新增文件夹按钮“![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f0/v3/P9NWB3cVRyO4hf4dhJEOMA/zh-cn_image_0000002594829068.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=CB744A0818DCBE9A092D66A12EF0C9D766F3DAE3EF939A9D6A9E66A308658D80)”。若选中的是文件夹，则新增一个子文件夹。若选中的是文件，则新增一个同级文件夹。

\- 新增文件：选中一个文件或文件夹，点击右上角新增文件按钮“![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/24/v3/iSyipPNlTEG9EajGaWdsvA/zh-cn_image_0000002625188515.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=9FF0D01CEC9965A51806F4FC2FEA9B53C235B88A945DAE18A98856FE3930A40E)”。若选中的是文件夹，则新增一个子文件。若选中的是文件，则新增一个同级文件。

\- 删除文件：选中一个文件或文件夹，点击右侧删除按钮“![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/08/v3/laTockBIQmKj63WV65AoRw/zh-cn_image_0000002625108659.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=52DBCBC4FE8F22FCBF11F29F3C2F87B9EA0F06FB4C777CC830FC6DE1139A1EDB)”，删除文件或文件夹。不允许删除根目录。

\- 重命名：双击文件或文件夹，输入新名称（仅支持字母、数字、下划线和中划线），完毕后按Enter键完成重命名。

 |
| 编辑器 | 

编辑器具有如下能力：

\- 语法高亮：按照node.js语法高亮显示代码。

\- 语法校验：语法有错误时会给出错误提示。

\- 代码提示：输出代码自动给出相关代码提示。

\- 代码填充：选择后系统代码可自动填充。

\- 格式化：快捷键Ctrl+Shift+B。

\- 支持快捷键操作：Ctrl+v, Ctrl+c, Ctrl+z, Ctrl+x, Ctrl+f, Ctrl+/等。

 |
| 最大化 | 点击最大化按钮![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/91/v3/ppDFUUDpRk2PkhFbULWQ5w/zh-cn_image_0000002594669142.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=3ECB12A6A1ABAA96E24A129031AF46D4824A9A5F4AFA124FF523C353665FFF90)，可以最大化在线编辑区，再次点击![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f1/v3/r2to4rteTC6oFZ6mggWvLA/zh-cn_image_0000002594829070.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=5FCCB88CDE042F37DC7FB27ADC06E1CD57F72F3727928B37AADD430561A1BCAA)按钮或按ESC键退出最大化。 |

#### 层配置

层可以提供公共依赖库的发布与部署能力。开发者可以将函数依赖的公共库和相关依赖项提炼到层，通过为函数绑定层，便可以在函数中使用库，而不必将库包含在函数的代码包中，从而达到缩小函数代码包体积与缩短函数部署时间的效果，也避免了使用函数代码安装和打包依赖项时可能出现的错误。详细的层管理功能，请参见[层管理](https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-cloud-function-layer-0000001517762624)。

如果尚未创建层，可跳过下述步骤，直接点击页面底部的“创建”完成函数定义，后续创建层之后可在函数详情页再进行层配置，为函数绑定层。如果在创建函数之前已创建层，可按照下述步骤进行操作。

1.  进入“层配置”页面，点击“绑定层”。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/52/v3/ZNhOvckXR5eN1LvbNusnyA/zh-cn_image_0000002625188517.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=5E659C3A7ADD1332CD1358D32E33DD75E3886D12DFB12EB1DFF895ABCB4032FC)
    
2.  在右侧弹出的“绑定层”界面中，下拉框选择“层名称”和“版本”，“层范围”等信息根据层的配置将被自动填充，完成层绑定后点击“确定”。一个函数最多可以绑定5个层。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ab/v3/VJ7JbDQ3SDyy6iwxvqYBzQ/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=0FCDB828ABDC6EE1AF25F86E231BED8A8C08B3210B84DA5273330AC96ED7CC00)
    
    选择层时，层的兼容运行时需与函数运行环境相符，系统会自动完成过滤。如果无匹配的层，请参考[创建层](https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-cloud-function-layer-0000001517762624#section11358162018572)创建相同运行环境的层后再进行绑定。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ba/v3/vDjsJPSmRsGOOC6ao_UYPw/zh-cn_image_0000002625108661.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=0C6E2BDE4AABCBACC09495458F33FFE7B44BBD3B7D7C7FC3EEAAA7564A1499F5)
    
    | 参数 | 说明 |
    | :-- | :-- |
    | 层名称 | 层的名称。重复时自动在同名的层中创建一个新版本。 |
    | 版本 | 存在多个层版本时，选择函数绑定的层版本。 |
    | 层范围 | 
    层的共享范围。
    
    \- 项目内共享
    
    \- 团队内共享
    
     |
    | 兼容运行时 | 层使用的语言环境。请选择“nodejs”。 |
    | 层描述 | 层的附加说明，长度不超过1024位。 |
    
3.  返回到“层配置”界面，绑定成功的层将展示在层列表中。如果需要解除层与函数的绑定关系，点击“解绑”即可。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ac/v3/i9l83YuvRfGckBYSx4qtxA/zh-cn_image_0000002594669144.png?HW-CC-KV=V1&HW-CC-Date=20260612T073602Z&HW-CC-Expire=86400&HW-CC-Sign=83F76321776A0C68E4F5959A9650634B556F488AD95A3D7D5E0F3F93C61B38CC)
    
4.  按照“函数配置 -> 触发器 -> 函数代码 -> 层配置”顺序配置过程中，如果需要修改前面步骤中的配置，可点击“上一步”进行回退，配置完成后点击“创建”提交函数定义。
    

#### 更多信息

函数配置完成后，可以[修改函数高级配置](https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/modify-function-advanced-config-0000001734287937)。