首页 > 解决方案 > 使用 Lambda 将转录的 json 文件存储到 s3 中的特定文件夹

问题描述

我正在关注这个(https://towardsdatascience.com/speech-to-text-using-aws-transcribe-s3-and-lambda-a6e88fb3a48e)博客来创建一个转录文件。视频从控制台上传到 S3,并触发 lambda 函数,该函数调用 Transcribe API 并将该文件存储在目标存储桶中。所以一切运行良好。

但它将文件放在 S3 的根文件夹中。我想在 Lambda 代码的目标存储桶中给出前缀。这意味着我想以这种方式存储转录文件s3://<bucketname>/<folder1>/transcibe.json

我在 OutputBucketName(代码中的第 32 行)上尝试了多种方法,但仍然没有任何效果。

import boto3
import uuid
import json

def lambda_handler(event, context):

    record = event['Records'][0]
    print(record)
    
    s3bucket = record['s3']['bucket']['name']
    s3object = record['s3']['object']['key']
    sourcekey=s3object
    
    s3Path = "s3://" + s3bucket + "/" + s3object
    print(s3Path)
    print(s3object.split("/"))
    
    jobName = (s3object[-1]) + '-' + str(uuid.uuid4())
    destkey = sourcekey-s3object[-1] 
    print(destkey)

    client = boto3.client('transcribe')

    response = client.start_transcription_job(
        TranscriptionJobName=jobName,
        LanguageCode='en-GB',
        MediaFormat='mp4',
        Media={
            'MediaFileUri': s3Path
        },
        OutputKey=destkey,
        OutputBucketName = "destination-bucket-name"
    )


    return {
        'TranscriptionJobName': response['TranscriptionJob']['TranscriptionJobName']
    }

标签: pythonamazon-web-servicesamazon-s3aws-lambdaaws-transcribe

解决方案


推荐阅读