AWS SNSClient发布呼叫无法到达端点

时间:2017-12-01 22:16:36

标签: c++ amazon-web-services publish amazon-sns

我正在尝试使用c ++ SDK中的AWS SNSClient向主题发布消息。

有人可以帮助我找到一种方法来弄清楚我的方法有什么问题吗?我得到的错误消息只是说“无法达到端点”。

我试图找出我的请求挂起的位置 - 在我看来,它可能是以下之一:

  • 运行c ++应用程序的docker容器以某种方式阻止请求(docker的新功能)
  • 客户端配置错误(region,arn,creditial错误?)
  • 请求格式错误(某些参数未设置?邮件类型可能?)

有人知道如何调试我的请求并查看问题是什么?

谢谢!我的代码看起来像这样(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;
}

1 个答案:

答案 0 :(得分:3)

我无法看到您的代码的猜测是您没有指定正确的区域。如果您的代码挂起几秒钟,那么这很可能就是问题所在。

在创建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,所以我更喜欢步入代码来弄清楚什么是错的。有时查看日志文件会更简单。