
# 通过KooCLI管理函数
KooCLI工具支持FunctionGraph服务，用户可以通过CLI工具执行函数管理、别名管理、触发器管理函数调用等操作。
#### 约束与限制
- 当通过API访问公有云系统时，需要使用访问密钥进行身份认证并对请求进行加密，确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存config.yaml配置文件，确保访问密钥不被非法使用。**建议使用安全性更高的临时访问密钥（Access Key ID、Secret Access Key、Token），详情请参考[临时访问密钥（企业联邦用户）](https://support.huaweicloud.com/usermanual-ca/ca_01_0005.html)** **。**
- 当发现访问密钥被非法使用（包括丢失、泄露等情况），可以自行删除或者通知管理员重置访问密钥，重新配置。
- 删除的访问密钥将无法恢复。
 
#### 获取CLI工具
CLI工具支持64位的Linux x86系统、64位Windows系统以及Mac系统，具体下载地址如[表1]所示。
 表1下载地址 
| 系统      | 软件包及校验文件                                                                                    | 参考文档                                                                      |
|:---|:---|:---|
| Linux   | 各系统类型软件包及校验文件下载请参见[CLI软件和校验文件下载](https://support.huaweicloud.com/qs-hcli/hcli_02_003.html)。 | [KooCLI介绍](https://support.huaweicloud.com/productdesc-hcli/hcli_01.html) |
| Windows | 各系统类型软件包及校验文件下载请参见[CLI软件和校验文件下载](https://support.huaweicloud.com/qs-hcli/hcli_02_003.html)。 | [KooCLI介绍](https://support.huaweicloud.com/productdesc-hcli/hcli_01.html) |
| Mac     | 各系统类型软件包及校验文件下载请参见[CLI软件和校验文件下载](https://support.huaweicloud.com/qs-hcli/hcli_02_003.html)。 | [KooCLI介绍](https://support.huaweicloud.com/productdesc-hcli/hcli_01.html) |
   
#### 使用KooCLI命令行工具
1. 安装KooCLI命令行工具，请参见[在Linux系统上安装KooCLI](https://support.huaweicloud.com/qs-hcli/hcli_02_003_02.html)。
2. 获取访问密钥（Access Key ID和Secret Access key） 
   - 登录控制台后，在"我的凭证"中获取访问密钥AK/SK。请参见：[新增访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html#section1)。下载得到AK/SK文件，文件名一般为：credentials.csv。
     如下图所示，文件包含了用户名称（User Name），AK（Access Key Id），SK（Secret Access Key）。
     图1credentials.csv文件内容   
     ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002130681545.png "点击放大") 
   
   - 在访问密钥异常丢失或者需要重置时，可以请账号管理员在IAM中生成您的访问密钥，并发送给您。请参见：[管理IAM用户访问密钥](https://support.huaweicloud.com/usermanual-iam/iam_02_0003.html)。
   
   
   
   
3. 获取Region Name，请参见：[地区和终端节点](https://developer.huaweicloud.com/endpoint?FunctionGraph)。
   
   图2获取区域   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002095122044.png "点击放大")
   
   
4. 初始化KooCLI命令行工具。 
   执行如下命令初始化KooCLI命令行工具：
   ```
   hcloud configure init
   ```
   需要输入Access Key ID、Secret Access key和Region Name，初始化成功如[图3]所示。
   图3初始化成功   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002094962212.png "点击放大")
   也可以通过临时AK、SK、Token配置鉴权信息：
   ```
   hcloud configure set --cli-profile=default --cli-access-key=your-ak --cli-secret-key=your-sk --cli-security-token=your-token
   ```
   
   
5. 执行如下命令，查看FunctionGraph支持命令。如[图4]所示，"Available Operations"中返回了FunctionGraph服务支持的operation列表。
   
   ```
   hcloud FunctionGraph --help
   ```
   图4FunctionGraph服务支持的operation列表   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002130681561.png "点击放大")
   执行如下命令，查看"调用函数"操作的帮助信息。如[图5]所示返回信息。
   ```
   hcloud FunctionGraph InvokeFunction --help
   ```
   图5"调用函数"操作的帮助信息   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002095122076.png "点击放大")
   
   
 
#### 函数调用
调用函数首先需要获取函数的urn，如[图6]所示。
图6获取函数URN   
![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002130684601.png "点击放大")
- **同步调用**
  执行同步调用示例命令，参数说明请参见[表2]。
  ```
  hcloud FunctionGraph InvokeFunction --cli-region="ap-southeast-1" --X-Cff-Log-Type="tail" --X-CFF-Request-Version="v1" --function_urn="urn:fss:cn-east-3:******:function:default:hcloud-invoke:latest" --project_id="******" --key="value"
  ```
   表2参数说明 
  | 参数                    | 是否必须 | 描述                                                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|
  | --cli-region          | 是    | 调用函数所在region。                                                                                                                                                                                                                                                                                                    |
  | --function_urn        | 是    | 函数的URN（Uniform Resource Name），唯一标识函数。                                                                                                                                                                                                                                                                            |
  | --project_id          | 是    | 租户Project ID。                                                                                                                                                                                                                                                                                                    |
  | --X-Cff-Log-Type      | 否    | tail（header里面返回函数执行后的4K日志），或者为空（不返回日志）。                                                                                                                                                                                                                                                                          |
  | X-CFF-Request-Version | 否    | 返回体格式：取值v0，v1。 - v0：默认返回文本格式。  - v1：默认返回json格式，sdk需要使用此值。   |
  | Body                  | 是    | 通过--key="value"方式指定请求体，其对应的json结构：{ "key":"value"}。                                                                                                                                                                                                                                                              |
     
  输出结果如[图7]所示，输出的响应参数请参见[表3]。
  图7输出结果   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002130844233.png "点击放大")
   表3响应参数 
  | 参数         | 参数类型    | 描述       |
  |:---|:---|:---|
  | request_id | String  | 请求ID     |
  | result     | String  | 函数执行结果   |
  | log        | String  | 函数执行返回日志 |
  | status     | Integer | 函数执行返回状态 |
  | error_code | String  | 错误码      |
     
  
- **异步调用**
  执行异步调用示例命令，参数说明请参见[表4]。
  ```
  hcloud FunctionGraph AsyncInvokeFunction --cli-region="cn-east-3" --function_urn="urn:fss:cn-east-3:******:function:default:hcloud-invoke:latest" --project_id="******" --key="value"
  ```
   表4参数说明 
  | 参数             | 是否必须 | 描述                                                  |
  |:---|:---|:---|
  | --cli-region   | 是    | 调用函数所在region。                                       |
  | --function_urn | 是    | 函数的URN（Uniform Resource Name），唯一标识函数。               |
  | --project_id   | 是    | 租户Project ID。                                       |
  | Body           | 是    | 通过--key="value"方式指定请求体，其对应的json结构：{ "key":"value"}。 |
     
  输出结果如[图8]所示，输出的响应参数请参见[表3]。
  图8输出结果   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002094965240.png "点击放大")
  表5响应参数说明 
  | 参数         | 参数类型   | 描述   |
  |:---|:---|:---|
  | request_id | String | 请求ID |
     
  
#### 无配置方式调用
KooCLI既可以使用配置项调用云服务API，也提供了无配置的操作方式，在命令行中直接指定临时的AK、SK、Token，具体参考：[无配置方式使用概述](https://support.huaweicloud.com/usermanual-hcli/hcli_07_001.html)。
调用示例命令如下：
```
hcloud FunctionGraph InvokeFunction --cli-region="ap-southeast-1" --cli-access-key=your-ak --cli-secret-key=your-sk --cli-security-token=your-token --X-Cff-Log-Type="tail" --X-CFF-Request-Version="v1" --function_urn="urn:fss:cn-east-3:******:function:default:hcloud-invoke:latest" --project_id="******" --key="value"
```
#### 使用KooCLI配置网络代理
设置网络代理命令如下：
```
export HTTP_PROXY="http://user:password@proxyIp:proxyPort"
```
详情请参考官网指导：[Set/Export http_proxy With Special Characters In Password Under Unix / Linux](https://www.cyberciti.biz/faq/unix-linux-export-variable-http_proxy-with-special-characters/)。
