发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?

How do you provide AWS keys to Amazon SES service when sending emails?

文档说您的主目录中需要一个 'shared credentials file',但这不适用于生产环境!那么在发送电子邮件时如何指定 AWS 密钥呢?它没有给出任何例子!

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-using-sdk.html

This code example assumes that you have installed the AWS SDK for Java, and that you have created a shared credentials file.

  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 或任何 AWS IAM role 支持的服务,安全的方法是创建一个可以访问 SES 并将其附加到资源的角色。您将不需要维护任何凭据。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#create-iam-role

以下 link 提供了向您的 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();