AWS Lambda和SES身份验证凭证在SMTP上无效

时间:2018-11-17 14:09:14

标签: smtp aws-lambda swiftmailer amazon-ses serverless-framework

我一直在使用无服务器框架,我正在尝试让我的lambda函数使用亚马逊的SES服务发送电子邮件。我认为这没什么大不了,但是我在lambda的node8包装器中使用PHP。

  1. 我已经在SES中验证了电子邮件地址
  2. 我已授予lambda执行角色发送电子邮件和原始电子邮件的权限
  3. 我已经生成了SMTP凭证,该凭证创建了一个新的IAM用户,并了解这些凭证与原始AWS凭证不同

我在代码中提供了一个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_USERNAMEYOUR_SES_PASSWORD var是分别由SES生成的SMTP凭据。

虽然首选直接针对我的特定方法的想法,但我也对替代方案持开放态度。

谢谢。

0 个答案:

没有答案