如何通过具有临时SES专用凭据的SES发送电子邮件?

时间:2018-09-18 00:30:05

标签: amazon-web-services aws-sdk amazon-ses

This页显示了如何使用SES发送电子邮件。该示例通过从~/.aws/credentials中读取凭据(它们是根(至今“共享” ??)凭据)来工作。

该文档建议在各个地方不要使用根凭据。

获取临时凭证 可以选择使用roles,但尚未为SES客户端对象定义assume_role()

如何通过具有临时SES专用凭据的SES发送电子邮件?

更新

我的问题的上下文是在EC2实例上运行的应用程序。

2 个答案:

答案 0 :(得分:1)

两个选项...

您可以使用适当的权限创建IAM用户凭据,并将其放入~./aws/credentials文件中。然后,您的应用程序将找到它们,并使用它们与Amazon SES连接。

或者,您的应用程序可以使用一组 IAM用户凭据来调用assume_role() (这是IAM命令)。这将返回一组可与Amazon SES一起使用的临时凭证。但是,如果您要提供一组用于调用assume_role()的凭证,那么您也可以直接在Amazon SES中直接使用这些凭证。

IAM用户可以用于人员 OR 应用程序。

答案 1 :(得分:0)

这有几块。

首先,您需要一个IAM策略。您可以使用一种内置策略,例如AmazonSESFullAccess,也可以创建自己的策略。特定策略的持有者将能够访问策略中定义的资源和操作。您可以手动创建此策略,也可以通过AWS控制台进行操作,它将逐步引导您。 IAM->策略->创建策略

第二,您将需要一个角色。另外,在控制台中轻松完成。 IAM->角色->创建角色。受信任的实体是AWS服务。突出显示EC2。在下一个屏幕中,选择要与此角色关联的策略。这是您在上面创建的策略。如果您的EC2已经具有角色,则可以将IAM策略添加到该角色。将IAM策略分配给角色就是他们所谓的信任策略。

现在,在EC2实例上运行的任何代码都将能够向您的SES服务发送消息。 EC2承担分配给它的角色。并且为该角色定义了SES策略。这将允许EC2在后台获取临时凭据。

背景故事如下。任何对AWS服务的API调用都需要具有密钥和机密。从本地计算机进行API调用时,可以使用您的个人密钥和秘密(甚至根用户)。当您需要从其他服务进行API调用时,则不需要该密钥和机密。将凭据存储在EC2上既不安全也不实用。甚至更糟的是,在S3存储桶中。这就是AWS提出Role概念的原因。角色可以从称为简单令牌服务(STS)的内部服务请求临时凭据。例如,角色附加到EC2实例。而且,如果将正确的策略附加到该角色,则EC2实例可以请求获取临时凭据以对另一个服务进行API调用。所有这些都是在幕后发生的。