Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Amazon AWS SNS SMS的交付状态具有随机日志流_Php_Amazon Web Services_Amazon Sns - Fatal编程技术网

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

Php Amazon AWS SNS SMS的交付状态具有随机日志流,php,amazon-web-services,amazon-sns,Php,Amazon Web Services,Amazon Sns,我正在使用Amazon的php sdk 我使用亚马逊SNS服务直接发送短信。当我从php应用程序发送短信时,它会给我一个消息ID 我必须跟踪每封邮件的传递状态。我已使用管理文本消息首选项设置为文本消息启用了云监视日志。IAM角色已正确配置,日志在Cloudwatch中结束 现在我面临的问题是,系统为我发送的每条消息创建一个随机日志流 这是一个屏幕截图 我已经发送了六条消息,所有消息都成功了(我将它们发送给我自己)。对于每条消息,都存在一个日志流 API提供了一个函数,可以根据LogGroupN

我正在使用Amazon的php sdk

我使用亚马逊SNS服务直接发送短信。当我从php应用程序发送短信时,它会给我一个消息ID

我必须跟踪每封邮件的传递状态。我已使用
管理文本消息首选项
设置为
文本消息
启用了云监视日志。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>,
]);
$result=$client->getLogEvents([
'结束时间'=>,
“限制”=>,
'logGroupName'=>'',//必需
'logStreamName'=>'',//必需
“nextToken'=>”,
“startFromHead”=>真| |假,
“开始时间”=>,
]);

我该如何获取日志?有没有一种方法可以告诉amazon将所有短信发送记录到一个日志流中。因此我知道该流并可以查询日志。

您可以使用CloudWatch LogsClient中的FilterLogEvents方法:

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

带查询:

$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');

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

您是说您不知道由于发送特定消息而创建的日志流名称吗?@MattS我想说没有办法知道日志流名称,因为日志流是随机创建的。至少我是这么想的。