1

我的目标是使用 boto3 和 python 从给定模板创建 MediaConvert 作业: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(name= '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

4

2 回答 2

1

它看起来像是一个与%Python 字典中使用的字符串格式化运算符相关的已知问题。

在提交问题 #14123:明确提到旧式 % 字符串格式有一些警告,但不会很快消失

使用二元运算符意味着可能需要注意正确格式化元组和字典。

检查此答案以获取更多详细信息。

这解释了为什么通过在 dict 之外进行分配可以解决问题。考虑使用.format()替换的方法%

我的错误信息

我从 MediaConvert 收到了相同的错误消息,但我的问题是"/"在“目标”中的存储桶名称之后缺少一个。

最初我的代码是:

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

通过添加斜线,它可以找到正确的桶

FileGroupSettings['Destination'] = 's3://' + bucketName + '/' + S3key
于 2021-07-09T22:21:14.323 回答
0

我通过提取"s3://%s/" % target_bucket到单独的声明中解决了这个问题。

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

...

"Destination": s3_target
于 2019-10-14T10:07:33.280 回答