
# 新建后端自定义认证函数和函数触发器
本小节创建1个后端自定义函数用于API流的认证，可复用；另外创建了2个参数一样的函数触发器，用于提升接口性能
**注** : **同一个集成工作台账号，如果已经添加过自定义认证函数和触发器，跳过当前小节，进入4.4.3**
1. 在华为云-服务列表，弹出框搜索函数工作流，点击进入函数工作流 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745806749.png)
   
   
2. 选择创建函数 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001698086636.png)
   
   
3. 选择函数语言，创建函数BackendAuthentication 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745886577.png)
   
   
4. 将代码粘贴到编辑框，点击部署 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001697927152.png)
   代码：
   ```
   # -*- coding:utf-8 -*-
   import requests
   import json
   def handler (event, context):
       # 获取token的url
       url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens"
       payload = json.dumps({
         "auth": {
           "identity": {
             "methods": [
               "password"
             ],
             "password": {
               "user": {
                 "name": context.getUserData('name'),
                 "password": context.getUserData('password'),
                 "domain": {
                   "name": context.getUserData('domain')
                 }
               }
             }
           },
           "scope": {
             "project": {
               "name": "cn-north-4"
             }
           }
         }
       })
       headers = {
         'Content-Type': 'application/json'
       }
    
    
       res = json.dumps({
           "status":"allow",
           "context":{
               "token":requests.request("POST", url, headers=headers, data=payload).headers.get("X-Subject-Token")
           }
       })
       return {
           "statusCode": 200,
           "body":  res,
           "headers": {
               "Content-Type": "application/json"
           }
       }
   ```
   
   
   
5. 函数部署完成 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745806761.png)
   
   
6. 添加环境变量 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001698086652.png)
   
   
7. 测试，返回成功且能获取到token信息 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745886601.png)
   
   
8. 点击"设置"-"触发器"，再点击右侧的"创建触发器" 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001697927160.png)
   
   
9. 搜索"定时触发器" 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745806777.png)
   
   
10. 频率选固定频率，1min，点击"确定"完成定时器1创建 
    ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001698086664.png)
    
    
11. 间隔30s左右，再创建一个参数一样（名称不一样）的定时触发器 
    ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001745886613.png)
    
    
12. 查看两个定时触发器 
    ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001697927168.png)
    
    
 
