AWS ElasticSearch からデータを取得する以下のような ruby プログラムを EC2 上で動かしたいです

require 'elasticsearch'

  es_url = 'https://xxxxxxxxxx'

  es = Elasticsearch::Client.new ({
    log: false,
    url: es_url,
    request_timeout: 60
  })

  puts 'query start'
  results = es.search({
        index: 'xxxxxxxxxx',
        q: {query: {match_all: {}}},
        size: 10000,
        scroll: '1m'
      })
  puts results

これを EC2 で走らせたところ
'query start'
が出力されたところで固まってしまい
数分たってから execution expired というエラーがでます

これをEC2ではないローカルPCから同じESエンドポイントに対して動かすと数秒で実行は完了します

また EC2 上で

curl <es_url>/<index>/search

を叩いてもやはり結果はすぐ返ってきます
同じシェル上で

ruby es_test.rb

と上記スクリプトを実行した場合だけESへのアクセスが固まってしまいます

ES のアクセスポリシーは IP のみです
(セキュリティの問題でアクセスポリシーは見せられないのですが
何の認証情報も載せてない curl で結果が返ってくるので問題ないと思われます)

ローカルですぐに実行が終わる = ESへのクエリ内容が重いわけではない
curl でつながる = ネットワークの設定や権限が間違ってるわけではない

ということになると思うんですが
EC2 上かつプログラムを通した場合だけうまく動かず困っています

パラメータはソース内にすべて固定で書いていて環境依存するパラメータもないように思うのですが
elasticsearch ジェムが何かしらの環境情報をみているということでしょうか

原因や解決方法がわかる方いましたら教えていただけないでしょうか
よろしくお願いいたします

追記

es.search

の中をデバッグする方法はないものでしょうか

リクエストをそもそも送ってないのか
送ってるとしたらどういうリクエストを投げてるのか
サーバー側がうまく処理できてないのかを切り分けたいのですが…