#1 by Scott
Hi there, trying to deploy to MTurk, but get the error below when trying to Publish HIT to sandbox:
WSL Ubuntu: 22.04
otree: 5.10.1 (Installed otree[mturk])
python: 3.9.15
Error:
Exception in ASGI application
Traceback (most recent call last):
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/otree/mturk_client.py", line 144, in call_api
resp = urlopen(request, data=request_body)
File "/usr/lib/python3.9/urllib/request.py", line 214, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.9/urllib/request.py", line 523, in open
response = meth(req, response)
File "/usr/lib/python3.9/urllib/request.py", line 632, in http_response
response = self.parent.error(
File "/usr/lib/python3.9/urllib/request.py", line 561, in error
return self._call_chain(*args)
File "/usr/lib/python3.9/urllib/request.py", line 494, in _call_chain
result = func(*args)
File "/usr/lib/python3.9/urllib/request.py", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py", line 396, in run_asgi
result = await app(self.scope, self.receive, self.send)
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
return await self.app(scope, receive, send)
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
await self.middleware_stack(scope, receive, send)
...
...
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/otree/views/mturk.py", line 133, in post
hit = TurkClient.create_hit(mturk_hit_parameters, use_sandbox=use_sandbox)[
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/otree/mturk_client.py", line 167, in create_hit
return call_api('CreateHIT', request_params, use_sandbox=use_sandbox)
File "/mnt/d/venv/otree5p9/lib/python3.9/site-packages/otree/mturk_client.py", line 146, in call_api
msg = json.loads(exc.read().decode('utf8'))['Message']
KeyError: 'Messag
Any ideas?
Thanks
#2
by
Chris_oTree
Can you put a print statement in this file:
/mnt/d/venv/otree5p9/lib/python3.9/site-packages/otree/mturk_client.py
Before that line in the traceback, put:
print(exc.read().decode('utf8'))
What is the output?
#3 by Scott
Hi Chris, this is the output:
{"__type":"UnrecognizedClientException","message":"The security token included in the request is invalid."}
I guess this points to invalid AWS keys - I made a couple up for testing. My keys are:
AWS_SECRET_ACCESS_KEY=asfdghhj
AWS_ACCESS_KEY_ID=swinljnsov
The key creation instructions here: https://otree.readthedocs.io/en/latest/mturk.html#local-sandbox-testing look very different to the ones on the current AWS site, and the link to the AWS site no longer works.
I couldn't figure out how to generate them using the AWS Certificate Manager. Any pointers would be much appreciated.
Thanks
#4 by Scott
... Sorry, I meant the Key Manager Service (Not ACM)