Skip to content

Broken pipe in S3Client #1220

@skrat

Description

@skrat

What platform/OS are you using?

Amazon Linux 2018.03 / AWS Lambda CPP runtime

Which version of the SDK?

b458ac1

What compiler are you using? what version?

gcc 7.2.1

What are your CMake arguments?

        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_CXX_FLAGS_RELEASE=-Wno-error=unused-parameter \
        -DBUILD_ONLY="s3;sqs"

Can you provide a TRACE level log? (sanitize any sensitive information)

[lambda] uploading results 94 kB + 1498 kB...
Error: signal 13:
/var/task/bin/lightmapper-lambda[0x421a45]
/var/task/lib/libc.so.6(+0x362f0)[0x7fd35d2592f0]
/var/task/lib/libpthread.so.0(write+0x2d)[0x7fd35e2b06ad]
/var/task/lib/libcrypto.so.10(+0x11aba6)[0x7fd35cc6dba6]
/var/task/lib/libcrypto.so.10(BIO_write+0x6b)[0x7fd35cc6bcab]
/var/task/lib/libssl.so.10(ssl3_write_pending+0x72)[0x7fd35cfdc4d2]
/var/task/lib/libssl.so.10(ssl3_dispatch_alert+0x33)[0x7fd35cfde743]
/var/task/lib/libssl.so.10(ssl3_shutdown+0xb2)[0x7fd35cfda292]
/var/task/lib/libcurl.so.4(+0x63085)[0x7fd3612fc085]
/var/task/lib/libcurl.so.4(+0x630f1)[0x7fd3612fc0f1]

Some snippets from my code:

    Aws::Client::ClientConfiguration conf;
    conf.scheme = Aws::Http::Scheme::HTTPS;
    conf.region = Aws::Environment::GetEnv("AWS_REGION");
    if (conf.region.empty())
        conf.region = Aws::Region::US_EAST_2;
    conf.caFile = "/etc/pki/tls/certs/ca-bundle.crt";
    conf.connectTimeoutMs = 30000;
    conf.requestTimeoutMs = 600000;

    auto credentialsProvider = Aws::MakeShared<
      Aws::Auth::EnvironmentAWSCredentialsProvider>(AWS_TAG);
    Aws::S3::S3Client client(credentialsProvider, conf);

// elsewhere

void put_s3(const Aws::S3::S3Client& client, const string& url, const string& data) {
  Uri uri;
  if (!parse_uri(uri, url)) {
    throw invalid_argument(string("can't parse URL: ") + url);
  }
  const Aws::String bucket(uri.host.c_str(), uri.host.size());
  const Aws::String key(uri.path.c_str(), uri.path.size());
  Aws::S3::Model::PutObjectRequest request;
  request.SetBucket(bucket);
  request.SetKey(key);
  auto in = Aws::MakeShared<std::stringstream>(AWS_TAG);
  in->write(data.data(), data.size());
  request.SetBody(in);
  auto outcome = client.PutObject(request);
  if (outcome.IsSuccess()) {
    report(LAMBDA, "done putting " + url);
  } else {
    throw outcome_error(outcome.GetError());
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    closing-soonThis issue will automatically close in 4 days unless further comments are made.guidanceQuestion that needs advice or information.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions