通过函数计算FC的预置模板,新用户可以很快的完成服务搭建,并且以极低的时间和资金成本完成以前大量的服务和繁琐的步骤,同时Serverless也是近几年来不断发展的一个技术趋势,以弹性伸缩的方式来降低成本和解决服务高可用的问题,使资源变得灵活
本项目是将世界上最流行的 web 框架 wordpress 部署到阿里云 Serverless 平台(函数计算 FC)
通过 Serverless Devs 开发者工具,您只需要几步,就可以体验 Serverless 架构,带来的降本提效的技术红利。
通过本次的Serverless函数计算征集令活动,作为一个阿里云的Serverless新手,写出该教程,可以很快速的上手,值得一说的是阿里云所提供的 通过模板创建应用 这一点,提供的模板很丰富,相较于AWS Lambda来说,对于国内用户是非常友好的,毕竟有很多非常适合新手使用的模板,由于本次是阿里云社区推出的Serverless活动,那么用户来使用这些服务是免费的,这里又不得不提到腾讯了,就在上个月腾讯的函数应用已经开始收费了,这对于新手想要入门Serverless,阿里云无疑是最好的选择,本文开始会为大家做一个基础的演示,包含视频和文字,各位读者按需操作吧。
这里来使用阿里云函数计算FC来创建高可用的Wordpress应用,其实是一个很好的选择,在这里使用Serverless,那么弹性和成本得到了很好的体现,用户在搭建的时候就无需再去额外的购买容器或者ECS云服务器这些资源,更为突出的一点是 快 ,整个流程,用户只需要 点点点,相较于传统来部署Wordpress,用户所需要做的操作并不少,例如下载Wordpress包,数据库,改代码,考虑是否使用LAMP还是LNMP架构。那么在本教程中,您将体验到极致的部署速度和极其简单的操作步骤。
Bilibili:https://www.bilibili.com/video/BV1Kf4y1Z7Nn/
阿里云开发者社区视频:https://developer.aliyun.com/live/249606?spm=a2c6h.26396819.creator-center.6.2aef3e18EC2bLq
首先进入阿里云 函数计算FC的控制台
函数计算FC:https://fcnext.console.aliyun.com
########################################################
RAM控制台:https://ram.console.aliyun.com/
{
"Statement": [
{
"Effect": "Allow",
"Action": "alinlp:*",
"Resource": "*"
}
],
"Version": "1"
}
函数计算FC控制台:https://fcnext.console.aliyun.com/cn-shanghai/services
### Aliyun
# -*- coding: utf-8 -*-
import json
import base64
from aliyunsdkalinlp.request.v20200629 import GetSaChGeneralRequest
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
def handler(event, context):
event= json.loads(event)
client = AcsClient(
"AK",
"SK",
"cn-hangzhou"
);
request = GetSaChGeneralRequest.GetSaChGeneralRequest()
# 因为api传递进来的event是 base64加密过的,所以需要对body解密
request.set_Text(base64.b64decode(event['body']))
# request.set_OutType("1")
request.set_ServiceCode("alinlp")
# request.set_TokenizerId("GENERAL_CHN")
response = client.do_action_with_exception(request)
resp_obj = json.loads(response)
return {
'headers': { "Content-Type": "application/json" },
'statusCode': 200,
'body': json.loads(resp_obj['Data'])['result']
}
# 将依赖包下载到本地目录中
pip install aliyun-python-sdk-alinlp==1.0.16 -t .
API网关控制台:https://apigateway.console.aliyun.com/cn-shanghai/apis/list#/cn-shanghai/overView/view
nlp控制台,需要预先开通:https://alinlp.console.aliyun.com/overview
因为阿里云oss托管需要另外使用域名,这里就用AWS的S3来托管页面
一键访问:http://stanbck.s3-website.ap-east-1.amazonaws.com
### AWS
import json
import boto3
comprehend = boto3.client(service_name='comprehend', region_name='us-east-1')
def lambda_handler(event, context):
print("Event",event['body'])
Text = event['body']
LanguageCode = comprehend.detect_dominant_language(Text=Text)
comprehend_sentiment = comprehend.detect_sentiment(Text = Text,LanguageCode=LanguageCode['Languages'][0]['LanguageCode'])
return {
'headers': { "Content-Type": "application/json" },
'statusCode': 200,
'body': comprehend_sentiment
}
### Tencent
# -*- coding: utf8 -*-
import json
import os
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.nlp.v20190408 import nlp_client, models
def main_handler(event, context):
print("the event source:",event)
print("the post body type:",type(event['body']))
# print("The event:",json.loads(event['body']))
if isinstance(event['body'],str):
Text = event['body']
else:
Text = json.loads(event['body'])
print(Text)
try:
cred = credential.Credential(
os.environ.get("TENCENTCLOUD_SECRETID"),
os.environ.get("TENCENTCLOUD_SECRETKEY"),
os.environ.get('TENCENTCLOUD_SESSIONTOKEN'))
# 实例化一个http选项,可选的,没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "nlp.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = nlp_client.NlpClient(cred, "ap-guangzhou", clientProfile)
# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.SentimentAnalysisRequest()
params = {
"Text": Text,
"Mode":"3class"
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个SentimentAnalysisResponse的实例,与请求对象对应
resp = client.SentimentAnalysis(req)
# 输出json格式的字符串回包
print(type(resp.to_json_string()))
# print("The out :",resp)
return {
'headers': { "Content-Type": "application/json" },
'statusCode': 200,
'body': resp.to_json_string()
}
except TencentCloudSDKException as err:
print(err)