更新时间:2024-11-15 GMT+08:00

Python语言方案

前提条件

  • 已拥有华为云账号且已实名认证。
  • 华为云账号未欠费,且有足够金额购买本案例所涉及的资源。

操作步骤

  1. 创建函数

    1. 登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,单击“创建函数”。
    2. 选择“创建空白函数”,填写函数信息,完成后单击“创建函数”。
      • 函数类型:事件函数。
      • 区域:亚太-新加坡。
      • 函数名称:输入您自定义的函数名称,此处以“upload-file-1”为例。
      • 委托名称:未使用任何委托。
      • 运行时:Python 3.6。
    3. 在“代码”页签,复制如下代码替换默认的函数代码,并单击“部署”更新函数。
      # -*- coding: utf-8 -*-
      
      from requests_toolbelt.multipart import decoder
      import base64
      
      def handler(event, context):
          context.getLogger().info("Function start run.")
      
          content_type = ''
          if "content-type" in event['headers']: 
              content_type = event['headers']['content-type']
      
          if "multipart/form-data" not in content_type:
              return {
                  "statusCode": 200,
                  "body": "The request is not in multipart/form-data format.",
                  "headers": {
                      "Content-Type": "application/json"
                  }
              }
      
          body = event['body']
          #APIG触发器默认对数据进行Base64编码,这里解码
          raw_data = base64.b64decode(body)
          for part in decoder.MultipartDecoder(raw_data, content_type).parts:
              #这里处理数据
              context.getLogger().info(part.content)
      
          return {
              "statusCode": 200,
              "body": "ok",
              "headers": {
                  "Content-Type": "application/json"
              }
          }

  2. 配置APIG触发器

    1. 在upload-file-1函数详情页面,单击“设置 > 触发器”,开始创建触发器。
    2. 单击“创建触发器”,触发器类型可以选择“API 网关服务(APIG)”或“API 网关服务(APIG 专享版本)”,此处以共享版APIG为例。
      • API名称:默认即可,无需修改。
      • 分组:选择在APIG创建的API分组,若无分组,可单击“创建分组”跳转至APIG创建。
      • 发布环境:RELEASE。
      • 安全认证:此处为方便测试,配置“None”,实际业务请选择更安全的认证方式,例如IAM认证等。
      • 请求协议:选择“HTTPS”。
      • 后端超时(毫秒):默认5000毫秒。

  3. 端到端测试

    在本地创建app.log文件,内容自定义,此处简单举例:
    start something
    run
    stop all
    • 以curl工具为例(curl -F的方式主要用的是linux环境),执行如下命令测试:
      curl -iv {APIG触发器URL} -F upload=@/{本地文件路径}/app.log
      图1 示例
    • 以postman工具为例,配置如下参数,配置完成后单击“发送”。
      图2 示例

      参数名:选择“upload”。

      类型:选择“file”。

      参数值:单击“Upload”,上传刚才创建好的app.log文件。

    在upload-file-1函数详情页面的“监控”页签下,查看日志,可看到文件内容的打印。实际业务中,用户可根据需要修改代码保存数据到对象存储OBS、日志服务LTS等云服务或直接处理。

    图3 查看日志