Friday, February 17, 2017

Horrible Coding by Amazon Developers

If you do not have Internet connectivity, it will crash with meaningless error:

Users/bparanj/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (Seahorse::Client::NetworkingError)

This can also happen if you do not click on agree button when you are on starbucks coffee shop.

If you provide a invalid file in a s3 bucket, aws-sdk version 2 will crash with meaningless error message:

 # []>>
ArgumentError: expected params[:key] to be a String, got value []> (class: Rake::FileTask) instead.

You must provide a valid file name. The library is not capable of telling you the cause of the problem and how to fix it. It will crash inside aws-sdk-core with an ugly stack trace:

/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/param_validator.rb:28:in `validate!'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/param_validator.rb:13:in `validate!'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/param_validator.rb:20:in `call'
/gems/aws-sdk-core-2.7.0/lib/seahorse/client/plugins/raise_response_errors.rb:14:in `call'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/s3_sse_cpk.rb:19:in `call'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/s3_dualstack.rb:24:in `call'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/s3_accelerate.rb:34:in `call'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/idempotency_token.rb:18:in `call'
/gems/aws-sdk-core-2.7.0/lib/aws-sdk-core/plugins/param_converter.rb:20:in `call'
/gems/aws-sdk-core-2.7.0/lib/seahorse/client/plugins/response_target.rb:21:in `call'
/gems/aws-sdk-core-2.7.0/lib/seahorse/client/request.rb:70:in `send_request'
/gems/aws-sdk-core-2.7.0/lib/seahorse/client/base.rb:207:in `block (2 levels) in define_operation_methods'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/request.rb:24:in `call'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/operations.rb:41:in `call'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/operations.rb:61:in `call'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/resource.rb:147:in `load'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/resource.rb:120:in `data'
/gems/aws-sdk-resources-2.7.0/lib/aws-sdk-resources/resource.rb:223:in `block in add_data_attribute'

/gems/railties-4.2.7/lib/rails/commands/console.rb:110:in `start'
/gems/railties-4.2.7/lib/rails/commands/console.rb:9:in `start'
/gems/railties-4.2.7/lib/rails/commands/commands_tasks.rb:68:in `console'
/gems/railties-4.2.7/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/gems/railties-4.2.7/lib/rails/commands.rb:17:in `'