该项目旨在自动化发送每日包含三个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文件拆分为较小的模块,以提高组织性和可维护性。
然而,由于该项目已达到其目的并且不太可能进一步发展,因此作者将实现保持简单。