手动部署

70

https://www.aliyun.com/solution/tech-solution/fc-drive-file

方案概览

在企业办公应用或社交媒体应用中,通常需要处理各种类型的文件,如图片、视频和文档。这些文件处理任务包括格式转换、水印添加和内容审核等。文件处理任务往往会消耗大量的计算、存储和网络资源,如果长时间占用这些资源,可能会影响应用的核心功能,进而影响业务稳定性。本方案通过在应用中使用函数计算来处理文件,利用事件驱动和异步任务的方式,将文件处理与核心应用解耦。函数计算具备自动弹性扩展和按使用付费的优势,可以提升文件处理效率和服务稳定性。

方案架构

本方案使用云服务器ECS和RDS MySQL版提供WEB服务,通过对象存储OSS存储用户文件。采用服务端签名的WEB直传方式,将文件上传直接发送到OSS,减少对应用网络资源的占用。文件上传到OSS后,通过事件驱动机制触发函数计算执行文件处理任务(示例代码是将PPT转换为PDF并添加水印)。处理完成后,通过OSS事件触发的轻量消息队列(原MNS)通知应用。

方案提供的默认设置完成部署后在阿里云上搭建的架构如下图所示。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1个专有网络VPC:为云服务器ECS、云数据库RDS MySQL版等云资源构建云上私有网络。

  • 2台交换机: 分别用于链接云服务器ECS实例和云数据库RDS MySQL版实例。

  • 1台云服务器ECS实例:用于部署业务系统,提供应用服务。

  • 1个云数据库RDS MySQL版实例:为业务系统提供数据服务。

  • 1个对象存储OSS Bucket:用于存储用户上传的文件和处理后的文件。

  • 1个函数计算函数:用于文件处理,解耦在线用户服务和文件处理。

  • 1个轻量消息队列(原MNS):通过感知对象存储OSS Bucket中文件变化,通知应用服务文件处理完成。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值等准备工作。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。

部署资源

30

请按照以下步骤部署方案中的所有资源。

创建专有网络VPC和交换机

为了实现高可用,您需要将云服务器等资源尽可能分布在多个可用区,规避单可用区故障造成的服务不可用。本方案以双可用区为例,因此,您需要创建1个专有网络和2个交换机。

  1. 登录专有网络管理控制台

  2. 在左侧导航栏,单击专有网络。在顶部菜单栏,选择华东1(杭州)地域。

  3. 专有网络页面,单击创建专有网络

  4. 创建专有网络页面,配置1个专有网络和2台交换机。在配置交换机时,请确保其所在的可用区内的相关资源均处于可用状态,以保证后续操作的顺利进行。

    下表中未提及的配置项请使用默认值。

    项目

    说明

    示例值

    VPC名称

    建议您在部署过程中新建一个VPC作为本方案的专有网络。部署过程中填写VPC名称即可创建对应名称的VPC。

    长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。

    VPC_HZ

    IPv4网段

    在创建VPC时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云VPC支持的网段信息请参见专有网络组成部分

    在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。

    192.168.0.0/16

    交换机名称

    建议您在部署过程中在新建的VPC内创建虚拟交换机。部署过程中填写交换机名称即可创建对应名称的虚拟交换机。

    长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。

    • vsw_001

    • vsw_002

    可用区

    在规划的地域内选择2个可用区,2台虚拟交换机分别部署在2个可用区。

    建议选择排序靠后的,一般此类可用区较新。新可用区资源更充沛,新规格也会在新的可用区优先上线。

    • vsw_001:可用区 J

    • vsw_002:可用区 K

    IPv4网段

    每台虚拟交换机需要一个IPv4网段。

    • vsw_001:192.168.1.0/24

    • vsw_002:192.168.2.0/24

创建安全组

接下来,您需要创建1个安全组,以管理该安全组内相关云资源的网络流入和流出,确保网络访问的安全性。

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择网络与安全>安全组

  3. 在顶部菜单栏,选择华东1(杭州)地域。

  4. 安全组页面,单击创建安全组

  5. 创建安全组页面,创建安全组。

    项目

    说明

    示例值

    安全组名称

    设置安全组的名称。

    SecurityGroup_1

    网络

    选择之前规划的专有网络VPC。

    VPC_HZ

    安全组类型

    本方案需从公网拉取相关软件,因此选择普通安全组,以实现公网出方向所有地址可访问。实际部署时,建议选择安全性更高的企业级安全组。

    普通安全组

    入方向

    仅需要开启80端口号即可,其它端口号删除。

    80

创建云服务器ECS

接下来,您需要创建1个云服务器ECS实例,以用于部署相关应用程序。

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像>实例

  3. 在顶部菜单栏,选择华东1(杭州)地域。

  4. 实例页面,单击创建实例

  5. 在云服务器ECS购买页面,创建云服务器ECS。

    项目

    说明

    示例值

    付费类型

    付费类型影响实例的计费和收费规则。ECS 计费的详细信息请参见计费方式概述

    按量付费

    地域

    实例所在地域

    华东1(杭州)

    网络及可用区

    选择VPC及交换机。

    VPC_HZ、vsw_001

    实例

    ECS 的实例规格及内核、vCPU数量。关于 ECS 选型的最佳实践请参见实例规格选型指导

    ecs.c6.large(2 vCPU 4 GiB)

    镜像

    ECS 的“装机盘”,为 ECS 实例提供操作系统、预装软件等。

    公共镜像中选择 Alibaba Cloud Linux

    镜像版本

    镜像的版本。

    Alibaba Cloud Linux 3.2104 LTS 64位

    系统盘类型

    硬盘类型。

    ESSD云盘

    系统盘容量

    硬盘容量。

    40 GiB

    公网IP

    用于在云服务器ECS中从公网下载相关应用程序。

    选中分配公网 IPv4 地址

    带宽计费模式

    由于本方案为解决方案示例,因此选择按使用流量,以节省流量成本。

    按使用流量

    带宽峰值

    本方案以5 Mbps为例。

    5 Mbps

    安全组

    使用之前创建的安全组。选择已有安全组

    SecurityGroup_1

    管理设置

    选择设置自定义密码,方便后续登录机器安装服务环境。

    自定义密码

创建云数据库 RDS MySQL实例

接下来您需要创建云数据库RDS MySQL实例、数据库、数据库账号。您需要记录创建的云数据库的内网连接地址、数据库名称、账号、密码用于之后的服务端配置。

  1. 登录云数据库RDS控制台

  2. 创建云数据库 RDS MySQL 实例:

    1. 在左侧导航栏,选择实例列表

    2. 在顶部菜单栏,选择华东1(杭州)地域。

    3. 实例列表页面,单击创建实例,在购买页面按照以下配置完成数据库实例创建。

      项目

      说明

      示例值

      计费方式

      支持包年包月、按量付费和Serverless。本方案以按量付费为例。

      按量付费

      地域

      本方案以华东1(杭州)地域为例。

      华东1(杭州)

      引擎

      本方案以MySQL为例。

      MySQL 8.0

      产品系列

      本方案采用单节点部署,性价比高,用于学习或测试。

      基础系列

      存储类型

      RDS 的数据存储类型。关于 RDS 数据存储类型的对比,请参见存储类型

      ESSD PL1 云盘

      VPC

      选择网络规划中创建的专有网络 VPC。

      VPC_HZ

      加入白名单

      将 VPC 网段加入到 RDS 实例白名单中,使得同一 VPC 下的 ECS 实例可以访问 RDS 实例。

      主可用区及网络

      选择云服务 ECS 实例的交换机作为 RDS 主节点交换机。

      vsw_002:192.168.2.0/24

      实例规格

      RDS 的实例规格及内核、vCPU 数量。关于 RDS 选型请参见产品系列概述

      mysql.n2e.medium.1

      存储空间

      存储空间的最小调整量为5GB。部分实例(基于本地SSD盘)的存储空间大小与实例规格绑定,SSD 云盘不受此限制。

      40GB

  3. 进入实例基本信息页面:

    1. RDS管理控制台左侧导航栏,选择实例列表

    2. 实例列表页面,单击目标实例,进入实例管理页面。

  4. 创建数据库:

    1. 在左侧导航栏,选择数据库管理

    2. 单击创建数据库

    3. 创建数据库面板,设置数据库名称,支持字符集建议选择utf8,选择授权账号为上一步创建的账号,然后单击创建

  5. 创建数据库账号:

    1. 在左侧导航栏,选择账号管理

    2. 用户账号页签下,单击创建账号

    3. 创建账号面板,设置数据库账号名称,选择账号类型为普通账号,设置密码,然后单击确定

  6. 设置白名单:

    1. 在左侧导航栏,选择白名单与安全组

    2. 在顶部Tab页签,选择安全组,单击添加安全组按钮。

    3. 选择安全组面板,选择规划的安全组,然后单击确定

  7. 获取数据库的内网地址:

    1. 在左侧导航栏,选择数据库连接

    2. 数据库连接区域下,复制内网地址

创建轻量消息队列(原MNS)

接下来您需要创建一个轻量消息队列(原MNS),使用轻量消息队列(原MNS)订阅对象存储OSS Bucket中的文件变更,感知函数计算处理文件完成后上传到Bucket的文件上传事件。

  1. 登录轻量消息队列(原MNS)控制台

  2. 在左侧导航栏,单击队列列表

  3. 在顶部菜单栏,选择华东1(杭州)地域。

  4. 队列列表页面,单击创建队列

  5. 创建队列面板配置以下参数,然后单击确定

    字段

    描述

    示例

    名称

    队列名称

    oss-queue

    消息最大长度

    发送到队列的消息体的最大长度

    64

    长轮询时间

    当队列中没有消息时,该队列的ReceiveMessage请求的最大等待时长。

    0

    消息可见性超时时间

    消息从队列中取出后从Active状态变成Inactive状态后的持续时间。

    30

    消息保存时长

    消息在队列中的最长存活时间。从发送到队列开始经过此参数指定的时间后,不论消息是否被取出都将被删除。

    4

    消息延时时间

    发送到队列的所有消息将延后此参数指定的时间后被消费。

    0

    启用日志功能

    是否开启日志管理功能。

创建对象存储OSS Bucket

接下来您需要创建一个对象存储OSS Bucket用于存储用户上传的文件和函数计算处理后的文件。

创建Bucket

  1. 登录OSS管理控制台

  2. 在左侧导航栏,选择Bucket 列表

  3. Bucket 列表页面,单击创建 Bucket

  4. 创建 Bucket面板,创建1个Bucket。

    项目

    说明

    示例值

    Bucket名称

    Bucket 命名规范:

    • 命名长度为3~63个字符。

    • 只允许小写字母、数字、短横线(-),且不能以短横线开头或结尾。

    • Bucket名称在OSS范围内必须全局唯一。

    test-bucket

    地域

    本方案以华东1(杭州)为例。

    华东1(杭州)

    存储类型

    存储类型 ,创建成功后不支持修改。本方案以标准存储为例。

    标准存储

    存储冗余类型

    选择采用多可用区(AZ)冗余机制的同城冗余存储,将用户的数据分散存放在同一地域的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。

    同城冗余存储

    读写权限

    设置数据访问权限。

    私有

配置Bucket可跨域访问

  1. 进入目标Bucket,在左侧导航栏,选择数据安全 > 跨域设置

  2. 跨域设置页面,单击创建规则

  3. 创建跨域规则面板,按照界面提示创建跨域规则,您可以按以下说明设置跨域规则。

    参数

    说明

    示例

    来源

    指定允许的跨域请求的来源。配置规则如下:

    • 允许多条匹配规则,多条规则需换行填写。

    • 域名需包含协议名,例如HTTP、HTTPS。

    • 支持通配符星号(*),每条匹配规则最多允许使用一个星号(*)。

    • 如果域名使用的不是默认端口,还需要携带端口号。例如https://www.example.com:8080

    域名配置示例如下:

    • 匹配指定域名时,填写完整域名,例如https://www.example.com。

    • 匹配泛二级域名,可使用通配符星号(*)。例如https://*.example.com。

    • 匹配所有域名,可直接填写通配符星号(*)。

    *

    允许 Methods

    指定允许的跨域请求方法。

    GET、POST、HEAD

    允许 Headers

    指定允许跨域请求的响应头。配置规则如下:

    • 格式为key:value,例如content-type:text/plain,大小写不敏感。

    • 允许多条匹配规则,多条规则需换行填写。

    • 支持通配符星号(*),每条匹配规则最多允许使用一个星号(*)。建议没有特殊需求的情况下设置为星号(*)。

    *

    暴露 Headers

    指定允许用户从应用程序中访问的响应头,例如一个JavaScript的XMLHttpRequest对象。不允许使用星号(*)通配符。

    建议暴露的常见Headers如下:

    • x-oss-request-id

      在您使用OSS服务遇到问题时,请凭借此Request ID请求技术支持协助排查并解决您遇到的问题。

    • ETag

      可用于检查Object内容是否发生变化。

    不填

    缓存时间(秒)

    指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。

    0

    返回 Vary: Origin

    配置是否返回Vary: Origin Header

    如果实际应用中同时存在CORS和非CORS请求,或者Origin头有多种可能值时,建议选中返回 Vary: Origin以避免本地缓存错乱。

    不选择

配置事件通知

  1. 在左侧导航栏,选择数据处理>事件通知

  2. 事件通知页面,单击创建规则

  3. 创建规则面板,按照页面提示创建事件规则,配置以下参数:

    参数

    说明

    示例

    规则名称

    设置事件通知规则的名称。

    相同账号在同一地域下创建的规则名称不能重复。规则名称必须以英文字母开头,只能包含大小写字母、数字和短划线(-),长度不超过85个字符。

    processed-completed

    事件类型

    为目标Object配置事件类型。例如,您希望接收到目标Object通过拷贝操作创建或覆盖文件的事件通知,请将事件类型配置为CopyObject。

    有关事件类型对应Object操作的更多信息,请参见通过事件通知实时处理OSS文件变动

    ObjectCreated:PutObject、ObjectCreated:PostObject

    对象匹配 > 匹配规则

    设置事件通知涉及的目标Object。

    • 通过全名匹配目标Object

      • 如果要匹配Bucket根目录下名为exampleobject.txt的目标Object,则填写为exampleobject.txt

      • 如果要匹配Bucket根目录下destdir目录中名为myphoto.jpg的目标Object,则填写为destdir/myphoto.jpg

    • 通过前后缀匹配目标Object

      • 如果要匹配Bucket内的所有Object,则前缀和后缀均置空。

      • 如果要匹配Bucket根目录下examplefolder目录中的所有Object,则前缀填写为examplefolder/,后缀置空。

      • 如果要匹配Bucket内所有JPG格式的Object,则前缀置空,后缀填写为.jpg

      • 如需匹配Bucket根目录下examplefolder目录中所有MP3格式的Object,则前缀填写为examplefolder/,后缀填写为.mp3

    您可以单击添加按钮,创建最多5条资源描述

    前后缀

    • 前缀processed

    • 后缀.pdf

    订阅终端

    设置事件的接收终端,支持HTTP队列

    • HTTP:填写接收事件通知的HttpEndpoint地址,例如http://198.xx.xx.0:8080。搭建HttpEndpoint的具体操作,请参见主题使用示例HttpEndpoint

    • 队列:填写您在轻量消息队列(原MNS)中创建的队列名称。创建队列的具体操作,请参见创建队列

    您可以单击添加按钮,创建最多5个接收终端

    队列

    oss-queue

    以上步骤配置完成后,事件通知规则约10分钟后生效。

创建角色和权限策略

接下来您需要创建自定义角色并授权。角色可以与ECS实例和函数关联起来。当您需要在ECS实例中的应用程序或函数中访问其他云资源时,可以通过角色获取STS临时凭证访问其他云资源,避免在代码中明文使用长期AccessKey,减少AccessKey泄露风险。

创建角色

  1. 登录RAM控制台

  2. 在左侧导航栏,选择身份管理>角色

  3. 角色页面,单击创建角色

  4. 创建角色页面,选择信任主体类型云服务信任主体名称选择云服务器ECS,然后单击确定

  5. 输入角色名称。

修改信任策略

  1. 角色页面,单击目标RAM角色名称。

  2. 信任策略页签,编辑并保存信任策略。修改信任策略如下:

    说明

    本例为了简化操作,将授权云服务器ECS实例的角色和授权函数计算服务的角色设定为一个角色,在您真实的应用中建议您分别为云服务器ECS实例和函数计算创建角色,隔离不同服务的权限,最小化精准授权。

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "ecs.aliyuncs.com",
              "fc.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }

创建自定义权限策略

  1. 在左侧导航栏,选择权限管理 > 权限策略

  2. 权限策略页面,单击创建权限策略

  3. 创建权限策略页面,单击脚本编辑页签。

  4. 输入如下权限策略内容,然后单击继续编辑基本信息

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss:PutObject",
                    "oss:GetObject",
                    "oss:GetObjectMeta",
                    "mns:ReceiveMessage",
                    "mns:BatchReceiveMessage",
                    "mns:DeleteMessage"
                ],
                "Resource": "*"
            }
        ]
    }

  5. 输入权限策略名称备注。如FcDemoPolicy

  6. 单击确定

为角色授权

  1. 在左侧导航栏,选择身份管理 > 角色

  2. 角色页面,单击刚刚创建的RAM角色名称。

  3. 权限管理页签,单击精确授权

    image

  4. 精确授权面板,选择权限策略类型为自定义策略,然后输入刚刚创建的权限策略名称。

  5. 单击确定

绑定实例角色

  1. 登录ECS管理控制台,在实例列表页面,找到刚刚创建的实例,选择图标 > 实例设置 > 授予/收回RAM角色

  2. 在对话框中,选择创建好的实例RAM角色,单击确定完成授权。

部署应用

20

配置服务器并部署应用

  1. 远程连接云服务器ECS。

    1. 登录ECS管理控制台,在实例页面,找到前面步骤所创建的 ECS 实例。

    2. 在右侧操作列,单击远程连接,并选择通过Workbench远程连接。根据页面提示登录,进入终端页面。具体操作请参见:使用Workbench登录ECS实例

      说明

      如果系统弹出“安全组白名单开通提示”面板, 请按照页面引导完成端口一键添加。

  2. 执行以下命令设置环境变量

    说明

    请将<>占位符及其中的值替换为真实配置。

    1. <数据库连接地址>、<数据库用户名>、<数据库名称>在数据库列表页进入实例的详情页,从左侧账号管理和数据库连接页面获取。

    2. <角色名称>可以在角色列表页获取。

    3. <外网访问 OSS endpoint>、<OSS region>、<OSS bucket name>在OSS Bucket列表页进入Bucket详情页获取。OSS endpoint 如oss-cn-hangzhou.aliyuncs.com,OSS region 如cn-hangzhou

    4. <ECS实例公网IP>在ECS实例列表页查看。

    5. <轻量消息队列(原MNS) endpoint>、<轻量消息队列(原MNS)名称>在轻量消息队列(原MNS)页,进入队列详情页查看接入点。轻量消息队列(原MNS) endpoint使用内网地址,如http://xxx.mns.cn-hangzhou-internal.aliyuncs.com

    6. 自定义设置<自定义界面登录用户名>和<自定义界面登录密码>。(为了防止IP泄露被人恶意访问,示例代码提供了登录校验,登录账号密码通过下面的环境变量进行设置。)

    cat << EOF >> ~/.bashrc
    export APPLETS_RDS_ENDPOINT=<数据库连接地址>
    export APPLETS_RDS_USER=<数据库用户名>
    export APPLETS_RDS_PASSWORD=<数据库密码>
    export APPLETS_RDS_DB_NAME=<数据库名称>
    export ALIYUN_RAM_ROLE_NAME=<角色名称>
    export ALIYUN_OSS_ENDPOINT=<外网访问 OSS endpoint>
    export ALIYUN_REGION_ID=<OSS region>
    export ALIYUN_OSS_BUCKET=<OSS bucket name>
    export ECS_IP=<ECS实例公网IP>
    export ALIYUN_MNS_ENDPOINT=<轻量消息队列(原MNS) endpoint>
    export ALIYUN_MNS_QUEUE=<轻量消息队列(原MNS)名称>
    export WANX_DEMO_USERNAME=<自定义界面登录用户名>
    export WANX_DEMO_PASSWORD=<自定义界面登录密码>
    EOF
    
    source ~/.bashrc
    1. 执行以下命令,部署并运行示例应用。

      curl -fsSL https://help-static-aliyun-doc.aliyuncs.com/install-script/fc-drive-file/install.sh|bash

      看到如下信息表示启动成功,接下来准备进行函数配置。

      Installation completed.

创建并配置函数

接下来您需要创建函数计算函数,用于感知OSS Bucket中用户上传的文件,进行处理,然后将处理后的文件上传到OSS Bucket中。

创建函数

  1. 登录函数计算3.0控制台,在左侧导航栏,单击函数。

    当左上角显示函数计算 FC 3.0时,表示当前控制台为3.0控制台。image

  2. 在顶部菜单栏,选择地域,然后在函数列表页面,单击创建函数

  3. 创建函数页面,选择事件函数,配置以下配置项,然后根据页面提示完成创建。

    • 基础配置:设置函数名称

    • 函数代码:配置函数的运行环境和代码相关信息。

      配置项

      说明

      示例

      运行环境

      选择您熟悉的语言,例如Python、Java、PHP或Node.js等。

      Java 11

      代码上传方式

      选择代码上传到函数计算的方式。

      • 使用示例代码:默认方式,您可以根据业务需要选择函数计算为您提供的创建函数的示例代码。

      • 通过 JAR 包上传代码:选择函数代码JAR包并上传。

      • 通过 OSS 上传代码:选择上传函数代码的Bucket 名称文件名称

      通过 JAR 包上传代码

      下载并上传代码包

    • 高级配置:配置函数的实例相关信息和函数执行超时时间等。

      配置项

      说明

      示例

      规格方案

      根据您的业务情况,选择或手动输入合理的vCPU规格内存规格组合。关于各资源使用的计费详情,请参见计费概述

      说明

      vCPU大小(单位为核)与内存大小(单位为GB)的比例必须设置在1:1到1:4之间。

      0.35核,512 MB

      临时硬盘大小

      根据您的业务情况,选择临时存储文件的硬盘大小。

      说明

      取值说明如下。

      • 512 MB:默认值。不计费,函数计算为您提供512 MB以内的硬盘免费使用额度。

      • 10 GB:按9.5 GB进行计费。

      512 MB

      执行超时时间

      设置超时时间。执行超时时间默认为60秒,最长为86400秒。

      60

      请求处理程序

      设置请求处理程序,函数计算的运行时会加载并调用您的请求处理程序处理请求。

      com.aliyun.demo.Main::handleRequest

      时区

      选择函数的时区。此处设置函数的时区后,将自动为函数添加一条环境变量TZ,其值为您设置的目标时区。

      UTC

      函数角色

      函数计算平台会使用这个RAM角色来生成访问您的阿里云资源的临时密钥,并传递给您的代码。更多信息,请参见使用函数角色授予函数计算访问其他云服务的权限

      之前创建的角色名称

      允许访问 VPC

      是否允许函数访问VPC内资源。更多信息,请参见配置网络

      允许函数默认网卡访问公网

      是否允许函数可以通过默认网卡访问公网。关闭后,当前服务中的函数将无法通过函数计算的默认网卡访问公网。

      说明

      使用固定公网IP地址功能时,您必须关闭允许函数默认网卡访问公网,否则配置的固定公网IP地址不生效。更多信息,请参见配置固定公网IP地址

      日志功能

      是否启用阿里云日志服务。取值说明如下:

      • 启用:函数的执行日志被持久化保存到日志服务,方便您进行代码调试、故障分析和数据分析等。

      • 禁用:函数的执行日志将无法通过日志服务存储和查询。

      禁用

创建触发器

  1. 函数页面,单击目标函数。

  2. 在函数配置页面,选择配置页签,在左侧导航栏,单击触发器,然后单击创建触发器

  3. 在创建触发器面板,填写相关信息,然后单击确定

    配置项

    操作

    本文示例

    触发器类型

    选择对象存储 OSS

    对象存储 OSS

    名称

    填写自定义的触发器名称。

    oss-trigger

    版本或别名

    默认值为LATEST,如果您需要创建其他版本或别名的触发器,需先在函数详情页的版本或别名下拉列表选择该版本。关于版本和别名的简介,请参见版本管理别名管理

    LATEST

    Bucket 名称

    选择刚刚创建的OSS Bucket。

    选择刚刚创建的OSS Bucket。

    文件前缀

    输入要匹配的文件名称的前缀。建议您配置文件前缀和后缀,避免触发事件嵌套循环触发引起额外费用。此外,一个Bucket的不同触发器如果指定了相同的事件类型,则前缀和后缀不能重复。详细信息,请参见OSS触发器概述

    说明

    文件前缀不能以/开头,否则会导致OSS触发器无法被触发。

    source

    文件后缀

    输入要匹配的文件名称的后缀。强烈建议您配置前缀和后缀,避免触发事件嵌套循环触发引起额外费用。另外,一个Bucket的不同触发器如果指定了相同的事件类型,则前缀和后缀不能重复。详细信息,请参见OSS触发器概述

    不填

    触发事件

    选择一个或多个触发事件。关于对象存储OSS的事件类型,请参见OSS触发器概述

    • oss:ObjectCreated:PutObject

    • oss:ObjectCreated:PostObject

    • oss:ObjectCreated:CompleteMultipartUpload

    • oss:ObjectCreated:PutSymlink

    角色名称

    选择AliyunOSSEventNotificationRole

    说明

    如果您第一次创建该类型的触发器,则需要在单击确定后,在弹出的对话框中选择立即授权

    AliyunOSSEventNotificationRole

方案验证

10

一、通过上传PPT文件并查看处理结果,验证水印效果

  1. 登录ECS控制台,在左侧菜单栏选择实例,从实例列表中获取ECS实例的公网IP。image

  2. 通过浏览器访问该公网IP,看到如下登录页面后,输入之前配置的用户名和密码,进入文件管理页面。image

  3. 在文件管理页面,单击上传新的文件,在上传文件对话框,上传ppt文件,示例要求必须是pptx文件格式。

    本方案上传文件至OSS时,通过STS服务给前端颁发一个临时访问凭证,本方案临时访问凭证的有效时间为 30 秒。超过有效期后,该凭证自动失效以保证授权安全。更多安全授权方式,请参考客户端直传

    说明

    如果上传完成后一直未展示处理后的文件,您可以在OSS查看对应的文件,上传的源文件存储在OSS的source目录,处理后的文件会存储在processed目录。如果processed目录无对应文件,您可以在函数计算控制台查看函数的实时日志进行排查。

    image

  4. 当状态显示为已完成时,点击下载查看,可发现已经添加水印,并且格式为pdf.。image

    image

二、通过监控函数计算,验证处理过程

  1. 进入函数计算控制台,左侧导航栏,单击函数选项并单击函数名称,如图:

image

  1. 点击监控,可以看到函数计算处理示例PPT格式文件的耗时情况和调用情况。

image

image

3.进入OSS管理控制台,点击Bucket 列表,点击创建的Bucket。

image

  • 上传的源文件存储在OSS的source目录。image

  • 处理后的文件会存储在processed目录。image

资源释放

10

清理资源

在本方案中,您创建了多个云资源。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:

  1. 释放云服务器ECS实例:

    登录ECS控制台,在实例页面,找到目标实例,然后在操作列选择216更多-竖向..png>释放,根据界面提示释放实例。

  2. 释放1个云数据库 RDS MySQL 版实例:

    登录云数据库RDS控制台,在左侧导航栏选择实例列表,找到目标实例,然后在操作列中选择更多>释放实例

  3. 删除安全组:

    登录ECS 控制台,在安全组页面,找到目标安全组,然后在操作列单击删除,按照界面提示删除安全组。

  4. 删除交换机:

    登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示删除交换机。

  5. 释放专有网络VPC:

    登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放专有网络VPC。

  6. 删除对象存储OSS Bucket:

    登录OSS管理控制台,在左侧导航栏,选择Bucket 列表,单击目标Bucket,在文件列表,选择目标文件,然后单击彻底删除。在左侧导航栏,选择删除 Bucket,然后单击立即删除,根据页面提示删除Bucket。

  7. 删除轻量消息队列(原MNS):

    登录轻量消息队列(原MNS)控制台,在左侧导航栏,选择队列列表,在目标队列操作列,选择更多 > 删除,根据页面提示删除队列。

  8. 删除FC应用:

    登录函数计算控制台,在左侧导航栏,选择应用,在应用页面,找到目标应用,在其右侧操作列,单击删除应用,根据页面提示删除应用。

一键部署

30

https://www.aliyun.com/solution/tech-solution/fc-drive-file

方案概览

在企业办公应用或社交媒体应用中,通常需要处理各种类型的文件,如图片、视频和文档。这些文件处理任务包括格式转换、水印添加和内容审核等。文件处理任务往往会消耗大量的计算、存储和网络资源,如果长时间占用这些资源,可能会影响应用的核心功能,进而影响业务稳定性。本方案通过在应用中使用函数计算来处理文件,利用事件驱动和异步任务的方式,将文件处理与核心应用解耦。函数计算具备自动弹性扩展和按使用付费的优势,可以提升文件处理效率和服务稳定性。

方案架构

本方案使用云服务器ECS和RDS MySQL版提供WEB服务,通过对象存储OSS存储用户文件。采用服务端签名的WEB直传方式,将文件上传直接发送到OSS,减少对应用网络资源的占用。文件上传到OSS后,通过事件驱动机制触发函数计算执行文件处理任务(示例代码是将PPT转换为PDF并添加水印)。处理完成后,通过OSS事件触发的轻量消息队列(原MNS)通知应用。

方案提供的默认设置完成部署后在阿里云上搭建的架构如下图所示。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1个专有网络VPC:为云服务器ECS、云数据库RDS MySQL版等云资源构建云上私有网络。

  • 2台交换机: 分别用于链接云服务器ECS实例和云数据库RDS MySQL版实例。

  • 1台云服务器ECS实例:用于部署业务系统,提供应用服务。

  • 1个云数据库RDS MySQL版实例:为业务系统提供数据服务。

  • 1个对象存储OSS Bucket:用于存储用户上传的文件和处理后的文件。

  • 1个函数计算函数:用于文件处理,解耦在线用户服务和文件处理。

  • 1个轻量消息队列(原MNS):通过感知对象存储OSS Bucket中文件变化,通知应用服务文件处理完成。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值等准备工作。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。

一键部署

10

一键部署基于阿里云资源编排服务ROS(Resource Orchestration Service)实现,ROS模板已定义好脚本,可自动化地完成云资源的创建和配置,提高资源的创建和部署效率。ROS模板完成的内容包括:

  • 创建1台ECS实例。

  • 创建1个专有网络VPC。

  • 创建2台交换机。

  • 创建1个云数据库RDS MySQL版实例。

  • 创建1个OSS Bucket。

  • 创建1个函数计算函数。

  • 创建一个轻量消息队列(原MNS)。

  • 创建一个RAM角色。

操作步骤

您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置:

  1. 单击一键部署,在顶部导航栏选择地域,默认华东1(杭州)地域。建议 ECS 配置选择可用区Jecs.c7.large(2 vCPU 4 GB);RDS Mysql 配置选择 mysql.n2e.medium.1(2 vCPU 4 GB)

  2. 在配置页面修改资源栈名称,按需选择和配置参数。

  3. 资源栈信息页面的状态显示为创建成功时表示一键配置完成。

方案验证

10

一、通过上传PPT文件并查看处理结果,验证水印效果

  1. 在资源栈详情页面,单击输出页签image

  2. 在输出页签下,单击url访问服务,看到如下登录页面后,输入之前配置的用户名和密码(可在资源栈详情页面输出页签查看),进入文件管理页面。image

  3. 在文件管理页面,单击上传新的文件,在上传文件对话框,上传ppt文件,示例要求必须是pptx文件格式。

说明

如果上传完成后一直未展示处理后的文件,您可以在OSS查看对应的文件,上传的源文件存储在OSS的source目录,处理后的文件会存储在processed目录。如果processed目录无对应文件,您可以在函数计算控制台查看函数的实时日志进行排查。

image

  1. 当状态显示为已完成时,点击下载查看,可发现已经添加水印,并且格式为pdf.。

image

image

二、通过监控函数计算,验证处理过程

  1. 进入函数计算控制台,左侧导航栏,点击函数选项如下图:

image

  1. 点击监控,可以看到函数计算处理示例PPT格式文件的耗时情况和调用情况。

image

image

3.进入OSS管理控制台,点击Bucket 列表,点击创建的Bucket。

image

  • 上传的源文件存储在OSS的source目录。image

  • 处理后的文件会存储在processed目录。image

资源释放

清理资源

您可以使用ROS一键删除创建的云资源,避免继续产生费用。

  1. 登录ROS控制台

  2. 在左侧导航栏,选择资源栈

  3. 资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除

  4. 删除资源栈对话框,选择删除方式释放资源,然后单击确定,根据提示完成资源释放。