AWS MediaConvert 无法识别存储桶 s3.Bucket(name='myname') 的区域
AWS MediaConvert could not identify region for bucket s3.Bucket(name='myname')
我的目标是使用 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", which obviously fails to resolve a bucket. The correct path would have been "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 中:Explicitly mention that old style % string formatting has caveats but is not going away any time soon。
The
use of a binary operator means that care may be needed in order to
format tuples and dictionaries correctly.
查看此 answer 了解更多详情。
这解释了为什么通过在字典之外进行赋值可以解决问题。考虑使用 .format()
方法替换 %
.
我的错误信息
我从 MediaConvert 收到了相同的错误消息,但我的问题是“目标”中的存储桶名称后缺少 "/"
。
最初我的代码是:
FileGroupSettings['Destination'] = 's3://' + bucketName + S3key
通过添加斜杠,它可以定位到正确的桶
FileGroupSettings['Destination'] = 's3://' + bucketName + '/' + S3key
我的目标是使用 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", which obviously fails to resolve a bucket. The correct path would have been "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 中:Explicitly mention that old style % string formatting has caveats but is not going away any time soon。
The use of a binary operator means that care may be needed in order to format tuples and dictionaries correctly.
查看此 answer 了解更多详情。
这解释了为什么通过在字典之外进行赋值可以解决问题。考虑使用 .format()
方法替换 %
.
我的错误信息
我从 MediaConvert 收到了相同的错误消息,但我的问题是“目标”中的存储桶名称后缺少 "/"
。
最初我的代码是:
FileGroupSettings['Destination'] = 's3://' + bucketName + S3key
通过添加斜杠,它可以定位到正确的桶
FileGroupSettings['Destination'] = 's3://' + bucketName + '/' + S3key