AWS文本到语音服务器应用程序
#aws #javascript #教程 #terraform

在本文中,我们将通过部署文本到语音服务器的应用程序,该应用程序包含以下部分中介绍的两个主要流。

建筑学

最新帖子

New Post

  1. 用户调用调用newPost lambda函数的API网关恢复端点。
  2. newPost lambda函数将有关帖子的信息插入Amazon DynamoDB表中,其中所有帖子都存储了。
  3. 然后,newPost lambda函数发布了我们创建的SNS主题的帖子,因此可以异步将其转换。
  4. 转换为音频lambda函数,将订阅为SNS主题,并在出现新消息时触发(这意味着应将新帖子转换为音频文件)。
  5. 转换为音频lambda函数使用Amazon Polly将文本转换为指定语言的音频文件(与文本的语言相同)。
  6. 新的mp3文件保存在专用的S3存储桶中。
  7. 有关该帖子的信息已在DynamoDB表中更新(S3存储桶中存储的音频文件的URL保存使用先前存储的数据。)

获取帖子

Get Post

  1. 用户调用API网关恢复端点,该端点调用getPost lambda函数,该函数包含用于检索邮政数据的逻辑。
  2. getPost lambda函数从DynamoDB表中检索有关帖子的信息(包括对Amazon S3的引用),并返回信息。

部署资源

您会找到代码存储库here

To deploy应用程序,只需运行:

terraform apply -auto-approve

分解

我们正在使用Terraform部署应用程序。

如您在“体系结构”部分中看到的。我们有两个流量,第一个流是用户通过API网关提交帖子的时候。以及用户可以请求一个帖子或所有帖子的第二个流。

main.tf中,我们使用的是我们创建的terraform modules来提供以下内容:

  • DynamoDB表用于存储帖子元数据
  • newpost lambda函数
  • getPost lambda函数
  • converttoaudio lambda函数
  • API网关

iam.tf是我们定义最小二特权权限的地方。

public 用于存储所有音频帖子的S3存储桶,在s3.tf中声明。

sns.tf

中定义了用于将应用程序解散为异步流中的SNS主题

我们正在创建一个名为 new_posts 的主题,将lambda作为subscription。因此,每次此主题收到消息时,它都会以该消息作为事件调用 converttoaudio lambda函数。

允许SNS调用 converttoaudio lambda函数,我们还创建了lambda许可resource

newPost lambda功能

NewPost lambda函数做了两件事:
1-用以下架构在帖子表中创建一个项目:

id: recordId,
text: string,
voice: string,
status: 'PROCESSING'

您可以看到的状态是处理,因为它仍然需要转换为音频。

2-将项目ID发布到SNS主题(因此可以通过ConverttoAudio进行处理)

转换toaudio lambda功能

ConvertToAudio lambda函数执行以下操作:

  1. 从帖子表中获取帖子元数据
  2. 将文本分成块(如果文本大于2600个字符)
  3. 用文本调用Polly synthesizeSpeech并将其保存到本地文件
  4. 将音频文件上传到S3桶
  5. 更新带有S3音频URL的帖子表中的元数据,并将状态设置为更新

getPost lambda功能

GetPost lambda函数检索帖子:

  • 如果postid(querystring)为“*”,则该函数将返回帖子表中的所有帖子
  • 如果PostID是发布ID,则该函数将返回该特定帖子(如果存在)或一个空数组。

清理

不要忘记通过运行清理所有内容:

terraform destroy -auto-approve

包起来

在本文中,我介绍了文本到语音服务器的应用程序。在下一篇文章中,我将介绍如何处理Lambda可能遇到的错误,以及如何在API网关中处理它们。

在此之前,感谢您阅读本文。我希望您发现它有用ðð»。