[英]AWS Transcribe StartTransciptionJob API error
我正在嘗試訪問存儲在我擁有的已啟用阻止公共訪問的 s3 存儲桶中的 mp3 文件。 當我將 mp3 上傳到我的源 s3 存儲桶時,這會觸發我的 Lambda function 應該初始化轉錄作業。 我有兩個問題:
兩條 CloudWatch 錯誤消息:
“調用 StartTranscriptionJob 操作時發生錯誤 (BadRequestException):檢測到 1 個驗證錯誤:‘transcriptionJobName’處的值‘source/2004-DNC.mp3’未能滿足約束:成員必須滿足正則表達式模式:^[0-9a- zA-Z._-]+"
“調用 StartTranscriptionJob 操作時發生錯誤 (BadRequestException):無法訪問您提供的 S3 URI。請確保您具有讀取權限並重試您的請求。”
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)
{
"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.