仅使用实例角色从 Java 应用程序向 SES 发送邮件

Bes*_*ces 2 java amazon-web-services

有没有一种方法可以利用实例角色从 Amazon Linux EC2 实例上运行的 Java 应用程序向 SES 发送邮件,这样就不必在设备上或内存中拥有 IAM 访问密钥?

我们不希望在我们的 EC2 实例上拥有任何私钥,包括 IAM 密钥(即使是具有锁定权限的私钥),无论是在磁盘上还是在内存中。

Mat*_*ser 5

使用以下策略创建 IAM EC2 实例配置文件/角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1393257734000",
      "Effect": "Allow",
      "Action": [
        "ses:SendEmail"
      ],
      "Resource": [
        "*"
      ]
    }
}
Run Code Online (Sandbox Code Playgroud)

当您启动实例时,从上面为其分配您的 IAM EC2 实例配置文件,然后您可以使用 AWS cli 或各种 AWS SDK 使用该ses:SendEmail命令发送电子邮件。

编辑:

适用于 Java 的 AWS 开发工具包可以使用实例配置文件凭证。

AmazonSimpleEmailService sesClient = new AmazonSimpleEmailServiceClient(new InstanceProfileCredentialsProvider());
Run Code Online (Sandbox Code Playgroud)

参考:http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-roles.html