AWS SNSClient 发布调用无法到达端点
AWS SNSClient publish call could not reach endpoint
我正在尝试使用来自 c++ SDK 的 AWS SNSClient 向主题发布消息。
有人可以帮助我找到一种方法来找出我的方法有什么问题吗?我收到的错误消息只说 "endpoint could not be reached".
我正在尝试找出我的请求挂起的位置 - 在我看来,它可能是以下之一:
- C++ 应用 运行 所在的 docker 容器正在以某种方式阻止请求(docker 的新功能)
- 客户端配置错误(region, arn, creditials 错误?)
- 请求格式错误(某些参数未设置?可能是消息类型?)
有人知道如何调试我的请求并查看问题所在吗?
谢谢!我的代码看起来像这样(省略了 api init 和 shutdown):
Aws::SNS::SNSClient client(credentials , config);
Aws::SNS::Model::PublishRequest pubReq;
pubReq.SetTopicArn("...");
pubReq.SetMessage("Test message");
pubOutcome = client.Publish(pubReq);
if(! pubOutcome.IsSuccess() ){
std::cout << "outcome: " << pubOutcome.GetError().GetMessage() << std::endl;
}
我无法看到您的代码,我的猜测是您没有指定正确的区域。如果您的代码挂起几秒钟,那么这很可能是问题所在。
在创建 SNS 客户端之前添加一行这样的代码:
config.region = "us-west-2";
要启用调试,请在 Aws::InitAPI(选项)
之前添加此行
options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
记录头:
#include <aws/core/utils/logging/DefaultLogSystem.h>
#include <aws/core/utils/logging/AWSLogging.h>
然后您可以查看生成的日志文件。它将以 "aws_sdk"
开头
我用的是Visual Studio,所以我更喜欢单步执行代码找出问题所在。有时查看日志文件更简单。
我正在尝试使用来自 c++ SDK 的 AWS SNSClient 向主题发布消息。
有人可以帮助我找到一种方法来找出我的方法有什么问题吗?我收到的错误消息只说 "endpoint could not be reached".
我正在尝试找出我的请求挂起的位置 - 在我看来,它可能是以下之一:
- C++ 应用 运行 所在的 docker 容器正在以某种方式阻止请求(docker 的新功能)
- 客户端配置错误(region, arn, creditials 错误?)
- 请求格式错误(某些参数未设置?可能是消息类型?)
有人知道如何调试我的请求并查看问题所在吗?
谢谢!我的代码看起来像这样(省略了 api init 和 shutdown):
Aws::SNS::SNSClient client(credentials , config);
Aws::SNS::Model::PublishRequest pubReq;
pubReq.SetTopicArn("...");
pubReq.SetMessage("Test message");
pubOutcome = client.Publish(pubReq);
if(! pubOutcome.IsSuccess() ){
std::cout << "outcome: " << pubOutcome.GetError().GetMessage() << std::endl;
}
我无法看到您的代码,我的猜测是您没有指定正确的区域。如果您的代码挂起几秒钟,那么这很可能是问题所在。
在创建 SNS 客户端之前添加一行这样的代码:
config.region = "us-west-2";
要启用调试,请在 Aws::InitAPI(选项)
之前添加此行options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
记录头:
#include <aws/core/utils/logging/DefaultLogSystem.h>
#include <aws/core/utils/logging/AWSLogging.h>
然后您可以查看生成的日志文件。它将以 "aws_sdk"
开头我用的是Visual Studio,所以我更喜欢单步执行代码找出问题所在。有时查看日志文件更简单。