
# 使用FunctionGraph函数访问RDS for MySQL操作步骤
 #### 前提条件
- 已[创建虚拟私有云基本信息及默认子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
- 已[购买RDS for MySQL实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)，已[创建数据库](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0019.html)且数据库中有可用的表。RDS实例需与函数所在区域一致，本实践以"华东-上海一"区域为例。
- 已[创建函数委托](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html#section2)，委托中包含"VPC Administrator"权限。
 
 #### 步骤一：创建函数依赖包
 表1依赖包文件下载 
| 依赖包     | 依赖包概述                                               | 下载链接                                                                                                                                                                                                                                  |
|:---|:---|:---|
| pymysql | 用Python编写的MySQL数据库连接器，其作用是让Python程序能够和MySQL数据库进行通信。 | [pymysql_py36-1.zip](https://functionstage-community.obs.cn-north-1.myhuaweicloud.com/examples/pymysql_py36-1.zip)（[sha256校验文件](https://functionstage-community.obs.cn-north-1.myhuaweicloud.com/examples/pymysql_py36-1.zip.sha256)） |
| DBUtils | 数据库连接池工具包，可以对数据库连接进行管理和复用。                          | [dbutils_py36-1.zip](https://functionstage-community.obs.cn-north-1.myhuaweicloud.com/examples/dbutils_py36-1.zip)（[sha256校验文件](https://functionstage-community.obs.cn-north-1.myhuaweicloud.com/examples/dbutils_py36-1.zip.sha256)） |
   
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，区域选择"华东-上海一"。
2. 在左侧导航栏选择"函数 \> 依赖包管理"，进入"依赖包管理"界面。
3. 单击"创建依赖包"，进入创建依赖包界面，参考[表2]分别创建"pymysql_py36"和"dbutils_py36"依赖包。
   如[图1]所示以创建pymysql依赖包为例，dbutils依赖包创建参数相同。
    表2创建依赖包参数说明 
   | 参数     | 取值                                                                | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|:---|
   | 依赖包名称  | pymysql_py36                                                      | 自定义依赖包名称，便于识别不同的依赖包。 可包含字母、数字、下划线、点和中划线，长度不超过96个字符。以大/小写字母开头，以字母或数字结尾。                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 运行时    | Python 3.6                                                        | 选择依赖包的运行时语言。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 代码上传方式 | 上传ZIP文件                                                           | 分为上传ZIP文件和从OBS上传ZIP文件。 - 上传ZIP文件：单击"添加文件"，上传ZIP代码文件。**上传的文件大小限制为10MB。**  - 从OBS上传文件：填写"OBS链接URL"。如何在OBS中上传文件对象请参见[上传对象](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829661.html)，OBS存储链接获取方法请参见[通过URL访问对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0319.html)。   |
   | 文件上传   | 单击"添加文件"，上传[表1]下载的zip包。 | 选择上传ZIP文件后出现此参数，单击上传本地的ZIP文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 描述     | -                                                                 | 自定义填写依赖包的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      
   图1创建依赖包   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386150841.png "点击放大")
   
   
 
 #### 步骤二：创建函数
1. 返回函数工作流控制台，在左侧导航栏选择"函数 \> 函数列表"，单击"创建函数"。
2. 参考[表3]填写函数基本信息，基本信息填写完成如[图2]所示。
    表3创建函数基本信息 
   | 参数   | 取值样例              | 参数说明                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|:---|
   | 函数类型 | 事件函数              | 事件函数为可通过特定事件触发的函数，通常为JSON格式的请求事件。                                                                                                                                                                                                                                                                                                  |
   | 区域   | 华东-上海一            | 选择函数所在的区域。本实践以"华东-上海一"区域为例。                                                                                                                                                                                                                                                                                                        |
   | 函数名称 | access-mysql-demo | 输入自定义的函数名称，命名规则如下： - 可包含字母、数字、下划线和中划线，长度不超过60个字符。  - 以大/小写字母开头，以字母或数字结尾。   |
   | 企业项目 | default           | 选择函数所属的企业项目。企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理。 默认为"default"，支持选择已创建的企业项目。 **如果您没有开通企业管理服务，将无法看到企业项目选项。开通方法请参见[如何开通企业项目](https://support.huaweicloud.com/usermanual-em/eps_15_0001.html)。**                                    |
   | 委托   | VPC               | 选择函数的委托。通过委托来授权函数工作流来访问其他云服务。 本实践需配置函数访问VPC内资源，因此需选择包含"VPC Administrator"权限的委托。                                                                                                                                                                                                           |
   | 运行时  | Python 3.6        | 选择用于编写函数的运行时语言。本实践以Python 3.6为例。                                                                                                                                                                                                                                                                                                   |
      
   图2创建函数基本信息   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386158757.png "点击放大")
   
   
3. 参考[表4]填写函数高级设置信息，填写完成如[图3]所示，单击"立即创建"。
    表4创建函数高级设置 
   | 参数         | 取值样例                                                                                                                                                                                                                                                                                                           | 参数说明                                                                                                                                                                  |
   |:---|:---|:---|
   | 函数访问公网     | 未开启                                                                                                                                                                                                                                                                                                            | 开启时，函数可以通过默认网卡访问公网上的服务，其公网访问带宽为用户间共享，仅适用于测试场景。                                                                                                                        |
   | 函数访问VPC内资源 | 开启。 - VPC：vpc-fg（192.168.x.x/x）  - 子网：subnet-fg（192.168.x.x/x）   | 开启后可选择函数需访问的VPC及其子网。**需选择与所创建RDS实例相同的VPC环境。** 开启时，函数将使用配置的VPC所绑定的网卡进行网络访问，同时禁用函数工作流的默认网卡，即开关"函数访问公网"参数将不生效。                    |
   | 日志记录       | 未开启                                                                                                                                                                                                                                                                                                            | 启用日志功能后，函数运行过程中产生的日志会上报到云日志服务（LTS）。 LTS将按需收取日志管理费用，详情请参见[云日志服务价格详情](https://www.huaweicloud.com/pricing/calculator.html#/lts)。 |
      
   图3创建函数高级设置   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386168209.png "点击放大")
   
   
 
 #### 步骤三：配置函数
1. 成功创建函数后进入函数详情页，复制[函数访问RDS for MySQL示例代码](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1163.html)，如[图4]所示粘贴在代码在线编辑器中覆盖"index.py"文件中的代码，单击"部署代码"。
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/public_sys-resources/notice_3.0-zh-cn.png)
   本实践的示例代码实现了从RDS for MySQL实例数据库的user表中查询前10条记录的功能，请根据您数据库中的实际表名进行代码内容修改。
   图4部署代码   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386185561.png "点击放大")
   
   
2. 在"代码"页签下，滑至页面最底部的"代码依赖包"板块，单击"添加依赖包"。
3. 在"选择依赖包"弹窗，如[图5]所示，"依赖包源"选择"私有依赖包"，分别添加[步骤一：创建函数依赖包]创建的"pymysql_py36"和"dbutils_py36"依赖包。
   图5选择依赖包   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002352626812.png "点击放大")
   
   
4. 添加完成后如[图6]所示。
   图6代码依赖包   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386188377.png "点击放大")
   
   
5. 单击"设置"页签，选择"常规设置"，调整"执行超时时间"为"30"，"内存"选择"256"，单击"保存"。
   图7函数常规设置   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002386198185.png "点击放大")
   
   
6. 在"设置"页签下选择"环境变量"，单击"编辑环境变量"，在弹窗中单击添加环境变量，参考[表5]的说明列添加环境变量，添加完成后如[图8]所示，单击"确定"。
    表5环境变量 
   | 键        | 值（示例）        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|:---|
   | host     | 192.168.x.x  | 数据库实例的访问地址。 - 如果您选择**同VPC内的RDS数据库** 的场景，请将此环境变量值设置为数据库的**内网地址**。  - 如果您选择**跨VPC或跨地域访问RDS数据库** 的场景，请将此环境变量值设置为数据库的**外网地址**。   RDS控制台操作步骤：进入目标RDS实例详情页，在左侧导航栏选择"连接管理"，在连接信息处获取数据库的内网地址或外网地址。 |
   | database | db_test      | RDS实例中创建的数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | password | \*\*\*\*\*\* | RDS实例中设置的数据库密码。 密码为敏感信息，建议开启加密参数。                                                                                                                                                                                                                                                                                                                                                                      |
   | port     | 3306         | RDS实例中设置的数据库端口。                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | username | fg_user      | RDS实例中创建的账号名称。                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   图8编辑环境变量   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002352491372.png "点击放大")
   
   
7. 在"设置"页签下选择"生命周期"，如[图9]所示开启初始化配置，设置"初始化超时时间"为"60"，"函数初始化入口"为"index.initializer"，单击"保存"。
   图9初始化配置   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002352652980.png "点击放大")
   
   
 
 #### 步骤四：测试函数
1. 回到"代码"页签，单击"测试"弹出配置测试事件弹窗，选择"空白模板"，无需修改单击"创建"。
2. 如[图10]所示单击"测试"，查看函数执行结果。
   根据示例代码，函数返回连接的RDS for MySQL实例数据库的user表中的前10条记录。
   图10测试函数   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002352513662.png "点击放大")
   
   
 
