AWS MediaConvert не смог определить регион для сегмента s3.Bucket(name='myname')

Моя цель - создать задание MediaConvert из данного шаблона с помощью boto3 с python: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mediaconvert.html

По-видимому, 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(name='mybucket') /? Регион =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

2 ответа

Похоже, это известная проблема, связанная с оператором форматирования строки, используемым в словаре Python.

В коммите Проблема № 14123: Явно упомяните, что форматирование строки% в старом стиле имеет оговорки, но не исчезнет в ближайшее время .

Использование бинарного оператора означает, что для правильного форматирования кортежей и словарей может потребоваться осторожность.

Проверьте этот ответ для получения более подробной информации.

Это объясняет, почему вывод задания за пределы диктовки решает проблему. Рассмотрите возможность использования .format() метод замены %.

Мое сообщение об ошибке

Я получил такое же сообщение об ошибке от MediaConvert, но в моей проблеме не было "/" после имени сегмента в поле «Назначение».

Первоначально мой код был:

      FileGroupSettings['Destination'] = 's3://' + bucketName + S3key

Добавив косую черту, он может найти нужное ведро

      FileGroupSettings['Destination'] = 's3://' + bucketName + '/' + S3key

Я решил проблему, распаковав "s3://%s/" % target_bucket в отдельную декларацию.

s3_target = "s3://%s/" % target_bucket

...

"Destination": s3_target
Другие вопросы по тегам