You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot中基于Java AWS SDK仅用IAM角色调用Amazon SES发邮件咨询

解决方案

完全可以仅通过IAM角色实现SES调用,不需要创建长期访问密钥。AWS Java SDK原生支持自动从IAM角色获取短期轮换的临时凭证,不需要手动配置密钥参数,适配以下两种部署场景:

场景1:SpringBoot应用部署在AWS服务内(EC2/ECS/Lambda/EKS/Elastic Beanstalk等)

这是最简便的场景,操作步骤如下:

  • 创建自定义IAM角色,为角色附加允许SES发送操作的权限策略,示例策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}
  • 配置该IAM角色的信任策略,允许你部署应用的对应AWS服务(如EC2、ECS任务执行服务等)代入该角色
  • 将创建好的IAM角色直接绑定到应用运行的AWS资源上(比如EC2实例配置文件、ECS任务角色、Lambda执行角色等)
  • 编写代码时无需手动配置访问密钥,直接使用SDK默认凭证链即可自动获取角色的临时凭证

场景2:SpringBoot应用部署在AWS外部(本地机房、其他云厂商服务器等)

可以使用AWS IAM Roles Anywhere服务实现外部 workload 代入IAM角色获取临时凭证,操作步骤如下:

  • 提前在AWS IAM Roles Anywhere中创建信任锚,上传你的服务端证书作为身份信任依据
  • 为之前创建的SES权限角色配置信任策略,允许IAM Roles Anywhere服务代入该角色
  • 在Java SDK中配置IAM Roles Anywhere凭证提供者,SDK会自动通过证书身份获取临时SES调用凭证

SpringBoot代码实现示例(以AWS Java SDK v2为例)
  1. 首先在pom.xml中引入SES SDK依赖:
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>ses</artifactId>
    <version>2.20.0</version> <!-- 替换为对应最新稳定版即可 -->
</dependency>
  1. 直接初始化SES客户端即可,不需要手动传入访问密钥:
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ses.SesClient;
import software.amazon.awssdk.services.ses.model.*;

// 初始化客户端
SesClient sesClient = SesClient.builder()
        .region(Region.of("你的AWS区域,如us-east-1"))
        .build();

// 发送邮件示例代码
SendEmailRequest request = SendEmailRequest.builder()
        .destination(Destination.builder().toAddresses("收件人邮箱").build())
        .message(Message.builder()
                .subject(Content.builder().data("邮件主题").build())
                .body(Body.builder().text(Content.builder().data("邮件内容").build()).build())
                .build())
        .source("已验证的发件人邮箱")
        .build();

sesClient.sendEmail(request);

注意事项
  • 若你的SES服务还处于沙箱环境,需要先验证所有收件人邮箱,或申请脱离沙箱
  • IAM角色权限遵循最小够用原则,不要附加多余的服务权限
  • 确保应用运行环境的网络可以正常访问AWS SES服务的公网/私网端点

内容的提问来源于stack exchange,提问作者jenny jenkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:45:03