适用于SMS的Amazon AWS SNS交付状态具有随机日志流

时间:2018-02-28 13:35:42

标签: php amazon-web-services amazon-sns

我正在使用亚马逊的php sdk。

我使用Amazon SNS服务发送直接短信。当我从我的PHP应用程序发送短信时,它给我一个消息ID。

我必须跟踪每封邮件的投放状态。我已使用Text Messaging设置为Manage text messaging preferences启用了云观察日志。正确配置了IAM角色,并在Cloudwatch中结束日志。

现在我遇到的问题是系统为我发送的每条消息创建一个随机日志流。

这是一个截屏。

enter image description here

我发了六条消息,所有这些消息都成功了(我发给他自己)。并且针对每条消息存在单个日志流。

API为我提供了一个基于LogGroupName和LogGroupStream获取日志的功能。 LogGroupName保持不变,但LogGroupStream对于每条消息都不同。

这是sdk电话

$result = $client->getLogEvents([
    'endTime' => <integer>,
    'limit' => <integer>,
    'logGroupName' => '<string>', // REQUIRED
    'logStreamName' => '<string>', // REQUIRED
    'nextToken' => '<string>',
    'startFromHead' => true || false,
    'startTime' => <integer>,
]);

我应该如何获取日志?有没有办法告诉亚马逊将所有短信发送记录到一个LOG STREAM。所以我知道流,可以查询日志。

2 个答案:

答案 0 :(得分:1)

使用查询:

$result = $CloudWatchclient->startQuery([
    'endTime' => strtotime("+5 minutes", strtotime($creation_date)) * 1000, 
    'limit' => 1,
    'logGroupName' => '.....DirectPublishToPhoneNumber',
    'queryString' => 'field @message like /'.$awsmessageid.'/',
    'startTime' => strtotime($creation_date)*1000,
]);

$queryid = $result->get('queryId');
sleep(2);

$result = $CloudWatchclient->getQueryResults([
    'queryId' => $queryid, // REQUIRED
]);
$result = $result->get('results');

结果包含短信数据成功的事件日志

答案 1 :(得分:0)

您可以使用CloudWatchLogsClient中的filterLogEventsMethod:

$result = $client->filterLogEvents(array(    
'logGroupName' => 'string', //Required
'startTime' => integer,
'endTime' => integer,
'filterPattern' => 'string',
'nextToken' => 'string',
'limit' => integer,
'interleaved' => true || false));

参考:Aws Docs