
# VSCode本地调试
#### 概述
Huawei Cloud FunctionGraph是华为云Serverless产品的VSCode插件。通过该插件，您可以：
- 快速地在本地创建函数
- 运行调试本地函数、部署本地函数至云端
- 拉取云端的函数列表、调用云端函数、上传ZIP包至云端
 
#### 前提条件
下载 [Visual Studio Code](https://code.visualstudio.com/)（1.63.0版本以上）并安装。
#### 安装插件
1. 打开Visual Studio Code工具，在应用商店中搜索"Huawei Cloud FunctionGraph"并进行安装。
   图1搜索并安装   
   ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001728914449.png "点击放大") 
2. 安装成功后，Huawei Cloud FunctionGraph插件展示在已安装列表中。
   图2已安装列表展示   
   ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001524576437.png) 
 
#### 登录函数插件
1. 单击Huawei Cloud FunctionGraph插件图标，单击"您尚未登录，请先登录"，弹出登录界面，根据页面提示选择登录方式。若选择"华为云 AK/SK登录"，需先获取账号的AK/SK，请参见[新增访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html#section1)。
   图3使用AK/SK登录   
   ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001473738040.png "点击放大")
   
   

2. 您可以选择需要展示的区域Region，查看不同区域的函数信息。 ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001474028494.png "点击放大")
   
   
3. 您也可以参考下图，进行更多区域的展示和隐藏、以及账号退出操作。
   - Show region in the Explorer：选择需要操作的Region。
   
   - Hide region from the Explorer：隐藏暂时不关注的Region。
   
   - Log Out：退出登录。 ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001473713758.png "点击放大")
     
    
 
#### 创建函数
1. 在插件面板中选择"Create Function"，或"Ctrl+Shift+p"搜索"Create Function"命令，按照提示依次选择或输入"运行时"、"模板"、"函数名称"、"本地文件夹"。 ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001524309801.png "点击放大")
   

2. 本地函数创建成功后，会自动打开入口文件。
3. 自动生成配置文件，可以通过修改文件配置函数信息，参数如下：
   ```
   HcCrmTemplateVersion: v2
   Resources:
       Type: HC::Serverless::Function
       Properties:
           Name: functionName //函数名称
           Handler: handler //函数执行入口
           Runtime: runtime //函数运行时
           CodeType: inline //默认固定
           CodeFileName: index.zip //默认固定
           CodeUrl: ""
           Description: '' //函数运行时
           MemorySize: 128 //函数执行内存
           Timeout: 30 //函数超时时间(s)
           Version: latest //默认固定
           Environment:
               Variables: {} // 环境变量
           InitializerHandler: "" //函数初始化入口
           InitializerTimeout: 0 //函数初始化超时时间
           EnterpriseProjectId: "0" //企业项目
           FuncType: v2
           URN: "" //函数URN，函数下载后生成
   ```
   
 
#### 部署函数
- **前提**
  确保函数代码路径正确。Nodejs、Python和PHP运行时函数代码在src目录下，其余运行时函数代码在根目录下。
  
在插件面板中选择"Deploy Function"，或"Ctrl+Shift+p"搜索"Deploy Function"命令，按照提示依次选择"需要部署的函数"、"Region"。
![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001524431341.png "点击放大")
- 部署成功：界面右下角弹出成功提示，切换至部署"Region"查看。
- 部署失败：在"OUTPUT"下查看错误日志并解决。
 
#### 本地调试
1. Nodejs
   - **前提**
     本地环境已安装Nodejs。
     
   
   - **默认模式**
     单击handler方法的Local Debug，配置事件内容，单击 Invoke，进行调试。
     图4单击Local Debug   
     ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001682083552.png "点击放大")
     图5配置事件内容   
     ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001682085136.png "点击放大") 
   
   
   
   - **VSCode自带调试能力**
     在函数文件夹下新建main.js文件，并将下面内容复制到main.js文件，单击左侧的运行和调试图标![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001680901646.png)，选择添加配置，进行配置，选择Nodejs，按"F5"进行调试。
     ```
     const handler = require('./index'); // 函数入口文件路径，根据具体情况修改
     const event = { 'hello': 'world' }; // 测试事件内容，根据具体情况修改
     const context = {}; // Context类
     console.log(handler.handler(event, context));
     ```
     
    
2. Python
   - **前提**
     本地环境已安装Python。
     
   
   
   在函数文件夹下新建main.py文件，并将下面内容复制到main.py文件，单击左侧的运行和调试图标![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001475328434.png)，选择添加配置，进行配置，选择Python，按"F5"进行调试。
   ```
   import sys
   import index # 函数入口文件路径，根据具体情况修改
   # main方法用于调试，event是选择的调试事件
   if __name__ == '__main__':
       event = { 'hello': 'world' } # 测试事件内容，根据具体情况修改
       context = ''
       content = index.handler(event, context)
       print('函数返回：')
       print(content)
   ```
   
3. Java
   - **前提**
     已安装Java，VSCode已支持java的运行测试。
     
   
   
   在函数文件夹下的test目录下，打开TriggerTestsTest.java文件，单击左侧的运行和调试图标![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001525488497.png)，选择添加配置，进行配置，选择Java，按"F5"进行调试。
   
 
#### 其余功能
- **跳转到界面打开**
  选择您需要打开的函数，鼠标右键单击"Open in Portal"，会在浏览器中打开该函数的详情页面。
  
- **执行云端函数**
  1. 选择您需要操作的函数，鼠标右键单击"Invoke Function..."。
  
  2. 在Invoke Function面板中，选择需要传入的事件，单击"Invoke"，函数的日志以及结果会输出在OUTPUT中。
   
- **下载云端函数**
  - **前提**
    用户已添加获取桶对象(obs:object:GetObject)的权限。
    
  
  
  选择您需要操作的函数，鼠标右键单击"Download..."，选择您要下载的路径，函数代码会从云端下载到本地并自动打开入口文件。
  
- **更新云端函数**
  选择您需要操作的函数，鼠标右键单击"Upload Function..."，选择您想要上传的ZIP包。
  
- **删除云端函数**
  1. 选择您需要删除的函数，鼠标右键单击"Delete..."。
  
  2. 在确认框中选择"Delete"，删除函数。
   
- **复制URN**
  选择您需要复制URN的函数，鼠标右键单击"Copy URN"直接获取。
  ![](https://support.huaweicloud.com/devg-functiongraph/zh-cn_image_0000001394563193.png)
  
  
 
