AWS Ошибка записи: невозможно определить имя службы / операции для авторизации. - PullRequest
0 голосов
/ 04 апреля 2020

После серии долгих часов работы с транскрипцией AWS у меня появилась новая ошибка с использованием Почтальона:

<AccessDeniedException>
  <Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>

Однако я не знаю, в чем проблема. Я попытался Google это, но ошибка, кажется, происходит также в AWS Lambda. Но я работаю с AWS Транскрипцией. Может кто-нибудь проверить, в чем проблема?

Мой пример 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 в целях безопасности.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Возможно две ошибки:

1) Запрос «https: //» подключается к порту по умолчанию 443. Это приводит к ошибке «Невозможно определить имя службы / операции для авторизации». Пожалуйста, явно используйте порт: 8443.

2) Ваш клиент неправильно обрабатывает обновление websocket. В первом запросе на открытие соединения ваш клиент должен инициировать обновление websocket, включив несколько заголовков, как указано в разделе «Включение заголовков запроса WebSocket» в https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket -response-med

Пример в curl:

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

1 голос
/ 07 апреля 2020

Похоже, вы пытаетесь подключиться к конечной точке веб-сокета Amazon Transcribe Medical. При просмотре вашего запроса GET выясняется, что вам не хватает номера порта 8443, из-за которого ваш запрос не перенаправляется на конечную точку веб-сокета.

https://docs.aws.amazon.com/transcribe/latest/dg/websocket-med.html#websocket -streaming-request-med описывает пример создания двунаправленного запроса для расшифровки конечной точки медицинского потока.

...