Персонализирует ли SDK для AWS работу с Ruby? - PullRequest
0 голосов
/ 11 апреля 2019

Я настраиваю веб-клиент в приложении ruby ​​on rails внутри док-контейнера и хочу, чтобы он использовал Amazon Personalize SDK.Документация написана для Python и интерфейса командной строки AWS.Я пишу пример запроса в ruby ​​с использованием библиотеки Net :: HTTP и сталкиваюсь с проблемами.

В настоящее время мой запрос возвращает ошибку 403 и <InvalidSignatureException> <Message>Credential should be scoped to correct service: 'personalize'. </Message>.Я думаю, что моя проблема в том, что я не использую правильный host

Buttt, когда я связываю драгоценный камень aws-sdk, я вижу много aws-sdk драгоценных камней, которые связаны как aws-sdk-#{name_of_aws_service}, но нетaws-sdk-personalize.Итак, мой вопрос, почему это?Я лаю не на том дереве, пытаясь сделать это с Руби?Нужно ли учить Python?

host = # removed because SO
service = 'es'
region = '' #removed because SO

signer = Aws::Sigv4::Signer.new(
  service: service,
  region: region,
  access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
)
document = {
  # removed because SO
}

signature = signer.sign_request(
  http_method: 'PUT',
  url: host,
  body: document.to_json
)

uri = URI(host)

Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
  request = Net::HTTP::Put.new uri
  request.body = document.to_json
  request['Host'] = signature.headers['host']
  request['X-Amz-Date'] = signature.headers['x-amz-date']
  request['X-Amz-Security-Token'] = signature.headers['x-amz-security-token']
  request['X-Amz-Content-Sha256']= signature.headers['x-amz-content-sha256']
  request['Authorization'] = signature.headers['authorization']
  request['Content-Type'] = 'application/json'
  response = http.request request
  puts response.code
  puts response.body
end

1 Ответ

0 голосов
/ 18 апреля 2019

Ответ, который я получил от внимательного прочтения документации, был "нет".В любом случае, AWS Personalize не для общего выпуска.Поэтому я собираюсь отметить это как решенное и двигаться дальше.

...