Как декодировать ion_binary из Amazon QLDB в ruby
Я играл с QLDB Amazon с ruby и использовал гем aws-sdk-qldb и aws-sdk-qldbsession. Получал результат как IonBinary. Но не смог его расшифровать и разобрать.
Ниже приведен код
cred = Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY'])
qldb_session_client = Aws::QLDBSession::Client.new(region: 'ap-southeast-1', credentials: cred)
start_session_req = Aws::QLDBSession::Types::StartSessionRequest.new
start_session_req.ledger_name = 'ledger-test'
command_request = Aws::QLDBSession::Types::SendCommandRequest.new
command_request.start_session = start_session_req
resp = qldb_session_client.send_command(command_request)
session_token = resp.start_session.session_token
command_request = Aws::QLDBSession::Types::SendCommandRequest.new
command_request.session_token = session_token
command_request.start_transaction = Aws::QLDBSession::Types::StartTransactionRequest.new
resp = qldb_session_client.send_command(command_request)
transaction_id = resp.start_transaction.transaction_id
command_request = Aws::QLDBSession::Types::SendCommandRequest.new
command_request.session_token = session_token
command_request.execute_statement = Aws::QLDBSession::Types::ExecuteStatementRequest.new
command_request.execute_statement.transaction_id = transaction_id
command_request.execute_statement.statement = 'select * from testing'
resp = qldb_session_client.send_command(command_request)
теперь, если я использую следующий код
resp.execute_statement.first_page.values[0]
я получил
{:ion_binary=>"\xE0\x01\x00\xEA\xEE\x9A\x81\x83\xDE\x96\x87\xBE\x93\x89firstname\x88lastname\xDE\x9D\x8A\x8Dtesting first\x8B\x8Ctesting last", :ion_text=>"[FILTERED]"}
Я не могу декодировать этот ion_binary с помощью двоичного парсера.
1 ответ
Декодирование потока, скорее всего, будет выполнено с Aws::EventStream::Decoder#decode
. Тем не менее, должно работать примерно так, как показано ниже.
Aws::EventStream::Decoder.new.decode(
StringIO.new(result[:ion_binary])
)