Java 检索适用于Amazon SES服务的发送统计信息

Java 检索适用于Amazon SES服务的发送统计信息,java,amazon-s3,amazon-sns,amazon-ses,amazon-cloudwatch,Java,Amazon S3,Amazon Sns,Amazon Ses,Amazon Cloudwatch,我正在编写Java应用程序,它通过AmazonSES服务发送电子邮件,效果很好。但现在,我需要检索电子邮件发送统计数据,作为根据电子邮件ID的基础 因此,我使用CloudWatch并将通知传递给SNS。然而,我无法推断如何根据对Web服务的显式请求获取统计数据。SNS端点能够根据需要调度数据当我想从我的应用程序中明确请求统计数据时。 S3服务用于存储。我是否需要以某种方式在上面存储统计数据,以便以后查询它? 任何决议和细节都已通知?您好,根据我的理解,AWS Dynamo DB是最好的方式。AW

我正在编写Java应用程序,它通过AmazonSES服务发送电子邮件,效果很好。但现在,我需要检索电子邮件发送统计数据,作为根据电子邮件ID的基础

因此,我使用CloudWatch并将通知传递给SNS。然而,我无法推断如何根据对Web服务的显式请求获取统计数据。SNS端点能够根据需要调度数据当我想从我的应用程序中明确请求统计数据时。

S3服务用于存储。我是否需要以某种方式在上面存储统计数据,以便以后查询它?
任何决议和细节都已通知?

您好,根据我的理解,AWS Dynamo DB是最好的方式。AWS Dynamo DB是一个与sql无关的数据库。发送电子邮件后,您可以使用SNS或nay lambda函数将结果(emailId,如果您需要时间等…)存储到Dynamo DB中。您可以向dynamo DB发出查询以获取统计信息


如果你想使用S3 bucket方式,你有一个维护一个json文件,每次都需要覆盖该文件。

好吧,这就是我获取发送数据的方式。 当涉及亚马逊SES时,它提供的发送统计信息非常有限;不指向已发送的特定电子邮件

然后,当谈到亚马逊Cloudwatch时,它提供了与SES非常相似的统计数据,即它让您有机会使统计数据精确到分钟。这意味着,如果您知道何时通过SES发送电子邮件,通过将其存储在DB中,您可以估计哪个统计数据属于哪个电子邮件

然后,您可以将亚马逊消防软管亚马逊S3结合使用。这是我着陆的地方。消防软管是一个将统计数据推送到S3存储器上的流。SES提供了一个配置集,可用于连接它。 S3存储您喜欢的任何内容,包括电子邮件发送统计信息。您最多可以拥有5项统计信息:

  • 发送
  • 交付
  • 弹跳
  • 抱怨
  • 拒绝
这些统计数据存储在文件中,您可以使用亚马逊的SDK访问和读取这些文件,这些SDK属于Java语言

然后您得到的是电子邮件发送统计信息的JSON文件,例如

    {
   "eventType":"Bounce",
   "bounce":{
      "bounceType":"Permanent",
      "bounceSubType":"General",
      "bouncedRecipients":[
         {
            "emailAddress":"recipient@example.com",
            "action":"failed",
            "status":"5.1.1",
            "diagnosticCode":"smtp; 550 5.1.1 user unknown"
         }
      ],
      "timestamp":"2016-10-14T05:02:52.574Z",
      "feedbackId":"EXAMPLE7c1923f27-ab0c24cb-5d9f-4e77-99b8-85e4cb3a33bb-000000",
      "reportingMTA":"dsn; ses-example.com"
   },
   "mail":{
      "timestamp":"2016-10-14T05:02:16.645Z",
      "source":"sender@example.com",
      "sourceArn":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "sendingAccountId":"123456789012",
      "messageId":"EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000",
      "destination":[
         "recipient@example.com"
      ],
      "headersTruncated":false,
      "headers":[
         {
            "name":"From",
            "value":"sender@example.com"
         },
         {
            "name":"To",
            "value":"recipient@example.com"
         },
         {
            "name":"Subject",
            "value":"Email Subject"
         },
         {
            "name":"MIME-Version",
            "value":"1.0"
         },
         {
            "name":"Content-Type",
            "value":"multipart/mixed;  boundary=\"----=_Part_0_716996660.1476421336341\""
         },
         {
            "name":"X-SES-MESSAGE-TAGS",
            "value":"myCustomTag1=myCustomTagValue1, myCustomTag2=myCustomTagValue2"
         }
      ],
      "commonHeaders":{
         "from":[
            "sender@example.com"
         ],
         "to":[
            "recipient@example.com"
         ],
         "messageId":"EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000",
         "subject":"Email Subject"
      },
      "tags":{
         "ses:configuration-set":[
            "my-configuration-set"
         ],
         "ses:source-ip":[
            "192.0.2.0"
         ],
         "ses:from-domain":[
            "example.com"
         ],
         "ses:caller-identity":[
            "ses_user"
         ],
         "myCustomTag1":[
            "myCustomTagValue1"
         ],
         "myCustomTag2":[
            "myCustomTagValue2"
         ]
      }
   }
}

这就是问题所在。

出于某些原因,我需要坚持使用亚马逊服务。让我们关注SQL之类的数据库,因为我不懂NoSQL。您能提供更多关于如何使用S3服务的详细信息吗?首先创建一个示例json文件,并将其保存在S3 bucket中。编写一个lambda函数,它应该是SNS消息的侦听器。一旦您的电子邮件发送成功,然后发布一条SNS消息,然后自动执行lambda函数。现在,您的lambda函数将从SNS接收电子邮件id详细信息,因此您必须从s3 bucket读取现有的json文件,并在其中添加新的电子邮件,最后将该文件以相同的名称存储在相同的bucket中。您可以随时调用JSON文件来获取分析数据。