This页面显示如何使用 SES 发送电子邮件。该示例通过从 ~/.aws/credentials
读取凭证来工作,这些凭证是根(但“共享”??)凭证。
文档在多个地方建议不要使用 root 凭据。
获取临时凭证
使用roles作为一个选项提到,但 assume_role()
没有为 SES 客户端对象定义。
如何使用 SES 特定的临时凭据通过 SES 发送电子邮件?
更新
我的问题的上下文是在 EC2 实例上运行的应用程序。
最佳答案
这有几个部分。
首先您需要一个 IAM 政策。您可以使用内置策略之一,例如 AmazonSESFullAccess
,也可以创建自己的策略。特定策略的持有者将能够访问策略中定义的资源和操作。您可以手动创建此策略,也可以通过 AWS 控制台进行操作,它将引导您完成该策略。 IAM --> 策略 --> 创建策略
其次,您需要一个角色。此外,可以在控制台中轻松完成。 IAM --> 角色 --> 创建角色。可信实体是AWS服务。突出显示 EC2。在下一个屏幕中,选择要与此角色关联的策略。这是您在上面创建的策略。如果您的 EC2 已有角色,则您可以将 IAM 策略添加到该角色。将 IAM 策略分配给角色,就是他们所说的信任策略。
现在,在您的 EC2 实例上运行的任何代码都将能够向您的 SES 服务发送消息。 EC2 承担分配给它的角色。 SES 政策就是针对该角色定义的。这将允许 EC2 获取临时凭证(在幕后)。
背景故事如下。对 AWS 服务的任何 API 调用都需要有 key 和 secret 。当您从本地计算机进行 API 调用时,您可以使用您的个人 key 和 secret (甚至是根 key )。当您需要从另一个服务进行 API 调用时,您没有该 key 和 secret 。将凭证存储在 EC2 上既不安全也不实用。或者更糟糕的是,在 S3 存储桶中。这就是 AWS 提出角色
概念的原因。角色可以从称为简单 token 服务 (STS) 的内部服务请求临时凭据。例如,角色附加到 EC2 实例。如果该角色附加了正确的策略,EC2 实例可以请求获取临时凭证以对另一个服务进行 API 调用。所有这一切都发生在幕后。
关于amazon-web-services - 如何使用 SES 特定的临时凭证通过 SES 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377332/