Пакет MturkR (https://github.com/cloudyr/MTurkR) перестанет работать с 1 июня 2019 г., так как AWS устарел унаследованным API, и этот пакет настроен только для унаследованного API.
Я полагаю, что многим другим нужен способ вызывать API MTurk через R, поскольку я не знаю ни одного другого пакета R, который может это сделать.
Может ли кто-нибудь предоставить пример кода, как сделать вызов нового API mturk через R? Он использует Signature Version 4, которую, я знаю, можно реализовать с помощью пакета aws.signature для R, но я не могу понять, как сгенерировать и отправить запрос в API mturk. Возможно, у меня нет правильно настроенного запроса, поэтому пример, который работает, был бы фантастическим для меня и других. В этом примере я пытаюсь запросить операцию GetAssignment (https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetAssignmentOperation.html).
Я пытался использовать пакет aws.signature для генерации и отправки запроса, но безуспешно.
library(aws.signature)
hdrs <- list( Host = "mturk-requester.us-east-1.amazonaws.com",
`x-amz-date` = "20110909T233600Z"
)
hdrs
r <- canonical_request(verb = "POST",
canonical_uri="/",
query_args=list(),
canonical_headers=hdrs,
request_body='
{
"AssignmentId": "3ZURAPD288NZQKK965W2FVL02P6F17"
}')
r
Это генерирует текст канонического запроса, но я не знаю, как отправить его в API, и я не знаю, нужны ли еще какие-либо функции для завершения подписи.
Ответ:
г
$ headers
[1] "host; x-amz-date"
$ тела
[1] "1d67d950ce9a1f712609c9c9d794b210d8c78bc0334e54f0fdcb4fd46d65f3f5"
$ канонических
[1] "POST \ п / \ п \ nhost: mturk-requester.us-east-1.amazonaws.com \ пх-AMZ-дата: 20110909T233600Z \ N \ nhost; х-AMZ-дата \ n1d67d950ce9a1f712609c9c9d794b210d8c78bc0334e54f0fdcb4fd46d65f3f5" * 1 025 *
$ хэш
[1] "16814afb1f9c9c5094a8b3ede035365a687c68c7b6dcbe0f688aaeb8b6656f10"