моя цель - создать задание MediaConvert из заданного шаблона, используя boto3 с python: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mediaconvert.html#MediaConvert.Client.create_job
По-видимому, MediaConvert не может определить регион моего выходного ведра s3. У меня сложилось впечатление, что ведра были глобальными, но даже после некоторой переделки я не смог решить проблему.
Вот сообщение об ошибке на панели инструментов MediaConvert:
Could not identify region for bucket s3.Bucket(name='mybucket'): Failed to lookup region of buckets3.Bucket(name='mybucket')
Код ошибки 1404.
Когда я нажимаю на группу вывода на панели инструментов для невыполненного задания, меня перенаправляют на «https://console.aws.amazon.com/s3/buckets/s3.Bucket(имя='mybucket')/?region=us-east-1», что, очевидно, не может разрешить ведро. Правильный путь был бы "https://console.aws.amazon.com/s3/buckets/mybucket/?region=us-east-1".
Вот код, который запускает задание:
media_client = boto3.client('mediaconvert', region_name='us-east-1')
endpoints = media_client.describe_endpoints()
customer_media_client = boto3.client('mediaconvert', region_name='us-east-1', endpoint_url=endpoints['Endpoints'][0]['Url'])
customer_media_client.create_job(
JobTemplate='job-template',
Role='arn:aws:iam::1234567890:role/MediaConvert',
Settings=...
В настройках я использую следующие OutputGroupSettings:
"OutputGroupSettings": {
"Type": "FILE_GROUP_SETTINGS",
"FileGroupSettings": {
"Destination": "s3://%s/" % target_bucket
}
}
Я убедился, что задания MediaConvert и корзины S3 находятся в одном регионе (us-east-1).
Есть идеи, о чем ошибка? Если вам нужно больше кода, пожалуйста, дайте мне знать.
Я также задавал этот вопрос на форумах aws: https://forums.aws.amazon.com/thread.jspa?threadID=304143





Я решил проблему, извлекая "s3://%s/" % target_bucket в отдельное объявление.
s3_target = "s3://%s/" % target_bucket
...
"Destination": s3_target
Похоже, это известная проблема, связанная с оператором форматирования строки %, используемым в словаре Python.
В фиксации Проблема № 14123: Явно упомяните, что форматирование строки % в старом стиле имеет оговорки, но не исчезнет в ближайшее время..
The use of a binary operator means that care may be needed in order to format tuples and dictionaries correctly.
Проверьте этот отвечать для более подробной информации.
Это объясняет, почему выполнение задания за пределами dict решает проблему. Рассмотрите возможность использования метода .format() для замены %.
Мое сообщение об ошибке
Я получил такое же сообщение об ошибке от MediaConvert, но в моей проблеме отсутствовал "/" после имени корзины в «Назначении».
Первоначально мой код был:
FileGroupSettings['Destination'] = 's3://' + bucketName + S3key
Добавив косую черту, он мог бы найти нужное ведро
FileGroupSettings['Destination'] = 's3://' + bucketName + '/' + S3key
у твоего ведра есть точка в названии? Кроме того, вам удалось решить проблему?