Updated on 2024-05-28 GMT+08:00

Python

Prerequisites

  • You have a Huawei Cloud account and have completed real-name authentication.
  • Your Huawei Cloud account is not in arrears and has sufficient balance for the resources involved in this example.

Procedure

  1. Create a function.

    1. Log in to the FunctionGraph console, choose Functions > Function List in the navigation pane, and click Create Function.
    2. Select Create from scratch, set the function information, and click Create Function.
      • Function Type: Select Event Function.
      • Region: Select AP-Singapore.
      • Function Name: Enter upload-file-1.
      • Agency: Select Use no agency.
      • Runtime: Select Python 3.6.
    3. On the Code tab of the function details page, copy the following code to replace the default code, and click Deploy.
      # -*- 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']
          # The APIG trigger encodes data using Base64 by default. The data is decoded here.
          raw_data = base64.b64decode(body)
          for part in decoder.MultipartDecoder(raw_data, content_type).parts:
              # Data is processed here.
              context.getLogger().info(part.content)
      
          return {
              "statusCode": 200,
              "body": "ok",
              "headers": {
                  "Content-Type": "application/json"
              }
          }

  2. Create an APIG trigger.

    1. On the details page of function upload-file-1, choose Configuration > Triggers.
    2. Click Create Trigger, and set Trigger Type to API Gateway (APIG) or API Gateway (Dedicated Gateway). The shared gateway is used as an example.
      • API Name: Retain the default name.
      • API Group: If no API group is available, click Create API Group to create one.
      • Environment: Select RELEASE.
      • Security Authentication: In this example, select None for testing. You can select a more secure authentication mode, such as IAM, for your own services.
      • Protocol: Select HTTPS.
      • Timeout (ms): Retain the default value 5000.

  3. Perform E2E testing.

    Create a file named app.log with any content on your local host. Example:
    start something
    run
    stop all
    • Take the curl tool as an example (curl -F is mainly used in the Linux environment). Run the following command:
      curl -iv {APIG trigger URL} -F upload=@/{Local file path}/app.log
      Figure 1 Example
    • Take the Postman tool as an example. Set the following parameters and click Send.
      Figure 2 Example

      Name: Select upload.

      Type: Select file.

      Value: Click Upload to upload the created app.log file.

    On the Monitoring tab of the upload-file-1 function details page, view the file content in the logs. If needed, you can modify the code to save data to OBS or LTS or to directly process the data.

    Figure 3 View logs