
# 构建程序
本例提供一个图片旋转的样例代码供学习使用。
#### 创建程序包
本例使用Golang语言实现图片旋转的功能，有关函数开发的过程请参考Golang函数开发。本例不再介绍业务功能实现的代码，样例代码目录如[图1]所示。
图1样例代码目录   
![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002129786254.png "点击放大")
#### 创建函数
创建函数的时候，必须选择委托包含OBS访问权限的委托，否则不能使用OBS服务。
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/)，在左侧导航栏选择"函数 \> 函数列表"，进入函数列表界面。
   
   单击"创建函数"，选择"创建空白函数"进入创建函数流程。
   填写函数配置信息。
   输入基础配置信息，完成后单击"创建函数"。
   - 函数类型：事件函数。
   
   - 函数名称：输入您自定义的函数名称，此处以"test-rotate"为例。
   
   - 委托名称：选择创建委托中创建的"serverless_trust"。
   
   - 运行时语言：选择"Go1.x"。 进入test-rotate函数详情页，配置如下信息。
     1. 在"代码"页签，代码选择"上传自ZIP文件"，上传样例代码"[go-test.zip](https://functionstage-examples.obs.cn-north-1.myhuaweicloud.com/go-test.zip)"编译后的二进制文件。
     
     2. 在"设置 \> 常规设置"页签，设置如下信息，完成后单击"保存"。
        - 内存：选择"256"
        
        - 执行超时时间：输入"40"
        
        - 函数执行入口：默认"handler"，无需修改
        
        - 所属应用：默认"default"
        
        - 描述：输入"旋转图片"
         
     
     3. 在"设置 \> 环境变量"页签，输入环境信息，完成后单击"保存"。 键bucket：handler.go文件中定义的拉取图片的OBS桶参数，值your-bucket-output：创建OBS桶中创建的存放图片OBS桶;
        键object：handler.go文件中定义的拉取图片名称参数，值your-picture-name
        键obsAddress：handler.go文件中定义的拉取图片的OBS桶的地址参数，值obs.region.myhuaweicloud.com。
        
      
   
   
   
   
表1环境变量说明 
| 环境变量       | 说明                                                                                                                                                            |
|:---|:---|
| bucket     | handler.go文件中定义的拉取图片的OBS桶参数。                                                                                                                                  |
| object     | handler.go文件中定义的拉取图片名称参数。                                                                                                                                     |
| obsAddress | handler.go文件中定义的拉取图片的OBS桶的地址参数，键obsAddress值的格式为obs.{region}.myhuaweicloud.com，region的值，请参考[地区和终端节点](https://developer.huaweicloud.com/endpoint?functiongraph) |
   
**----结束**
#### 创建函数流
1. 返回函数工作流控制台，在左侧导航栏选择"函数流"，进入函数流列表界面。 
   单击"创建快速函数流"，进入创建快速函数流流程。
   图2创建快速函数流   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002165305753.png "点击放大")
   
   
2. 拖拽一个函数节点，单击函数节点配置元信息： 
   - 应用：默认"default"；
   
   - 函数：选择上一步创建好的函数test-rotate；
   
   - 版本：默认"latest";
   
   - 其他参数默认值即可。
   
   
   图3配置元信息   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002165184193.png "点击放大")
   参数配置完成后，单击"确定"。
   
   
3. 函数流节点创建完成后，单击右上角"保存"，配置如下函数流基本信息，完成后单击"确定"，完成函数流创建。 
   - 名称：test-rotate-workflow；
   
   - 企业项目：默认"default"；
   
   - 日志记录：默认"ALL"；
   
   
   其他参数保持默认值。
   图4保存函数流   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002165184189.png "点击放大")
   
   
 
