Amazon Transcribe при загрузке S3: «[ERROR] BadRequestException: предоставленный URI не указывает на объект S3» - PullRequest
0 голосов
/ 03 июля 2019

Я пробую Amazon Transcribe на коллекции медиа-файлов, адаптируя образец кода документа и , использующий эту серию в качестве ссылки , чтобы соответствовать любой загрузке в мою назначенную папку мультимедиа S3, но возникли проблемы с моим тестовым файлом.

ЗАГРУЗИТЬ ВЕДРО / ПАПКА путь:

'MediaFileUri': https://us-west-2.console.aws.amazon.com/s3/buckets/upload-asr/mediaupload/file.mp4

Я подтвердил, что файл существует, и разрешения на доступ к нему предоставляют доступ к сервису Amazon Transcribe. Я могу запустить задание на ручную транскрипцию с того же URL-адреса, но не с SDK: я также напрямую связал его в функции, используя приведенный выше путь, но безрезультатно. Я понимаю, что это может быть проблема с URL-адресом, но мало что видел по этой теме, поэтому проверяю очевидную ошибку.

import json
import time
import boto3
from urllib.request import urlopen


def lambda_handler(event, context):
    transcribe = boto3.client("transcribe")
    s3 = boto3.client("s3")

    if event:
        file_obj = event["Records"][0]
        bucket_name = str(file_obj['s3']['bucket']['name'])
        file_name = str(file_obj['s3']['object']['key'])
        file_type = file_name.split(".")[1]
        s3_uri = create_uri(bucket_name, file_name)
        job_name = context.aws_request_id


        transcribe.start_transcription_job(TranscriptionJobName = job_name,
                                            Media = {'MediaFileUri': s3_uri},
                                            OutputBucketName = "bucket-name",
                                            MediaFormat = file_type,
                                            LanguageCode = "en-US")

def create_uri(bucket_name, file_name):

Отчет о сбое журнала CloudWatch:

[ERROR] BadRequestException: An error occurred (BadRequestException) when calling the StartTranscriptionJob operation: 
The URI that you provided doesn't point to an S3 object. Make sure that the object exists and try your request again.

Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 25, in lambda_handler
    LanguageCode = "en-US")
  File "/var/runtime/botocore/client.py", line 320, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/var/runtime/botocore/client.py", line 623, in _make_api_call
    raise error_class(parsed_response, operation_name) 

ПОХОЖИЕ: https://forums.aws.amazon.com/thread.jspa?messageID=876906&#876906

1 Ответ

1 голос
/ 08 июля 2019

Это работает для меня, используя этот формат:

Media={
    'MediaFileUri': f'https://s3-us-west-2.amazonaws.com/{BUCKET}/{KEY}'
},
...