V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rockuw
V2EX  ›  推广

阿里云函数计算支持 API 网关,欢迎来玩

  •  1
     
  •   rockuw · 2017-06-13 16:19:55 +08:00 · 4057 次点击
    这是一个创建于 2722 天前的主题,其中的信息可能已经有所发展或是发生改变。

    阿里云发布函数计算服务已经一个多月了,函数计算按量付费,弹性伸缩的特性,深受开发者青睐。使用函数计算,开发者可以轻松构建 Serverless 的服务,例如结合 OSS 使用,可以对上传到 OSS 的图片自动地触发函数进行转码处理。

    现在函数计算更进一步,与API 网关集成,开发者可以使用函数计算来搭建弹性伸缩的 Web 后端服务,甚至可以直接将整个网站构建在 API 网关+函数计算上面。

    API 网关和函数计算的集成,极大地简化了开发者构建一个服务的流程:

    • 无需管理服务器,再也不用担心服务器突然宕机了
    • 按量付费,0 成本创业
    • 实时伸缩,无论是 1 万还是 100 万用户,都能轻松应对
    • 无需运维,只管开发你的函数就行了

    APIGateway and FC

    图中的网站完全构建在 API 网关和函数计算上面,函数的代码也很简单:

    'use strict';
    
    var OSSClient = require('ali-oss').Wrapper;
    var fs = require('fs');
    var template = fs.readFileSync('/code/index.html').toString();
    
    exports.handler = function(event, context, callback) {
      console.log(event.toString());
    
      var ossClient = new OSSClient({
        accessKeyId: context.credentials.accessKeyId,
        accessKeySecret: context.credentials.accessKeySecret,
        stsToken: context.credentials.securityToken,
        region: 'oss-cn-shanghai',
        bucket: 'rockuw-sh-2',
      });
    
      var evtObj = JSON.parse(event.toString());
      var sourceIP = evtObj.headers['X-Forwarded-For'] || 'The Earth';
      var counter = 0;
      var counterObject = 'my-images/counter';
      var response = {
        isBase64Encoded: false,
        statusCode: 200,
        body: '',
      };
    
      ossClient.get(counterObject).then(function(res) {
        counter = parseInt(res.content.toString());
        return ossClient.put(counterObject, new Buffer(counter+1+''));
      }).then(function(res) {
        response.body = template
          .replace('{ecalper-counter}', counter+'')
          .replace('{ecalper-ip}', sourceIP);
        callback(null, response);
      }).catch(function(err) {
        console.error(err);
        response.statusCode = 500;
        response.body = 'Oops! ' + err.toString();
        callback(null, response);
      });
    };
    

    公测申请: https://www.aliyun.com/product/fc

    参考文档:

    3 条回复    2017-06-19 08:00:01 +08:00
    heimeil
        1
    heimeil  
       2017-06-13 16:24:01 +08:00 via Android
    Serverless 还行
    tingbao94
        2
    tingbao94  
       2017-06-14 14:28:43 +08:00
    赞啊!好牛
    thewei
        3
    thewei  
       2017-06-19 08:00:01 +08:00
    @rockuw 有结合数据库的例子吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.