Je tente d'utiliser une requête GET pour utiliser la fonction Amazon Mechanical Turk GetFileUploadURL. Cependant, je reçois ce code d'erreur lors de la tentative.AWSAccessKeyId non autorisé
AWS.NotAuthorized The identity contained in the request is not authorized to use this AWSAccessKeyId
Ceci est le code que j'utilise pour créer la requête.
now = DateTime.now
#For creating the signature hash
data = "AWSMechanicalTurkRequesterGetFileUploadURL" + now.to_s
sha256 = OpenSSL::Digest::SHA256.new
sig = OpenSSL::HMAC.digest(sha256, Rails.configuration.secret_key, data)
signature = Base64.encode64(sig)
puts "https://mechanicalturk.amazonaws.com", "/?Service=AWSMechanicalTurkRequester&AWSAccessKeyId=#{Rails.configuration.aws_key}&Version=2014-08-15&Operation=GetFileUploadURL&Signature=#{sig}&Timestamp=#{now}&AssignmentId=#{mturk_results[0][:AssignmentId]}&QuestionIdentifier=file1"
puts "\n\n"
uri = URI('https://mechanicalturk.amazonaws.com')
params = {:Service=>"AWSMechanicalTurkRequester", :AWSAccessKeyId=>Rails.configuration.aws_key, :Version=>"2014-08-15", :Operation=>"GetFileUPloadURL", :Signature=>sig, :Timestamp=>now, :AssignmentId=>mturk_results[0][:AssignmentId], :QuestionIdentifier=>"file1"}
uri.query = URI.encode_www_form(params)
res = 0
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Get.new uri
res = http.request request # Net::HTTPResponse object
end
Des idées sur ce que je fais mal?
Pourquoi ne pas utiliser le SDK officiel Ruby d'Amazon ou rturk peut-être? Peu importe, MTurk est très pointilleux sur la mise en forme de la date, donc je suppose que c'est le problème. – Thomas
Impossible de trouver des fonctions dans le SDK Ruby pour récupérer les résultats de fichiers. Je reçois un fichier UploadedFileKey de getHITResults, qui contient une partie d'une URL à ajouter à une base, mais je n'ai pas pu l'utiliser. – ceaston7