更新时间:2024-08-21 GMT+08:00

构建程序

本例提供了实现图片压缩功能的程序包,使用空白模板创建函数,用户可以()学习使用。

创建程序包

本例使用Python语言实现图片压缩的功能,有关函数开发的过程请参考Python函数开发。本例不再介绍业务功能实现的代码,样例代码目录如图1所示。

图1 样例代码目录
其中index.py为函数执行的入口文件,index.py中入口函数的代码片段如下,参数“output_bucket”为压缩后的图片存储地址,需要在创建函数时配置自定义参数。
# -*-coding:utf-8 -*-
import os
import string
import random
import urllib.parse
from PIL import Image
from obs import ObsClient

LOCAL_MOUNT_PATH = '/tmp/'


def handler(event, context):
    ak = context.getSecurityAccessKey()
    sk = context.getSecuritySecretKey()
    st = context.getSecurityToken()
    if ak == "" or sk == "" or st == "":
        context.getLogger().error('Failed to access OBS because no temporary '
                                  'AK, SK, or token has been obtained. Please '
                                  'set an agency.')
        return 'Failed to access OBS because no temporary AK, SK, or token ' \
               'has been obtained. Please set an agency. '

    obs_endpoint = context.getUserData('obs_endpoint')
    if not obs_endpoint:
        return 'obs_endpoint is not configured'

    output_bucket = context.getUserData('output_bucket')
    if not output_bucket:
        return 'output_bucket is not configured'

    compress_handler = ThumbnailHandler(context)
    records = event.get("Records", None)
    return compress_handler.run(records[0])

创建函数

创建函数的时候,必须选择委托包含OBS访问权限的委托,否则不能使用OBS服务。

  1. 登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数列表界面。
  2. 单击“创建函数”,进入创建函数流程。
  3. 选择“创建空白函数”,填写函数配置信息。

    输入基础配置信息,完成后单击“创建函数”。
    • 函数类型:事件函数
    • 函数名称:输入“fss_examples_image_thumbnail”
    • 委托名称:选择创建委托中创建的“serverless_trust”
    • 运行时语言:选择“Python3.6”

  4. 进入fss_examples_image_thumbnail函数详情页,配置如下信息。

    1. 在“代码”页签,代码选择“上传自ZIP文件”,上传样例代码中的“fss_examples_image_thumbnail.zip”。
    2. 在“设置 > 常规设置”页签,设置如下信息,完成后单击“保存”。
      • 内存:选择“256”
      • 执行超时时间:输入“40”
      • 函数执行入口:默认“index.handler”,无需修改
      • 所属应用:默认“default”
      • 描述:输入“压缩图片”
    3. 在“设置 > 环境变量”页签,输入环境信息,完成后单击“保存”。

      键output_bucket:index.py文件中定义的存放输出图片的OBS桶参数,值your-bucket-output: 创建OBS桶中创建的存放输出图片OBS桶;

      键obs_endpoint:index.py文件中定义的存放输出图片的OBS桶的地址参数,值obs.region.myhuaweicloud.com。

      表1 环境变量说明

      环境变量

      说明

      obs_endpoint

      OBS服务终端节点,获取地址请参考地区和终端节点

      output_bucket

      存放输出图片的OBS桶。

添加依赖包

示例代码依赖pillow包,需要通过依赖包的形式进行引入,步骤如下。

  1. 用户进入fss_examples_image_thumbnail函数详情页,在“代码”页签,单击页面最底部的“添加依赖包”。
  2. 添加公共依赖包“pillow-7.1.2”。

demo包的函数代码中已预置了依赖包的引用配置,因此添加依赖包后无需再进行依赖包的引用配置。