get aws lambda, чтобы начать транскрибировать работу с именем файла без расширения - PullRequest
0 голосов
/ 19 марта 2020

У меня есть лямбда-функция, которая запускает задание на запись, когда объект помещается в корзину s3. У меня возникли проблемы с настройкой задания на запись в качестве имени файла без расширения; также файл по какой-то причине не помещается в папку с префиксом в S3-корзине, вот что у меня есть:

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

transcribe = boto3.client('transcribe')

def lambda_handler(event, context):
    if event:
        file_obj = event["Records"][0]
        bucket_name = str(file_obj['s3']['bucket']['name'])
        file_name = str(file_obj['s3']['object']['key'])
        s3_uri = create_uri(bucket_name, file_name)
        job_name = filename

        print(os.path.splitext(file_name)[0])

        transcribe.start_transcription_job(TranscriptionJobName = job_name,
                                           Media = {'MediaFileUri': s3_uri},
                                           MediaFormat =  'mp3',
                                           LanguageCode = "en-US",
                                           OutputBucketName = "sbox-digirepo-transcribe-us-east-1",
                                           Settings={
                                            # 'VocabularyName': 'string',
                                            'ShowSpeakerLabels': True,
                                            'MaxSpeakerLabels': 2,
                                            'ChannelIdentification': False
                                        })
        while Ture:
            status = transcribe.get_transcription_job(TranscriptionJobName=job_name)
            if status["TranscriptionJob"]["TranscriptionJobStatus"] in ["COMPLETED", "FAILED"]:
                break
            print("Transcription in progress")
            time.sleep(5)

        s3.put_object(Bucket = bucket_name, Key="output/{}.json".format(job_name), Body=load_)
    return {
        'statusCode': 200,
        'body': json.dumps('Transcription job created!')
    }

def create_uri(bucket_name, file_name):
    return "s3://"+bucket_name+"/"+file_name

ошибка, которую я получаю,

[ERROR] BadRequestException: An error occurred (BadRequestException) when calling the StartTranscriptionJob operation: 1 validation error detected: Value 'input/7800533A.mp3' at 'transcriptionJobName' failed to satisfy constraint: Member must satisfy regular expression pattern: ^[0-9a-zA-Z._-]+

, поэтому мой желаемый вывод для этого случая значение TranscriptionJobName должно быть 7800533A, а результат OutputBucketName должен быть в s3bucket / output. любая помощь приветствуется, спасибо заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...