
# 通过OBS上传函数代码
本章节介绍如何将存储在OBS中的函数代码文件，上传至函数工作流控制台。
#### 操作场景
函数工作流控制台支持通过输入OBS地址，上传OBS桶中文件大小不超过300MB的函数代码文件对象，支持上传ZIP格式的代码文件进行函数代码部署。
当前所有运行时均支持从OBS上传函数代码，请参见[函数工程打包规范](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0103.html)在本地打包代码文件并上传至OBS桶。
#### 约束与限制
- 请确保函数与OBS桶所在区域一致。
- 上传至OBS桶中的代码文件编码格式建议设置为UTF-8。
- 如OBS桶中的代码文件大小超过300MB，或代码文件解压后的源代码大小超过1.5G，请[提交工单](https://console.huaweicloud.com/ticket/?agencyId=e4ebeeb18baa4ae58946b5342fa6159d#/ticketindex/createIndex)处理。
- 当代码编辑器中部署的代码大于20MB时将不展示代码，如[图1]所示，但仍可以正常测试函数代码。
  图1编辑器不展示代码   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002162143716.png "点击放大") 
 
#### 前提条件
已将函数代码文件上传至OBS桶，并已设置匿名用户对该对象的读取权限，权限开启方法请参见[对所有账号授予指定对象的读权限](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0033.html)。
#### 上传函数代码
1. 登录[对象存储服务控制台](https://storage.huaweicloud.com/obs/)，请参考[通过URL访问OBS对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0319.html)复制所需的代码文件对象URL。
2. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
3. 在函数列表中，单击函数名称进入函数详情页。
4. 在"代码"页签，右侧选择"上传代码 \> OBS地址"。
5. 在弹出的窗口中，输入复制的OBS桶对象URL。
6. （可选，仅"拉美-圣保罗一"区域支持配置）可根据实际需求选择使用KMS静态加密函数代码： 
   - （默认）functiongraph/default：函数会在DEW服务中自动创建默认密钥，您无需手动创建。 首次使用默认密钥进行加解密，需确保函数委托中拥有以下权限：kms:dek:decrypt、 kms:dek:create、 kms:cmk:create、kms:cmk:get、 kms:cmk:list。
     请参考[JSON视图配置自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html#section1)前往IAM控制台将"委托权限策略"添加至函数委托中，并参考[配置函数委托](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html#functiongraph_01_0920__section35661045182115)为该函数配置委托权限。
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Action": [
                     "kms:dek:decrypt",
                     "kms:dek:create",
                     "kms:cmk:create",
                     "kms:cmk:get",
                     "kms:cmk:list"
                 ],
                 "Effect": "Allow"
             }
         ]
     }
     ```
     
   
   - 使用用户主密钥：支持选择已创建的密钥加密函数代码，创建用户主密钥可参考[创建自定义密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0178.html)。
     使用用户主密钥，需确保函数委托中拥有以下权限：kms:dek:decrypt、 kms:dek:create、 kms:cmk:get、 kms:cmk:list。
     ![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/caution_3.0-zh-cn.png)
     若选择"使用用户主密钥"，在后续使用中请勿在DEW服务中删除用于函数加密的主密钥，否则将因加密数据无法解密而导致函数执行失败。
     
   
   
   
   
7. OBS地址输入完成后，单击"确定"，代码将自动部署到代码编辑区中。 
   如需修改代码编辑区中的代码，请在每次修改完成后单击"部署代码"，进行代码更新部署。如需修改函数执行入口，请参见[修改函数执行入口](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0419.html#functiongraph_01_0419__section46234724412)。
   
   
 
