amazon-web-services - 如何以编程方式获取 aws 短信发送报告?
问题描述
我正在使用AWS SNS将SMS 发送到 mobile。
我可以看到S3选项上的S3 交付状态上传。但为此,我必须每天运行批处理。报告将几乎延迟。
我可以在 Cloudwatch 上看到的第二个选项。
是否可以从 cloudwatch 发布带有日志详细信息的 SQS 事件,以便我可以编写 SQS 订阅者来获取消息传递状态?或者如果到目前为止我还没有探索过任何其他可用的选项,请告诉我。
我正在使用 Java 和 aws-java-sdk 来获取详细信息。
请注意,我已经浏览了文档,但找不到有用的东西。
欢迎任何建议。
请我浏览了文档但找不到
解决方案
要获取 SMS 发送状态,您必须执行以下操作
- 对 AWS Cloudwatch 启用“交付状态日志记录”更多信息
- 为用户(在脚本中使用)设置访问 AWS Cloudwatch 日志的权限
- 使用 awssdk 从 cloudwatch 读取日志条目。
请参阅下面我在项目中使用的 PHP 代码,您可以将其参考创建 java 代码
require 'inc/awsSdkForPhp/aws-autoloader.php';
$params = array(
'credentials' => array(
'key' => '<YOUR KEY>',
'secret' => '<YOUR SECRET>',
),
'region' => 'us-east-1', // your aws from SNS region
'version' => 'latest'
);
$cwClient = new \Aws\CloudWatchLogs\CloudWatchLogsClient($params);
$queryRes = $cwClient->startQuery([
'endTime' => 1621231180, // UNIX TIMESTAMP
'logGroupName' => 'sns/us-east-1/***/DirectPublishToPhoneNumber', // YOUR LOG GROUP NAME
'queryString' => 'fields @timestamp, status, @message
| filter notification.messageId="5a419afc-c4b3-55b3-85f9-c3e7676b2dd2"', // YOUR MESSAGE ID
'startTime' => 1620954551 // START UNIX TIMESTAMP
]);
$qryID = $queryRes->get('queryId');
sleep(3); // To wait the execution to be completed.
$resultObj = $cwClient->getQueryResults(array(
'queryId' => $qryID, // REQUIRED
));
//echo "<pre>";print_r($resultObj);echo "</pre>";
$result = $resultObj->get('results');
$jsnRs = json_decode($result[0][2]['value']); // TO get the delivery array
echo "<br>status :".$jsnRs->status;
echo "<br>phone Carrier :".$jsnRs->delivery->phoneCarrier;
echo "<br>provider Response :".$jsnRs->delivery->providerResponse;
echo "<pre>";print_r($jsnRs);echo "</pre>";
我相信它会帮助某人
推荐阅读
- reactjs - 如何仅在反应 js 中为某些 url 显示 div
- rust - serde:顶层有状态的反序列化
- jenkins - 如何跳过队列并使作业先运行?
- ios - 解析摘要信息时,出现类型不匹配错误
- azure-sql-database - 如何通过存储过程将 API 响应传递给 Azure SQL 表
- python - ValueError:形状 (None, 1) 和 (None, 11) 不兼容
- amazon-ec2 - ebextension/myconf.conf ProxyPassReverse 和 ProxyPass 的问题
- apache-spark - 在 Azure Synapse Analytics 中使用 pyspark 如何创建可供多个笔记本使用的会话
- terraform - 如何在 google_logging_metric 资源中使用格式函数
- r - 连接R中函数内部结构的值