【问题标题】:How to send raw email using "node-ses" without providing access key and secret key ? or by using IAM role如何在不提供访问密钥和密钥的情况下使用“node-ses”发送原始电子邮件?或使用 IAM 角色
【发布时间】:2018-05-27 00:57:37
【问题描述】:

使用 node-ses 发送邮件时,我们需要在创建客户端时提供访问密钥和密钥。 我想摆脱这些键,并希望使用 IAM 角色访问来处理此代码正在运行的 lambda 函数。

 ses = require('node-ses'), 
 client = ses.createClient({ key: config.get('awsSettings.accessKey'), secret: config.get('awsSettings.secretKey') }),

【问题讨论】:

  • 欢迎来到 Stackoverflow,请阅读How To Ask。特别关注How To Create MCVE。确保使用适当的标签(编程语言、相关技术等)标记您的问题。您在发布一个好问题上付出的努力越多:一个易于阅读、理解并且是 on topic 的问题 - 它吸引相关人员的机会就越高,您将更快地获得帮助。祝你好运!
  • 如果您不指定访问密钥和秘密密钥,Lambda 函数将从分配给 Lambda 函数的角色中代入它们。确保允许ses:SendEmailses:SendRawEmail 权限

标签: node.js amazon-web-services amazon-ses


【解决方案1】:

当使用SES API 或SES SMTP 服务接口时,无法使用某种形式的SES credentials。对于node-ses,此库实现SendEmail and SendRawEmail SES API 调用,因此受制于此服务的凭据要求。

在这两种情况下,这些凭证要么由 SES 在您启用服务时颁发,和/或通过 IAM 用户、与该用户关联的密钥和访问密钥进行配置。这些凭据用于 SES SMTP 和 API 服务的身份验证,并用作此目的的用户名和密码。

不能使用 IAM 角色代替使用 SES 凭证; SES 要求电子邮件客户端使用这些凭据之一进行 SES 服务身份验证。

总结自Using Credentials With Amazon SES

  • 如果您要访问 Amazon SES API,请使用 AWS 访问密钥(访问密钥 ID 和秘密访问密钥),它由指定 IAM 用户账户的访问密钥 ID 和秘密访问密钥组成。

  • 如果您要访问 Amazon SES SMTP 接口,请使用由用户名和密码组成的 SES SMTP 凭证。虽然 您的 Amazon SES SMTP 凭证与您的 AWS 访问权限不同 密钥和 IAM 用户访问密钥,Amazon SES SMTP 凭证是 实际上是一种 IAM 凭证。

【讨论】:

  • 我没有看到问题中提到了 SMTP。 node-ses 是否使用 SMTP 而不是 SES API?
  • 好点。我今天脑子里有 SMTP。我已更新答案以反映在 API 和 SMTP 服务上正确使用 SES 凭据。
  • @RodrigoM 感谢您的回复。在创建 ses 客户端时,我设法在不传递密钥和访问密钥的情况下发送电子邮件。 var client = ses.createClient();它在 aws lambda 中工作。这可能行得通,因为我将所有权限都授予了 lambda。
猜你喜欢
  • 1970-01-01
  • 2018-10-28
  • 2020-03-16
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多