Plaza 新闻汇总

每日荷兰语词汇邮件自动化

该项目旨在自动化发送每日包含三个C1级别荷兰语单词的电子邮件,每个单词都配有英语翻译和例句。

**项目动机**

作者创建此项目是因为找不到合适的应用程序来帮助其构建C1级别的荷兰语词汇。他发现ChatGPT可以提供良好的单词建议,并决定自动化此过程。此外,作者认为自己比使用应用程序更频繁地查看电子邮件,因此这种学习方法更有效。此项目也为作者提供了复习Terraform和Python技能的机会。

**简化架构**

每天早上7:00,CloudWatch事件规则会触发一个Lambda函数。该Lambda函数从DynamoDB中检索所有先前发送过的荷兰语单词。然后,它从ChatGPT中检索三个新单词,将它们存储在DynamoDB中,并将其发送到SES。SES将这些单词发送到最终用户的电子邮件地址。

**设置**

**先决条件**

要部署此项目,请确保已安装以下工具并进行以下配置:

* **已安装工具:**

* Python(已测试版本:Python 3.8)

* pip(已测试版本:pip 19.2.3)

* Terraform(已测试版本:Terraform 1.10.3)

* AWS CLI(已测试版本:2.15.58)

* **权限:**您的AWS CLI用户必须拥有部署资源的相应权限。请参考Terraform文件,并遵循最小权限原则。

* **Amazon SES已验证的电子邮件:**您需要在Amazon SES中验证一个电子邮件地址。此电子邮件地址必须与项目中使用的电子邮件地址匹配。参考:在Amazon SES中验证电子邮件地址。

**可选:**

您可以手动压缩Lambda部署包:

* 使用提供的setup.sh脚本或手动按照脚本中的步骤操作(在Mac/Linux上可能需要稍作修改)。

* 或者,使用预压缩包:deployment_package.zip。

**部署步骤**

* **准备配置:**将terraform.tfvars.example复制到terraform.tfvars。在terraform.tfvars中填写所需的值。

* **运行Terraform工作流:**

```bash

terraform init

terraform plan

terraform apply

```

**注意事项**

此项目旨在作为周末项目,因此仍有改进的空间。潜在的增强功能包括:

* 重构Python代码以使其异步,以提高性能和健壮性。

* 将lambda_function.py文件拆分为较小的模块,以提高组织性和可维护性。

然而,由于该项目已达到其目的并且不太可能进一步发展,因此作者将实现保持简单。

原文地址
2024-12-27 18:20:38