发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?
Posted
技术标签:
【中文标题】发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?【英文标题】:How do you provide AWS keys to Amazon SES service when sending emails? 【发布时间】:2018-10-28 08:06:56 【问题描述】:文档说您的主目录中需要一个“共享凭据文件”,但这不适用于生产!那么在发送电子邮件时如何指定 AWS 密钥?它没有给出任何例子!
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-using-sdk.html
此代码示例假定您已安装适用于 Java 的 AWS 开发工具包,并且您已创建共享凭证文件。
AmazonSimpleEmailService client =
AmazonSimpleEmailServiceClientBuilder.standard()
...
client.sendEmail(request);
他们的参考文档甚至不包含AmazonSimpleEmailServiceClientBuilder
!
https://docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=AmazonSimpleEmailServiceClientBuilder&x=3&y=8&this_doc_product=Amazon+Simple+Email+Service&this_doc_guide=API+Reference&doc_locale=en_us#facet_doc_product=Amazon%20Simple%20Email%20Service&facet_doc_guide=API%20Reference
【问题讨论】:
我看不出它在哪里说你“需要”这样做。它提供了一个示例,该示例使用多种方式中的一种方式来提供凭据。假设您使用的是 EC2 或 Lambda,请使用 IAM 角色。另见docs.aws.amazon.com/general/latest/gr/… @jarmod 有哪些方法?能给我举个例子吗?我正在使用 IAM 角色,但它仍然使用 AWS_ACCESS_KEY_ID 和密钥。我正在使用 Elastic Beanstalk,但该环境在 EB 中不起作用。 ***.com/questions/51664938/… 在 EC2 上使用 IAM 角色时,会从元数据服务而非环境变量中检索凭证。有关向 Elastic Beanstalk 提供凭据的众多选项的讨论,请访问 docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/… 看我的回答***.com/a/54807882/6414086 【参考方案1】:如果您使用 EC2 或 Lambda 或任何 AWS IAM role 支持的服务,安全的方法是创建一个有权访问 SES 的角色并将其附加到资源。您不需要维护任何凭据。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#create-iam-role
以下链接提供了向您的 java 程序提供凭据的不同方法 https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html
如果你想在你的计划中给予
AWSCredentialsProvider credentialsProvider = new AWSCredentialsProvider()
@Override
public void refresh()
@Override
public AWSCredentials getCredentials()
return new AWSCredentials()
@Override
public String getAWSSecretKey()
return "YOUR_SECRET_KEY";
@Override
public String getAWSAccessKeyId()
return "YOUR_ACCESS_KEY";
;
;
AmazonSimpleEmailService client = AmazonSimpleEmailServiceClientBuilder.standard()
.withCredentials(credentialsProvider).build();
【讨论】:
“环境变量 – AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY” 从头开始。 Elastic Beanstalk 没有为 Spring Boot/Tomcat 设置环境。它设置 Java 属性。因此:“Java 系统属性 –aws.accessKeyId
和 aws.secretKey
。AWS SDK for Java 使用 SystemPropertiesCredentialsProvider 加载这些凭证。”以上是关于发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 play framework 1.x 和 Amazon SES 发送电子邮件?
Postfix 处理 Amazon SES 最大发送速率错误