簡體   English   中英

AWS Transcribe StartTransciptionJob API 錯誤

[英]AWS Transcribe StartTransciptionJob API error

我正在嘗試訪問存儲在我擁有的已啟用阻止公共訪問的 s3 存儲桶中的 mp3 文件。 當我將 mp3 上傳到我的源 s3 存儲桶時,這會觸發我的 Lambda function 應該初始化轉錄作業。 我有兩個問題:

  1. 我不知道我用於MediaFileUri的 s3 object URL 是否正確。 我看到了相互矛盾的信息
  2. 我不知道我的存儲桶是私有的是否有問題

兩條 CloudWatch 錯誤消息:

“調用 StartTranscriptionJob 操作時發生錯誤 (BadRequestException):檢測到 1 個驗證錯誤:‘transcriptionJobName’處的值‘source/2004-DNC.mp3’未能滿足約束:成員必須滿足正則表達式模式:^[0-9a- zA-Z._-]+"

“調用 StartTranscriptionJob 操作時發生錯誤 (BadRequestException):無法訪問您提供的 S3 URI。請確保您具有讀取權限並重試您的請求。”

Lambda Function

import boto3

s3 = boto3.client('s3')
transcribe = boto3.client('transcribe')

def lambda_handler(event, context):
    for record in event['Records']:
        source_bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        object_url = "s3://{0}/{1}".format(source_bucket, key)
    
        response = transcribe.start_transcription_job(
            TranscriptionJobName=key,
            Media={'MediaFileUri': object_url},
            MediaFormat='mp3',
            LanguageCode='en-US',
        )
        print(response)

IAM 政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::abcdefghijk-transcribe-source/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "transcribe:StartTranscriptionJob"
            ],
            "Resource": "*"
        }
    ]
}

此錯誤的答案必須分為以下幾部分:(1) object_url 變量的結構,而不是權限,即 IAM 策略。 以前的文檔列出了如下所示的路徑樣式格式: https://s3.us-west-2.amazonaws.com/BUCKET-NAME/OBJECT-KEY <<< 此樣式已被棄用。 它記錄在這里

使用https://BUCKET-NAME.s3.amazonaws.com/OBJECT-KEY虛擬主機格式解決了我的問題。

(2) TranscriptionJobName 需要 object 密鑰作為“字符串”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM