Closed linkyndy closed 4 years ago
What version of J/Ruby are you using? That appears to be an OpenSSL related issue, where "wrong version" would refer to the underlying SSL/TLS protocol. Check your OpenSSL version on your Docker image and use a newer Ruby version perhaps? Search around for OpenSSL "wrong version number" to start.
Are you referring to this image? https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.Docker.html
Hey @mullermp, thanks for your reply. I am using Ruby 2.7.0 and OpenSSL 1.1.1 (on MacOS Catalina). Yes, I am referring to the DynamoDB Docker image.
I'm thinking that your DynamoDB local service is not using TLSv1.2. Could you try starting aws-v3.rb
with the -v
option or adding http_wire_trace: true
to the Client options, and pasting the output?
@mullermp here's the output with http_wire_trace: true
:
irb(main):060:0> client = Aws::DynamoDB::Client.new(region: 'local', access_key_id: 'sdfsdf', secret_access_key: 'sfddsf', http_wire_trace: true)
irb(main):061:0> migration = Aws::Record::TableMigration.new(Peek::Item, client: client)
irb(main):062:1* migration.create!(
irb(main):063:2* provisioned_throughput: {
irb(main):064:2* read_capacity_units: 5,
irb(main):065:2* write_capacity_units: 2
irb(main):066:1* },
irb(main):067:2* global_secondary_index_throughput: {
irb(main):068:3* format_created_index: {
irb(main):069:3* read_capacity_units: 3,
irb(main):070:3* write_capacity_units: 1
irb(main):071:2* }
irb(main):072:1* }
irb(main):073:0> )
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
opening connection to localhost:8000...
opened
starting SSL for localhost:8000...
Conn close because of connect error SSL_connect returned=1 errno=0 state=error: wrong version number
Traceback (most recent call last):
16: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/aws-sdk-core/plugins/transfer_encoding.rb:24:in `call'
15: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/aws-sdk-core/plugins/signature_v4.rb:66:in `call'
14: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/aws-sdk-core/json/error_handler.rb:8:in `call'
13: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-dynamodb-1.45.0/lib/aws-sdk-dynamodb/plugins/crc32_validation.rb:30:in `call'
12: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/plugins/content_length.rb:15:in `call'
11: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/net_http/handler.rb:47:in `call'
10: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/net_http/handler.rb:73:in `transmit'
9: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/net_http/handler.rb:121:in `session'
8: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/net_http/connection_pool.rb:97:in `session_for'
7: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/aws-sdk-core-3.91.1/lib/seahorse/client/net_http/connection_pool.rb:299:in `start_session'
6: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/delegate.rb:83:in `method_missing'
5: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/http.rb:938:in `start'
4: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/http.rb:943:in `do_start'
3: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/http.rb:1009:in `connect'
2: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/protocol.rb:44:in `ssl_socket_connect'
1: from /Users/andrei/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/protocol.rb:44:in `connect_nonblock'
Seahorse::Client::NetworkingError (SSL_connect returned=1 errno=0 state=error: wrong version number)
Not sure how shall I take it from here 🤔
It seems that by default, the DynamoDB client was trying to use https when constructing the endpoint, and since DynamoDB Local uses http, it caused the above error.
I've fixed it by manually providing the endpoint when creating the client:
client = Aws::DynamoDB::Client.new(region: 'local', access_key_id: 'sdfsdf', secret_access_key: 'sfddsf', endpoint: 'http://localhost:8000')
Ah ok! That makes sense that there was some mismatch on OpenSSL version (the mismatch was that there was no cipher in http). I'm glad you were able to figure it out.
Hello, I am trying to run a table migration on a local instance of DynamoDB (using the Docker image). Here's what I am trying:
The local instance of DynamoDB is running, since I am able to query it from my terminal.
I can't tell what is wrong here. Would appreciate any guidance!