首页 > 解决方案 > 尝试使用无服务器框架发送模板化邮件时,AWS SDK SES Client V3“挂起”

问题描述

我正在使用 SES AWS Client V3 和无服务器框架实现自动电子邮件发送。无服务器配置 yaml 包含所需的权限:

iamRoleStatements:
- Effect: "Allow"
  Action:
    - "ses:*"
  Resource:
    - "*"

代码本身很简单:

const command = new SendTemplatedEmailCommand({
            Source: EmailService.SOURCE_ADDRESS,
            Template: templateName,
            Destination: {
                ToAddresses: emails
            },
            TemplateData: JSON.stringify(templateParams || {})
        })
        console.log(`Calling SES API Command...`);
        const response = await this._ses.send(command);

await 调用永远不会返回,并且支持 lambda 函数在 20 秒后超时。cloudwatch lambda 函数日志中没有出现错误。lambda 函数的最大超时为 30 秒,并且 SES Client V3 的超时不可配置,因此我不能在 lambda 本身超时之前“让它超时”...重要说明:在本地运行时(使用无服务器离线插件)使用AWS 的相同凭证,呼叫成功完成并发送邮件。另一个注意事项:同一个 lambda 也在使用 AWS SDK S3 客户端 V3 - 没有任何问题 - 所以我认为 SDK 设置不是这里的问题......有什么想法吗?

标签: amazon-web-servicesserverlessamazon-ses

解决方案


尝试增加 Lambda 函数超时时间(在常规配置中可用)。默认超时为 30 秒,但最长可配置为 15 分钟


推荐阅读