[转载] 阿里云函数计算支持 API 网关,欢迎来玩
原文地址:https://www.v2ex.com/t/368118
阿里云发布函数计算服务已经一个多月了,函数计算按量付费,弹性伸缩的特性,深受开发者青睐。使用函数计算,开发者可以轻松构建 Serverless 的服务,例如结合 OSS 使用,可以对上传到 OSS 的图片自动地触发函数进行转码处理。
现在函数计算更进一步,与API 网关集成,开发者可以使用函数计算来搭建弹性伸缩的 Web 后端服务,甚至可以直接将整个网站构建在 API 网关+函数计算上面。
API 网关和函数计算的集成,极大地简化了开发者构建一个服务的流程:
- 无需管理服务器,再也不用担心服务器突然宕机了
- 按量付费,0 成本创业
- 实时伸缩,无论是 1 万还是 100 万用户,都能轻松应对
- 无需运维,只管开发你的函数就行了
图中的网站完全构建在 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
参考文档: