我正在使用亚马逊的php sdk。
我使用Amazon SNS服务发送直接短信。当我从我的PHP应用程序发送短信时,它给我一个消息ID。
我必须跟踪每封邮件的投放状态。我已使用Text Messaging
设置为Manage text messaging preferences
启用了云观察日志。正确配置了IAM角色,并在Cloudwatch中结束日志。
现在我遇到的问题是系统为我发送的每条消息创建一个随机日志流。
这是一个截屏。
我发了六条消息,所有这些消息都成功了(我发给他自己)。并且针对每条消息存在单个日志流。
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。所以我知道流,可以查询日志。
答案 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