AWS Transcribe Error: Unable to determine service/operation name to be authorized
AWS Transcribe Error: Unable to determine service/operation name to be authorized
经过长时间使用 AWS 转录后,我现在在使用 Postman 时遇到新错误:
<AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
但是,我不知道是什么问题。我尝试 Google 它但错误似乎也发生在 AWS Lambda 中。但我正在使用 AWS Transcription。任何人都可以检查似乎是什么问题吗?
我的示例 GET 请求示例是:
https://transcribestreaming.us-east-1.amazonaws.com/medical-stream-transcription-websocket?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYACCESSKEYID%2F20200404%2Fus-east-1%2Ftranscribe%2Faws4_request&X-Amz-Date=20200404T171802Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&language-code=en-US&media-encoding=pcm&sample-rate=16000&specialty=PRIMARYCARE&type=DICTATION&X-Amz-Signature=5f5f0a5d336e524b335245b6e83945d3057ec3905a9ae2d2ca709b77cce5478f
为了安全起见,我特意将 X-Amz-Credential
替换为 MYACCESSKEYID。
您似乎正在尝试连接到 Amazon Transcribe Medical 的 websocket 端点。查看您的 GET 请求后,您似乎缺少端口号 8443,因此您的请求未路由到 websocket 端点。
https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-streaming-request-med 描述了创建双向请求以转录医疗流端点的示例。
可能有两个错误:
1) "https://" 请求连接到默认端口 443。这会导致 "Unable to determine service/operation name to be authorized" 错误。请明确使用端口:8443。
2) 您的客户端没有正确处理 websocket 升级。在第一个打开连接的请求中,您的客户端需要通过包含多个 headers 来启动 websocket 升级,如 https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-response-med
的 "Including WebSocket Request Headers" 部分中所指定
卷曲示例:
curl --include --no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: transcribestreaming.us-east-1.amazonaws.com:8443" \
--header "Origin: http://localhost:3000" \
--header "Sec-WebSocket-Key: tEfHvBSx8jqQyZgCNrhI3w" \
--header "Sec-WebSocket-Version: 13" \
"https://transcribestreaming.us-east-1.amazonaws.com:8443/medical-stream-transcription-websocket?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYCREDENTIAL&X-Amz-Date=20200406T211542Z&X-Amz-Expires=60&X-Amz-Signature=MYSIGNATURE&X-Amz-SignedHeaders=host&language-code=en-US&media-encoding=pcm&sample-rate=16000&specialty=PRIMARYCARE&type=DICTATION"
请求成功后,客户端收到“101 切换协议”。连接已建立,然后您可以按照 https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-streaming-request-med
中的说明继续发送音频帧
经过长时间使用 AWS 转录后,我现在在使用 Postman 时遇到新错误:
<AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
但是,我不知道是什么问题。我尝试 Google 它但错误似乎也发生在 AWS Lambda 中。但我正在使用 AWS Transcription。任何人都可以检查似乎是什么问题吗?
我的示例 GET 请求示例是:
https://transcribestreaming.us-east-1.amazonaws.com/medical-stream-transcription-websocket?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYACCESSKEYID%2F20200404%2Fus-east-1%2Ftranscribe%2Faws4_request&X-Amz-Date=20200404T171802Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&language-code=en-US&media-encoding=pcm&sample-rate=16000&specialty=PRIMARYCARE&type=DICTATION&X-Amz-Signature=5f5f0a5d336e524b335245b6e83945d3057ec3905a9ae2d2ca709b77cce5478f
为了安全起见,我特意将 X-Amz-Credential
替换为 MYACCESSKEYID。
您似乎正在尝试连接到 Amazon Transcribe Medical 的 websocket 端点。查看您的 GET 请求后,您似乎缺少端口号 8443,因此您的请求未路由到 websocket 端点。
https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-streaming-request-med 描述了创建双向请求以转录医疗流端点的示例。
可能有两个错误:
1) "https://" 请求连接到默认端口 443。这会导致 "Unable to determine service/operation name to be authorized" 错误。请明确使用端口:8443。
2) 您的客户端没有正确处理 websocket 升级。在第一个打开连接的请求中,您的客户端需要通过包含多个 headers 来启动 websocket 升级,如 https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-response-med
的 "Including WebSocket Request Headers" 部分中所指定卷曲示例:
curl --include --no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: transcribestreaming.us-east-1.amazonaws.com:8443" \
--header "Origin: http://localhost:3000" \
--header "Sec-WebSocket-Key: tEfHvBSx8jqQyZgCNrhI3w" \
--header "Sec-WebSocket-Version: 13" \
"https://transcribestreaming.us-east-1.amazonaws.com:8443/medical-stream-transcription-websocket?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYCREDENTIAL&X-Amz-Date=20200406T211542Z&X-Amz-Expires=60&X-Amz-Signature=MYSIGNATURE&X-Amz-SignedHeaders=host&language-code=en-US&media-encoding=pcm&sample-rate=16000&specialty=PRIMARYCARE&type=DICTATION"
请求成功后,客户端收到“101 切换协议”。连接已建立,然后您可以按照 https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket-streaming-request-med
中的说明继续发送音频帧