この ( https://towardsdatascience.com/speech-to-text-using-aws-transcribe-s3-and-lambda-a6e88fb3a48e ) ブログに従って、文字起こしファイルを作成しています。ビデオはコンソールから S3 にアップロードされ、それが 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']
}