【问题标题】:AWS MediaConvert could not identify region for bucket s3.Bucket(name='myname')AWS MediaConvert 无法识别存储桶 s3.Bucket(name='myname') 的区域
【发布时间】:2021-07-10 06:21:14
【问题描述】:

我的目标是使用 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

【问题讨论】:

  • 您的存储桶名称中是否包含点?另外,您是否设法解决了这个问题?

标签: amazon-web-services amazon-s3 aws-media-convert


【解决方案1】:

这似乎是与 Python 字典中使用的 % 字符串格式化运算符相关的已知问题。

在提交问题 #14123:Explicitly mention that old style % string formatting has caveats but is not going away any time soon

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

查看answer了解更多详情。

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

我的错误信息

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

原来我的代码是:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2020-11-09
      相关资源
      最近更新 更多