如何通过 SES 发送带有临时 SES 特定凭据的电子邮件?
How do I send an email through SES with temporary SES-specific credentials?
This 页面显示了如何使用 SES 发送电子邮件。该示例通过读取来自 ~/.aws/credentials
的凭据来工作,这些凭据是根(还 "shared"??)凭据。
文档在多处建议不要使用 root 凭据。
正在获取临时凭证
使用 roles 作为一个选项提到,但 assume_role()
没有为 SES 客户端对象定义。
如何通过 SES 发送带有临时 SES 特定凭据的电子邮件?
更新
我的问题的上下文是 EC2 实例上的应用程序 运行。
两个选项...
您可以创建具有适当权限的 IAM 用户 凭据并将它们放入 ~./aws/credentials
文件中。然后您的应用程序将找到它们并使用它们连接 Amazon SES。
或者,您的应用程序可以使用一组 IAM 用户凭证来调用 assume_role()
(这是一个 IAM 命令)。这将 return 一组可用于 Amazon SES 的临时凭证。但是,如果您要提供一组用于调用 assume_role()
的凭据,那么您也可以直接将这些凭据与 Amazon SES 一起使用。
IAM 用户可用于人或 应用程序。
这里有一些片段。
首先您需要一个 IAM 策略。您可以使用内置策略之一,例如 AmazonSESFullAccess
,也可以创建自己的策略。特定策略的持有者将能够访问策略中定义的资源和操作。您可以手动创建此策略,或通过 AWS 控制台工作,它会引导您完成。 IAM --> 策略 --> 创建策略
其次,你需要一个角色。此外,在控制台中轻松完成。 IAM --> 角色 --> 创建角色。可信实体是 AWS 服务。突出显示 EC2。在下一个屏幕中,select 您要与此角色关联的策略。这是您在上面创建的策略。如果您的 EC2 已经有一个角色,那么您可以将 IAM 策略添加到这个角色。将 IAM 策略分配给角色,就是他们所说的信任策略。
现在,在您的 EC2 实例上运行的任何代码都能够向您的 SES 服务发送消息。 EC2 承担分配给它的角色。 SES 策略是为该角色定义的。这将允许 EC2 获得临时凭证(在幕后)。
故事背景如下。对 AWS 服务的任何 API 调用都需要有密钥和秘密。当您从本地计算机进行 API 调用时,您可以使用您的个人密钥和秘密(甚至是根密钥)。当您需要从另一个服务进行 API 调用时,您没有那个密钥和秘密。将凭据存储在 EC2 上既不安全也不实用。或者更糟糕的是,在 S3 存储桶中。这就是 AWS 提出 Role
概念的原因。角色可以从称为简单令牌服务 (STS) 的内部服务请求临时凭证。例如,角色附加到 EC2 实例。如果正确的策略附加到该角色,则 EC2 实例可以请求获取临时凭证以对另一个服务进行 API 调用。所有这一切都发生在幕后。
This 页面显示了如何使用 SES 发送电子邮件。该示例通过读取来自 ~/.aws/credentials
的凭据来工作,这些凭据是根(还 "shared"??)凭据。
文档在多处建议不要使用 root 凭据。
正在获取临时凭证
使用 roles 作为一个选项提到,但 assume_role()
没有为 SES 客户端对象定义。
如何通过 SES 发送带有临时 SES 特定凭据的电子邮件?
更新
我的问题的上下文是 EC2 实例上的应用程序 运行。
两个选项...
您可以创建具有适当权限的 IAM 用户 凭据并将它们放入 ~./aws/credentials
文件中。然后您的应用程序将找到它们并使用它们连接 Amazon SES。
或者,您的应用程序可以使用一组 IAM 用户凭证来调用 assume_role()
(这是一个 IAM 命令)。这将 return 一组可用于 Amazon SES 的临时凭证。但是,如果您要提供一组用于调用 assume_role()
的凭据,那么您也可以直接将这些凭据与 Amazon SES 一起使用。
IAM 用户可用于人或 应用程序。
这里有一些片段。
首先您需要一个 IAM 策略。您可以使用内置策略之一,例如 AmazonSESFullAccess
,也可以创建自己的策略。特定策略的持有者将能够访问策略中定义的资源和操作。您可以手动创建此策略,或通过 AWS 控制台工作,它会引导您完成。 IAM --> 策略 --> 创建策略
其次,你需要一个角色。此外,在控制台中轻松完成。 IAM --> 角色 --> 创建角色。可信实体是 AWS 服务。突出显示 EC2。在下一个屏幕中,select 您要与此角色关联的策略。这是您在上面创建的策略。如果您的 EC2 已经有一个角色,那么您可以将 IAM 策略添加到这个角色。将 IAM 策略分配给角色,就是他们所说的信任策略。
现在,在您的 EC2 实例上运行的任何代码都能够向您的 SES 服务发送消息。 EC2 承担分配给它的角色。 SES 策略是为该角色定义的。这将允许 EC2 获得临时凭证(在幕后)。
故事背景如下。对 AWS 服务的任何 API 调用都需要有密钥和秘密。当您从本地计算机进行 API 调用时,您可以使用您的个人密钥和秘密(甚至是根密钥)。当您需要从另一个服务进行 API 调用时,您没有那个密钥和秘密。将凭据存储在 EC2 上既不安全也不实用。或者更糟糕的是,在 S3 存储桶中。这就是 AWS 提出 Role
概念的原因。角色可以从称为简单令牌服务 (STS) 的内部服务请求临时凭证。例如,角色附加到 EC2 实例。如果正确的策略附加到该角色,则 EC2 实例可以请求获取临时凭证以对另一个服务进行 API 调用。所有这一切都发生在幕后。