上云无忧 > 文档中心 > 百度智能云函数计算 CFC 使用 Terraform 快速搭建图像处理应用
函数计算CFC
百度智能云函数计算 CFC 使用 Terraform 快速搭建图像处理应用

文档简介:
本文介绍了使用百度云函数计算,结合 BOS 和百度云图像效果增强能力,实现图像文件的自动处理,并通过 Terraform 实现应用的快速部署。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概述

本文介绍了使用百度云函数计算,结合 BOS 和百度云图像效果增强能力,实现图像文件的自动处理,并通过 Terraform 实现应用的快速部署。

前提概念

首先介绍在本文出现的几个比较重要的概念:

Terraform:是一种安全有效地构建、更改和版本控制基础设施的工具。它以配置文件为驱动,您在文件中定义各种组件,Terraform 会基于该文件完成所有组件的创建、变更和管理。目前百度云已与 Terraform 集成,您可通过 Terraform 来创建、管理 CFC、BOS、VPC、BCC 等多种百度云资源,具体请参考 Terraform BaiduCloud Provider。

百度云图像效果增强:基于领先的深度学习技术,提供对图片进行去雾、对比度增强、无损放大、拉伸恢复等多种优化处理,具体请参考图像效果增强。

BOS:百度云提供的对象存储服务,支持任何类型的数据存储。Bucket 是存放数据的容器,可看做是存储桶。

BOS 触发器:BOS 和 CFC 的无缝集成。您可以为各种类型的事件设置处理函数,当 BOS 监控到指定类型的文件、事件后,会自动调用 CFC 函数。

工作原理

整体方案如图所示:


用户上传一个图像文件到 BOS 后,BOS 触发器自动触发函数执行,函数调用 AIP 的图像效果增强服务处理图像,并且将处理后的视频保存回 BOS 的另一个 Bucket。本示例中,函数使用了图像效果增强服务的给黑白图像上色功能。

操作部署

创建图像效果增强应用

登录百度云控制台,选择“产品服务”->“人工智能”->“图像效果增强”,点击“创建应用”,输入“应用名称”和“应用描述”后点击“立即创建”,您的第一个应用就创建完成了。返回“应用列表”页,就能看到您创建的应用。如图所示,每个应用都有自己的 AppID、API Key 和 Secret Key,在函数中访问该服务会用到这些信息。

部署函数和 BOS Bucket

函数和 Bucket 资源的部署有两种方式,下面分别介绍一下。

通过 Terraform 一键部署

使用 Terraform 可以统一管理各个资源,使用 Terraform 可帮助您更快的部署、变更应用,无需在各个产品的控制台上分别操作,降低操作成本。

  1. 在本地编写函数代码,实现从 BOS 读取图片、调用图像增强服务的逻辑。本例中,您可直接使用此示例代码包 aip-image-process.zip。
  2. 登录 Terraform 官网 下载适用于您的操作系统的程序包。
  3. 编辑 Terraform 配置文件。新建文件 main.tf,在文件中指定函数、bucket、函数触发器的元信息。参考配置如下:
provider "baiducloud" {
  access_key = "<YOUR_BAIDUCLOUD_ACCESS_KEY>"
  secret_key = "<YOUR_BAIDUCLOUD_SECRET_KEY>"
  region = "bj"
}

# 创建源 bucket
resource "baiducloud_bos_bucket" "source" {
  bucket = "source-bucket"
  acl    = "public-read-write"
}

# 创建目标 bucket
resource "baiducloud_bos_bucket" "dest" {
  bucket = "destination-bucket"
  acl    = "public-read-write"
}

data "baiducloud_zones" "default" {}

# 创建函数,关于函数的更多信息可查看 https://cloud.baidu.com/doc/CFC/s/xjwvz450q
resource "baiducloud_cfc_function" "default" {
  function_name = "image-process"
  description   = "my function to process images"
  
  # 指定函数的环境变量,示例函数执行时会读取这些变量以初始化相关 client
  # 将您创建的图像效果增强应用的参数填入
  environment = {
    "APP_ID" : "<YOUR_AIP_ID>"
    "AIP_KEY" : "<YOUR_AIP_KEY>"
    "AIP_SECRET_KEY" : "<YOUR_AIP_SECRET_KEY>"
    "DEST_BUCKET" : "destination-bucket"    
  }
  handler        = "index.handler"
  memory_size    = 128
  runtime        = "nodejs12"
  time_out       = 10
  
  # 函数 zip 包的相对或绝对路径,本示例中请填写您刚下载的 aip-image-process.zip 的路径
  code_file_name = "</PATH/OF/FUNCTION>"
  
  # 配置函数日志存储地址
  log_type    = "bos"
  log_bos_dir = baiducloud_bos_bucket.dest.bucket
}

# 创建 bos 触发器
resource "baiducloud_cfc_trigger" "bos-trigger" {
  source_type    = "bos"
  bucket         = baiducloud_bos_bucket.source.bucket
  target         = baiducloud_cfc_function.default.function_brn
  name           = "myBosTrigger"
  status         = "enabled"
  
  # 当 /images/ 目录下有文件上传时,会触发函数执行
  bos_event_type = ["PutObject", "PostObject"]
  resource       = "/images/*"
}

您可再创建一个可选的文件 output.tf,Terraform 成功创建资源后会根据此文件打印资源信息,示例如下:

output "cfc_functions" {
  value = "${baiducloud_cfc_function.default}"
}

output "bos_trigger" {
  value = "${baiducloud_cfc_trigger.bos-trigger}"
}
  1. 执行命令 terraform init,Terraform 会根据当前配置文件初始化工作空间。然后执行 terraform apply,根据提示输入"yes",即自动执行资源创建。执行结束后,您可到百度云控制台查看新创建的函数、触发器和 Bucket。

手动部署

您也可以手动分别创建函数、触发器和 Bucket,具体操作如下:

  1. CFC 有一个名为 aip-image-process 的函数模板,您可使用该模板生成您自己的函数,具体操作请参考 使用模板创建函数。
  2. 创建 2 个 Bucket,source-bucket 用于接收上传的图像源文件,destination-bucket 用于存储 CFC 函数处理后的图像文件,具体操作请参考 创建 Bucket。
  3. 为函数创建 BOS 触发器,选择刚刚创建的 source-bucket 作为触发源 Bucket,并设置触发器的前缀为 images/,事件类型选择“文件上传”和“表单上传”两项。设置完成后,当图像文件上传到该 Bucket 的 images/ 路径下后,BOS 就会自动调用函数。具体操作方法请参考 创建 BOS 触发器。

功能验证

  1. 在 BOS 的控制台,上传黑白图片到 source-bucket 的 images/ 目录下,本例使用下图:

  1. 随后进入 destination-bucket,在 images/ 目录下即可看到同名的、已处理好的图像文件。查看该文件,显示如下:

3. 在 CFC 控制台查看函数的日志、监控,可看到函数被调用了一次。

总结

基于函数计算 CFC 搭建图像处理应用,您无需管理服务器等基础设施,只需关注图像处理等业务逻辑代码。借助 Terraform,您可以一键搭建函数运行环境,快速配置各种触发器、对象存储 BOS、虚机 BCC 等多种资源,实现应用的快速上线。

相似文档
  • 在我们进行Web API的相关开发过程中,偶尔需要对系统进行 API 的增加或者迁移,在系统逻辑较为复杂的情况下,进行 API 的扩充或者迁移往往工作量较大。此时,使用 CFC 以及百度云 TableStorage 则可以简单地实现 API 的托管,从而减少系统的负载,同时增加接口的可移植性。
  • 百度云CFC Flask框架模版旨在实现flask-web serverless化,用户可通过该模版的示例代码,使用url去访问函数。 使用场景: Flask-web应用,如Flask url构建。 环境准备: 安装Python3及以上运行环境。
  • 本文将介绍如何将Spring Boot应该迁移部署到函数计算。 环境准备: 安装OpenJDK 1.8.0及以上运行环境 迁移应用: 如果您还没有开通CFC服务,请参考函数计算开通;如果您已开通,则可以跳过该步骤。 创建一个spring boot项目。 引入百度云函数计算SDK。
  • 协议生效时间:2021年05月18日。 本服务等级协议(Service Level Agreement,以下简称 "SLA")规定了百度智能云向客户提供的函数计算服务CFC(简称"CFC")的服务可用性等级指标及赔偿方案。
  • 百度智能云容器镜像服务(Cloud Container Registry,简称CCR)是面向容器镜像、Helm Chart等符合OCI规范的云原生制品安全托管以及高效分发平台。CCR支持在多个地域创建独享托管服务,具备多种安全保障;支持同步容器镜像等云原生制品,与容器引擎CCE等服务无缝集成,助力企业提升云原生容器应用交付效率。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部