我一直在使用无服务器框架,我正在尝试让我的lambda函数使用亚马逊的SES服务发送电子邮件。我认为这没什么大不了,但是我在lambda的node8包装器中使用PHP。
我在代码中提供了一个SMTP连接URL,并在查看日志后正确提取了用户/密码,并使用了提供的凭据,端口和协议。
535 Authentication Credentials Invalid
日志告诉我身份验证凭据无效。我正在寻找关于为什么这些凭据被视为无效的见解。 Lambda执行角色为自己的执行角色以外的用户提供凭据时是否存在问题? 我已尝试为创建的SMTP用户委派发送,以便该用户可以代表上面项目符号1中已验证的电子邮件地址发送电子邮件。 我还尝试为SES中的已验证电子邮件添加一个策略,该策略允许lambda角色代表该帐户发送电子邮件,但是SES电子邮件策略似乎不接受lambda ARN。
了解我需要使用SMTP端点,有人可以提供一些有关如何最好地克服无效凭据问题的建议吗?
...
iamRoleStatements:
# Allow the lambda function permission to create EINs, which is part of the
# AWSLambdaVPCAccessExecutionRole
- Effect: "Allow"
Action:
- "ec2:CreateNetworkInterface"
- "ec2:DescribeNetworkInterfaces"
- "ec2:DeleteNetworkInterface"
- "ses:SendEmail"
- "ses:SendRawEmail"
Resource: "*"
# end IAM role statements
...
还有我用来访问SMTP端点的邮件程序URL,这是我的lambda中的环境变量:
MAILER_URL=smtp://email-smtp.us-east-1.amazonaws.com:587?encryption=tls&username=YOUR_SES_USERNAME&password=YOUR_SES_PASSWORD
YOUR_SES_USERNAME
和YOUR_SES_PASSWORD
var是分别由SES生成的SMTP凭据。
虽然首选直接针对我的特定方法的想法,但我也对替代方案持开放态度。
谢谢。