利用 AWS 无服务架构之语音合成
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,一、架构图用户通过前段网页输入文字,通过后台一系列服务转换成语音,并在前段展示,并提供下载功能,整个服务没有使用一台服务器!用户输入文字进行提交;页面通过 API 代码把信息传递给 Lamdba 函数
千家信息网最后更新 2026年11月04日利用 AWS 无服务架构之语音合成
一、架构图

- 用户通过前段网页输入文字,通过后台一系列服务转换成语音,并在前段展示,并提供下载功能,整个服务没有使用一台服务器!
- 用户输入文字进行提交;
- 页面通过 API 代码把信息传递给 Lamdba 函数 NewPost 写入 DynamoDB,并把 postId 传递给 SNS;
- SNS 把 postId 传递给 Lambda 函数 Convert,函数 Convert 通过 postId 去 DynamoDB 查询文本数据,并调用 Polly 进行语音合成;
- 函数 Convert 把合成的语音文件存入 S3 中,更更新数据库状态;
- 用户就可以通过 GET 去获取语音合成的相关信息。
二、服务部署
2.1、创建 DynamoDB 表
很简单,写个表名,写个主键即可,其他默认。
Table name:posts
Primary key:id
2.2、创建 S3
我们创建两个 S3 存储桶,一个用来存放静态网页,一个用来存放语音合成的音频。
2.2.1 静态网页存储桶
- 名称大家随意确定,我这里起的名字为 pollywebsite;
- 打开公共访问权限;
- 启用静态网站托管功能;
- 添加存储桶策略,以便公共用户可以访问,策略如下:
{ "Version": "2012-10-17", "Id": "Policy1562738599054", "Statement": [ { "Sid": "Stmt1562738571491", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::wz-pollywebsite/*" } ]}2.2.2、音频存储桶
- 名字大家随意定,我这里起名字为 pollyaudio;
- 打开公共访问权限。
2.3、创建 SNS Topic
- 名称大家随意定,我这里起名字为 new_posts。
2.4、为 Lambda 创建权限
从架构图得知,我们的 Lambda 函数和多个组件进行交互,需要有相关的权限才行,我们通过 IAM 为其创建一个 Role。
- 在选择的服务使用此 Role 处选择 Lambda;
- 先不用添加 Policy,先创建好 Role;
- 角色名大家可以随意写,我这里起名为 LamdbaPostsReaderRole;
- 为 Role 添加 Inline Policy,策略规则如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "polly:SynthesizeSpeech", "logs:CreateLogStream", "sns:Publish", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem", "s3:GetBucketLocation", "logs:CreateLogGroup", "logs:PutLogEvents", "s3:PutObjectAcl" ], "Resource": "*" } ]}2.5、创建 Lambda NewPost
- 函数名大家自己随意写,我这里写 wz_NewPost;
- 运行环境大家选择 Python 3.7。
- 填写好相关的 Python 代码,并配置好代码环境变量;
- 为函数指定我们前面创建的角色。
2.6、创建 Lambda GetPosts
- 函数名大家自己随意写,我这里写 wz_GetPosts;
- 运行环境大家选择 Python 3.7。
- 填写好相关的 Python 代码,并配置好代码环境变量;
- 为函数指定我们前面创建的角色。
2.7、创建 Lambda Convert
- 函数名大家自己随意写,我这里写 wz_ConvertToAudio;
- 运行环境大家选择 Python 3.7。
- 填写好相关的 Python 代码,并配置好代码环境变量;
- 为函数指定我们前面创建的角色;
- 这个函数耗时比较长,可以把函数执行时间调整为一分钟;
- 添加我们创建的 SNS 为触发器。
2.8、创建 API Gateway
- API 名称大家随意写,我这里写 PostReaderAPI,风格为 REST;
- 创建一个 GET 方法,选择
wz_GetPosts函数,添加 URL Query String Parameters; - GET 方法启用 CORS;
- 创建 Mapping Templates,类型为 application/json,内容如下:
{ "postId" : "$input.params('postId')"}- 创建一个 POST 方法,选择
wz_GetPosts函数。
2.9、上传前端代码到 S3
2.10、创建域名解析
注意,如果域名别名解析到 S3 存储桶,存储桶的名称必须和域名一致,所以我要修改一下存储桶 website 的名称。
三、验证
测试地址: http://polly.wzlinux.com
部署教程视频:https://edu.51cto.com/course/18818.html
欢迎大家扫码关注,获取更多信息
函数
代码
存储
选择
环境
语音
服务
名称
权限
用户
角色
信息
变量
域名
方法
策略
网页
静态
运行
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
中智农互联网科技
唐信互联网科技
互联网科技公司介绍
多迪互联网科技有限公司
卓越科技互联网 招聘
哈尔滨秒房互联网科技有限公司
新华互联网科技2019
银川新华互联网科技职业技术培训学校图片
华服互联网科技官网
华夏互联网科技业
米聚互联网科技南京有限公司排面
互联网科技和信息
允成互联网科技有限公司融资
佛山市拉法互联网科技有限公司
元气玛特互联网科技公司是外包吗
电子商务与互联网科技的关系
浙南科技城互联网大厦招聘
互联网科技和医药行业
青岛易易互联网科技
手磨咖啡
什么是科技互联网
唐信互联网科技
奇酷互联网络科技公司
腾讯科技 互联网女皇
佰商互联网科技有限公司
金融科技和互联网金融
隆华科技工业互联网
群盈汇互联网科技有限公司
互联网领先科技成果宣传视频