弹性转码器 Boto3 Lambda
Elastic Transcoder Boto3 Lambda
当我尝试使用通过 python 函数 Boto3 从 Lambda 调用的 Elastic Transcoder 时,我听到了以下错误。 Cloudwatch Logs 中的错误是:"An error occurred (ValidationException) when calling the CreateJob operation: 1 validation error detected: Value 'PIPE' at 'pipelineId' failed to satisfy constraint: Member must satisfy regular expression pattern: ^\d{13}-\w{6}$"
根据我的代码,我在 Elastic Transcoder 中将我的管道 ID 的名称指定为 PIPE,它不喜欢使用的字符。我尝试了其他一些组合,例如数字和点。有没有人遇到过这个错误并解决过?我使用 AWS 示例代码作为起点。提前致谢!
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
# Job configuration settings. Set these values before running the script.
pipeline_id = 'PIPE' # ID of an existing Elastic Transcoder pipeline
input_file = 'ChiliChallenge.mp4' # Name of an existing file in the S3 input bucket
output_file = 'output' # Desired root name of the transcoded output files
# Other job configuration settings. Optionally change as desired.
output_file_prefix = 'elastic-transcoder-samples/output/hls/' # Prefix for all output files
segment_duration = '2' # Maximum segment duration in seconds
# Elastic Transcoder presets used to create HLS multi-segment
# output files in MPEG-TS format
hls_64k_audio_preset_id = '1351620000001-200071' # HLS Audio 64kb/second
hls_0400k_preset_id = '1351620000001-200050' # HLS 400k
hls_0600k_preset_id = '1351620000001-200040' # HLS 600k
hls_1000k_preset_id = '1351620000001-200030' # HLS 1M
hls_1500k_preset_id = '1351620000001-200020' # HLS 1.5M
hls_2000k_preset_id = '1351620000001-200010' # HLS 2M
# Define the various outputs
outputs = [
{
'Key': 'hlsAudio/' + output_file,
'PresetId': hls_64k_audio_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls0400k/' + output_file,
'PresetId': hls_0400k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls0600k/' + output_file,
'PresetId': hls_0600k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls1000k/' + output_file,
'PresetId': hls_1000k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls1500k/' + output_file,
'PresetId': hls_1500k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls2000k/' + output_file,
'PresetId': hls_2000k_preset_id,
'SegmentDuration': segment_duration,
},
]
# Define the playlist
playlists = [
{
'Name': 'hls_' + output_file,
'Format': 'HLSv3',
'OutputKeys': [x['Key'] for x in outputs]
}
]
# Create an HLS job in Elastic Transcoder
etc_client = boto3.client('elastictranscoder')
response = etc_client.create_job(PipelineId=pipeline_id,
Input={'Key': input_file},
Outputs=outputs,
OutputKeyPrefix=output_file_prefix,
Playlists=playlists)
# Output job ID and exit. Do not wait for the job to finish.
print(f'Created Amazon Elastic Transcoder HLS job {job_info["Id"]}')
输入您的正则表达式
我认为你的pipeline_id应该是这样的格式:
1704334089176-jhNzi6(13 位数字后跟“-”后跟 6 个字母数字字符)。
请检查您在 Elastic Transcoder 中的管道 ID 以确认正确的管道 ID。也许这可以帮助您找到正确的 ID:
https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/list-pipelines.html
为什么将 PipelineId 设置为 'PIPE'?管道 ID 不是您选择的标识符;它是现有管道资源的 ID,您之前应该使用 create_pipeline() 或等效项创建该资源,Elastic Transcoder 服务为其分配了一个唯一的管道 ID,格式为 ^\d{13}-\w{6}$
.
当我尝试使用通过 python 函数 Boto3 从 Lambda 调用的 Elastic Transcoder 时,我听到了以下错误。 Cloudwatch Logs 中的错误是:"An error occurred (ValidationException) when calling the CreateJob operation: 1 validation error detected: Value 'PIPE' at 'pipelineId' failed to satisfy constraint: Member must satisfy regular expression pattern: ^\d{13}-\w{6}$"
根据我的代码,我在 Elastic Transcoder 中将我的管道 ID 的名称指定为 PIPE,它不喜欢使用的字符。我尝试了其他一些组合,例如数字和点。有没有人遇到过这个错误并解决过?我使用 AWS 示例代码作为起点。提前致谢!
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
# Job configuration settings. Set these values before running the script.
pipeline_id = 'PIPE' # ID of an existing Elastic Transcoder pipeline
input_file = 'ChiliChallenge.mp4' # Name of an existing file in the S3 input bucket
output_file = 'output' # Desired root name of the transcoded output files
# Other job configuration settings. Optionally change as desired.
output_file_prefix = 'elastic-transcoder-samples/output/hls/' # Prefix for all output files
segment_duration = '2' # Maximum segment duration in seconds
# Elastic Transcoder presets used to create HLS multi-segment
# output files in MPEG-TS format
hls_64k_audio_preset_id = '1351620000001-200071' # HLS Audio 64kb/second
hls_0400k_preset_id = '1351620000001-200050' # HLS 400k
hls_0600k_preset_id = '1351620000001-200040' # HLS 600k
hls_1000k_preset_id = '1351620000001-200030' # HLS 1M
hls_1500k_preset_id = '1351620000001-200020' # HLS 1.5M
hls_2000k_preset_id = '1351620000001-200010' # HLS 2M
# Define the various outputs
outputs = [
{
'Key': 'hlsAudio/' + output_file,
'PresetId': hls_64k_audio_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls0400k/' + output_file,
'PresetId': hls_0400k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls0600k/' + output_file,
'PresetId': hls_0600k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls1000k/' + output_file,
'PresetId': hls_1000k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls1500k/' + output_file,
'PresetId': hls_1500k_preset_id,
'SegmentDuration': segment_duration,
},
{
'Key': 'hls2000k/' + output_file,
'PresetId': hls_2000k_preset_id,
'SegmentDuration': segment_duration,
},
]
# Define the playlist
playlists = [
{
'Name': 'hls_' + output_file,
'Format': 'HLSv3',
'OutputKeys': [x['Key'] for x in outputs]
}
]
# Create an HLS job in Elastic Transcoder
etc_client = boto3.client('elastictranscoder')
response = etc_client.create_job(PipelineId=pipeline_id,
Input={'Key': input_file},
Outputs=outputs,
OutputKeyPrefix=output_file_prefix,
Playlists=playlists)
# Output job ID and exit. Do not wait for the job to finish.
print(f'Created Amazon Elastic Transcoder HLS job {job_info["Id"]}')
我认为你的pipeline_id应该是这样的格式:
1704334089176-jhNzi6(13 位数字后跟“-”后跟 6 个字母数字字符)。
请检查您在 Elastic Transcoder 中的管道 ID 以确认正确的管道 ID。也许这可以帮助您找到正确的 ID:
https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/list-pipelines.html
为什么将 PipelineId 设置为 'PIPE'?管道 ID 不是您选择的标识符;它是现有管道资源的 ID,您之前应该使用 create_pipeline() 或等效项创建该资源,Elastic Transcoder 服务为其分配了一个唯一的管道 ID,格式为 ^\d{13}-\w{6}$
.