AWS C&x2B+;S3 SDK PutObjectRequest无法连接到终结点 在使用AWS C++ SDK时,我遇到了一个问题,当尝试执行一个PutoBoCtReQuest抱怨它在上传到超过400 KB时“不能连接到端点”。p> Aws::Client::ClientConfiguration clientConfig; clientConfig.scheme = Aws::Http::Scheme::HTTPS; clientConfig.region = Aws::Region::US_EAST_1; Aws::S3::S3Client s3Client(clientConfig); Aws::S3::Model::PutObjectRequest putObjectRequest; putObjectRequest.SetBucket("mybucket"); putObjectRequest.SetKey("mykey"); typedef boost::iostreams::basic_array_source<char> Device; boost::iostreams::stream_buffer<Device> stmbuf(compressedData, dataSize); std::iostream *stm = new std::iostream(&stmbuf); putObjectRequest.SetBody(std::shared_ptr<Aws::IOStream>(stm)); putObjectRequest.SetContentLength(dataSize); Aws::S3::Model::PutObjectOutcome outcome = s3Client.PutObject(putObjectRequest);

AWS C&x2B+;S3 SDK PutObjectRequest无法连接到终结点 在使用AWS C++ SDK时,我遇到了一个问题,当尝试执行一个PutoBoCtReQuest抱怨它在上传到超过400 KB时“不能连接到端点”。p> Aws::Client::ClientConfiguration clientConfig; clientConfig.scheme = Aws::Http::Scheme::HTTPS; clientConfig.region = Aws::Region::US_EAST_1; Aws::S3::S3Client s3Client(clientConfig); Aws::S3::Model::PutObjectRequest putObjectRequest; putObjectRequest.SetBucket("mybucket"); putObjectRequest.SetKey("mykey"); typedef boost::iostreams::basic_array_source<char> Device; boost::iostreams::stream_buffer<Device> stmbuf(compressedData, dataSize); std::iostream *stm = new std::iostream(&stmbuf); putObjectRequest.SetBody(std::shared_ptr<Aws::IOStream>(stm)); putObjectRequest.SetContentLength(dataSize); Aws::S3::Model::PutObjectOutcome outcome = s3Client.PutObject(putObjectRequest);,c++,amazon-s3,aws-sdk,C++,Amazon S3,Aws Sdk,将你的配置文件调整到下面。然后看看它是否有效 Aws::Client::ClientConfiguration clientConfig; clientConfig.scheme = Aws::Http::Scheme::HTTPS; clientConfig.region = Aws::Region::US_EAST_1; clientConfig.connectTimeoutMs = 30000; Aws::S3::S3Client s3Client(clientConfig); Aws

将你的配置文件调整到下面。然后看看它是否有效

Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.region = Aws::Region::US_EAST_1;
clientConfig.connectTimeoutMs = 30000;

Aws::S3::S3Client s3Client(clientConfig);

Aws::S3::Model::PutObjectRequest putObjectRequest;
putObjectRequest.SetBucket("mybucket");
putObjectRequest.SetKey("mykey");

typedef boost::iostreams::basic_array_source<char> Device;
boost::iostreams::stream_buffer<Device> stmbuf(compressedData, dataSize);
std::iostream *stm = new std::iostream(&stmbuf);

putObjectRequest.SetBody(std::shared_ptr<Aws::IOStream>(stm));
putObjectRequest.SetContentLength(dataSize);

Aws::S3::Model::PutObjectOutcome outcome = s3Client.PutObject(putObjectRequest);
Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme=Aws::Http::scheme::HTTPS;
clientConfig.region=Aws::region::US\u EAST\u 1;
clientConfig.connectTimeoutMs=30000;
Aws::S3::S3客户端S3客户端(clientConfig);
Aws::S3::Model::PutObjectRequest PutObjectRequest;
putObjectRequest.SetBucket(“mybucket”);
putObjectRequest.SetKey(“mykey”);
typedef boost::iostreams::基本数组\源设备;
boost::iostreams::stream_buffer stmbuf(compressedData,dataSize);
std::iostream*stm=新std::iostream(&stmbuf);
SetBody(std::shared_ptr(stm));
putObjectRequest.SetContentLength(数据大小);
Aws::S3::Model::PutObjectOutput=s3Client.PutObject(putObjectRequest);

最终解决这个问题的是设置请求超时。请求超时需要足够长的时间才能完成整个传输。如果在慢速internet连接上传输大文件,请确保请求超时足够长,以允许传输这些文件

Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.region = Aws::Region::US_EAST_1;
clientConfig.connectTimeoutMs = 30000;
clientConfig.requestTimoutMs = 600000;

不幸的是,即使使用
clientConfig.connectTimeoutMs=30000设置超时,它仍然会出现无法连接到端点的错误连接超时是错误的设置,如果它在发送过程中超时,它就是实际的接收超时。你能给我发送一个日志文件吗?我很乐意调查此事。谢谢@JonathanHenson的评论。我编辑了问题以在日志文件中显示错误。我可以通过电子邮件与您联系吗?我看到您正在苹果设备上进行此操作。这是通过wifi进行的吗?如果可以,您可以通过以太网尝试此操作吗?另外,请尝试设置接收超时,而不是连接超时。奇怪的是,它在3秒后超时,我面临着同样的错误。对此的答案是值得注意的这是curl的一个已知问题,因为我错误地假设timeout选项是一个正常的套接字读取超时,而事实并非如此。我正在修复我们的libcurl代码,使其表现为正常的读取超时,这应该不再是一个问题。
Aws::Client::ClientConfiguration clientConfig;
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.region = Aws::Region::US_EAST_1;
clientConfig.connectTimeoutMs = 30000;
clientConfig.requestTimoutMs = 600000;