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

2017-06-13 16:19:55 +08:00
 rockuw

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

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

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

图中的网站完全构建在 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

参考文档:

4048 次点击
所在节点    推广
3 条回复
heimeil
2017-06-13 16:24:01 +08:00
Serverless 还行
tingbao94
2017-06-14 14:28:43 +08:00
赞啊!好牛
thewei
2017-06-19 08:00:01 +08:00
@rockuw 有结合数据库的例子吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX