mTurk send_test_event_notification 不适用于 SQS 传输

mTurk send_test_event_notification does not work for SQS transport

当我使用电子邮件作为传输方式时,一切正常。一旦我选择 SQS,它就会失败,即使队列本身可以正常工作。 下面的代码会引发以下错误: File "/Users/chapkovski/mynewotree/lib/python3.5/site-packages/botocore/client.py", line 310, in _api_call return self._make_api_call(operation_name, kwargs) File "/Users/chapkovski/mynewotree/lib/python3.5/site-packages/botocore/client.py", line 599, in _make_api_call raise error_class(parsed_response, operation_name) botocore.exceptions.ClientError: An error occurred (InternalFailure) when calling the SendTestEventNotification operation (reached max retries: 4):

代码如下:

endpoint_url = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com'
client = boto3.client('mturk',
                  endpoint_url=endpoint_url
                  )
sqs = boto3.resource('sqs')
queue = sqs.get_queue_by_name(QueueName='whatever2')
response = client.send_test_event_notification(
Notification={
    'Destination': queue.url,
    'Transport': 'SQS',
    'Version': '2006-05-05',
    'EventTypes': [
        'Ping', 'AssignmentReturned'
    ]
},
TestEventType='AssignmentReturned'
)

您收到此错误的原因很可能是因为您没有在 SQS 队列中配置权限。您需要添加权限以允许 Mechanical Turk 系统帐户在您的队列上调用 sqs:SendMessage 操作。 Follow the steps listed here on how to do so.

完成后,您的权限应如下所示:

然后再次尝试该代码,您应该会收到 200 响应。