# 创建FunctionGraph函数
了解[FunctionGraph业务使用流程](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0110.html)。
#### 步骤1：创建函数
1. 登录函数工作流FunctionGraph管理控制台。
2. 在左侧列表中单击"函数 \> 函数列表"，单击"创建函数"
   图1创建函数   
   ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002701186839.png "点击放大") 
3. 单击"创建空白函数"，并配置函数的基本信息。 详细参数说明请参考[函数属性](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1441.html)。
   - 函数类型：本例为事件函数。
   
   - 运行时环境：Java11。
   
   - 委托：当函数工作流服务需与其他云服务协同工作时，需要创建云服务委托，授权FunctionGraph使用这些云服务，并在FunctionGraph中为函数配置委托权限，以实现与其他云服务的协同工作。 FunctionGraph单次调用数据量有[约束与限制](https://support.huaweicloud.com/productdesc-functiongraph/functiongraph_01_0150.html)。函数如果超过4MB，建议配置访问OBS的委托权限。具体操作请参考[相关操作：配置FunctionGraph访问其他云服务的委托]。
     
   
   
   图2创建函数   
   ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002671427116.png "点击放大") 
 
#### 步骤2：函数设置
1. **设置函数执行入口**
   1. 函数创建完成后，在列表单击函数名称进入函数详情页面。
   
   2. 选择"设置 \> 常规设置"，在"函数执行入口"中设置UDAF的执行入口。 UDAF的执行入口格式为\[包名\].\[类名\].\[执行函数名\]，
      - \[包名\].\[类名\]为编写的UDAF函数所在类，
      
      - 执行函数名固定为handleRequest。
      
      
      本示例设置为：com.huawei.demo.UDAFDemo.handleRequest，
      
   
   3. 设置完成之后单击保存按钮。
    
2. **设置执行超时时间和内存**
   1. 函数创建完成后，在列表单击函数名称进入函数详情页面。
   
   2. 选择"设置 \> 常规设置"，在"函数执行入口"中设置执行时间和内存。 根据UDAF复杂情况配置执行[超时时间和内存大小](https://support.huaweicloud.com/functiongraph_faq/functiongraph_03_0250.html)。内存大小与[计费](https://support.huaweicloud.com/price-functiongraph/functiongraph_00_0001.html)关联。
      本示例选择执行时间为15秒，内存为1024MB。
      
   
   3. 设置完成之后单击保存按钮。
      图3常规设置   
      ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002701306911.png "点击放大") 
    
3. **设置类隔离信息**
   1. 函数创建完成后，在列表单击函数名称进入函数详情页面。
   
   2. 选择"设置 \> 高级设置"，配置"类隔离选项"。 类隔离开启后将使用单独的类加载器加载上传的代码和依赖，解决依赖和运行时的冲突，如果无依赖冲突问题无需打开。
      
   
   
   本示例中关闭类隔离选项，设置完成后单击保存按钮。
   图4设置类隔离   
   ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002701306915.png "点击放大") 
 
#### 步骤3：上传Jar包
1. 在FunctionGraph管理控制台，函数列表中单击函数名称进入函数详情页面。
2. 单击"代码"，在右侧上传代码下拉框当中选择JAR文件，将之前导出的JAR包上传
3. 上传成功之后，可以在函数详情页面复制URN（Uniform Resource Name）。URN是函数的唯一标识函数，在下一步调用函数时需要用到。
   图5复制URN   
   ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002671427118.png "点击放大") 
 
 #### 相关操作：配置FunctionGraph访问其他云服务的委托
1. 登录管理控制台。
2. 单击右上方登录的用户名，在下拉列表中选择"统一身份认证"。
3. 在左侧导航栏中，单击"委托"。
4. 在"委托"页面，单击"创建委托"。
5. 在"创建委托"页面，设置如下参数：
   - 委托名称：按需填写。
   
   - 委托类型：选择"云服务"。
   
   - 云服务：（"委托类型"选择"云服务"时出现此参数项。）在下拉列表中选择"FunctionGraph"。
   
   - 持续时间：选择"永久"。
   
   - 描述：非必选，可以填写"拥有OBS OperateAccess权限的委托"。
     图6创建委托   
     ![](https://support.huaweicloud.com/devg-aidatalake/zh-cn_image_0000002701306913.png) 
    
6. 配置完委托的基本信息后，单击"立即授权"。
7. 进入"选择策略"页面，在右方搜索框中搜索OBS Administrator权限并勾选。勾选完成后单击"下一步"。
8. 单击"下一步"，选择委托的授权范围。 了解更多授权操作说明请参考[创建用户组并授权](https://support.huaweicloud.com/usermanual-iam/iam_03_0001.html)。
   - 所有资源：授权后，IAM用户可以根据权限使用账号中所有资源，包括企业项目、区域项目和全局服务资源。
   
   - 全局服务资源：全局服务部署时不区分区域，访问全局级服务，不需要切换区域，全局服务不支持基于区域项目授权。如对象存储服务（OBS）、内容分发网络（CDN）等。授权后，用户根据权限使用全局服务的资源。
   
   - 指定区域项目资源：授权后，IAM用户根据权限使用所选区域项目中的资源，未选择的区域项目中的资源，该IAM用户将无权访问。
   
   - 指定企业项目资源：授权后，IAM用户根据权限使用所选企业项目中的资源。如企业项目A包含资源B，资源B部署在北京四和上海二，IAM用户所在用户组关联企业项目A后，北京四和上海二的资源B用户都可访问，不在企业项目A内的其他资源，该IAM用户将无权访问。
   
   
   本例选择的是OBS策略，因此选择全局服务资源。
   
9. 单击"确定"，完成授权。
10. 授权后需等待15-30分钟才可生效。 授权生效后返回函数基本信息界面，选择对应的委托，权限策略当中会显示已授权的策略。
    
 
