当前位置: 首页 > 知识库问答 >
问题:

带有Amazon SES和Spring Boot的ProfileCredentialsProvider

微生毅
2023-03-14

我想发送一封电子邮件与亚马逊SES和SpringBoot,我有这个配置文件:

@Configuration
public class MailConfig {

    @Bean
    public AmazonSimpleEmailService amazonSimpleEmailService() {

        return AmazonSimpleEmailServiceClientBuilder.standard()
                .withCredentials(new ProfileCredentialsProvider("ses-smtp-user.2024321-167419"))
                .withRegion(Regions.EU_WEST_2)
                .build();
    }

    @Bean("myMailSender")
    public MailSender mailSender(
            AmazonSimpleEmailService amazonSimpleEmailService) {
        return new SimpleEmailServiceMailSender(amazonSimpleEmailService);
    }
}

使用凭据中的字段IAM用户名:

但我在启动应用程序时出现以下错误:

Caused by: java.lang.IllegalArgumentException: No AWS profile named 'ses-smtp-user.20211221-172419'

共有1个答案

赵英资
2023-03-14

传递给ProfileCredentialsProvider()的字符串是本地配置文件名,应该是本地中存在的名称。aws/凭证文件。你试图给它传递一个IAM用户名,这是完全不同的事情。

首先,我建议您阅读文档。

其次,我建议您使用环境变量,而不是在代码中硬编码任何类型的凭证设置。您可以设置AWS\u PROFILE环境变量,或者设置AWS\u ACCESS\u KEY\u IDAWS\u SECRET\u ACCESS\u KEY环境变量,然后您的代码如下所示:

return AmazonSimpleEmailServiceClientBuilder.standard()
                .withRegion(Regions.EU_WEST_2)
                .build();

除了代码更简洁,在EC2、ECS、Lambda等上运行时,它还将自动使用环境分配的IAM角色。。

 类似资料:
  • 我正在尝试将vaadin与spring(没有Spring Boot)和基于java注释的spring部分配置结合起来。 自动连接似乎适用于vaadin ui部分,但不适用于“自定义ui类”(例如,“公共类LoginScreen扩展自定义组件”)。我在SysOut上得到一个NPE或一个空对象。 此外,我注意到“@ComponentScan(base Packages={"net.myapp"})”没

  • 问题内容: 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常带有 斜线 。我无法控制用户在URL中输入的内容,因此我想获取他输入的内容,然后我就可以对其进行处理。 我已经在这里浏览过材料和答案,我认为对我而言,好的解决方案不是要求用户以某种方式对输入的参数进行编码。 SpringBoot代码很简单: 因此,URL如下所示: 问题在于,参数 modu

  • 我目前正在做一个小项目,计划展示数据库中的一些文档。我遇到了这个问题,springboot将我的控制器称为bean。这是我真正的豆子。 和我的控制器: 我的存储库 错误: 组织。springframework。豆。工厂UnsatisfiedPendencyException:创建名为“productController”的bean时出错,该bean在文件[E:\IntelijProj\target

  • 导致问题的两个endpoint位于根路径上,并且URL中只有一个path参数。它们都在一个具有@requestmapping(“/”)的控制器中,并对它们进行注释; 这两个endpoint工作正常,只是在Swagger呈现HTML时引起了一些问题。如果我删除它们,将显示HTML。我已经尝试将它们自己移动到控制器中,看看是否可以阻止swagger在swagger配置中访问它们。但是,它们似乎只需要存

  • 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常有斜线。我没有一个关于用户将输入URL的控制,所以我想要得到他输入的内容,然后我可以处理它。 我已经看过了这里的资料和答案,我不认为对我来说,好的解决方案是要求用户以某种方式编码输入参数。

  • 有没有办法绕过授权?

  • 我目前有一个AWS帐户,有两个ec2实例,用于我设置的两个不同域(网站)。之前,我验证了其中一个域,为其创建了一个IAM用户,并成功地提出了从沙箱中删除该帐户的请求。现在,我希望在其他领域也使用SES。我知道如何为这两个域设置不同的来自域的邮件,但就代码而言,我通过创建新IAM用户(然后在代码中使用)生成的访问和密钥似乎没有考虑到不同的域。是否可以将AWS SES用于两个独立的域(每个应用程序发送

  • 在下面的代码中,我有时会将设置为null。此时,它抛出错误为“could not extract resultset;SQL[n/a];嵌套异常为org.hibernate.exception.sqlgrammarexception:could not extract resultset” 即使为空,我如何获取数据。总有一天约会就要来了。这是怎么做的? null