Elasti c Транскодер Boto3 Lambda - PullRequest
1 голос
/ 10 января 2020

Я вырываю слух со следующей ошибкой при попытке использовать Elasti c Транскодер, вызываемый из Lambda через python функцию Boto3. Ошибка в журналах Cloudwatch: «Произошла ошибка (ValidationException) при вызове операции CreateJob: 1 обнаружена ошибка проверки: значение« PIPE »в« pipeId »не удовлетворяет ограничению: элемент должен соответствовать шаблону регулярного выражения: ^ \ d {13 } - \ w {6} $ "

Согласно моему коду, я указываю имя моего идентификатора конвейера в Elasti c Транскодер как 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"]}')

Ответы [ 2 ]

1 голос
/ 10 января 2020

Почему вы установили для PipelineId значение «ТРУБА»? Идентификатор конвейера не является идентификатором, который вы выбираете; это идентификатор существующего конвейерного ресурса, который вы должны были предварительно создать с помощью create_pipeline () или эквивалентного ему и которому служба транскодера Elasti c присвоила уникальный идентификатор конвейера в форме ^\d{13}-\w{6}$.

1 голос
/ 10 января 2020

При вводе вашего регулярного выражения в https://regexr.com/

Я думаю, что ваш pipe_id должен иметь формат:

1704334089176-jhNzi6 (13 цифр, за которыми следует '- 'затем 6 alphanumeri c символов).

Проверьте свой идентификатор трубопровода в транскодере Elasti c, чтобы подтвердить правильный идентификатор трубы. Может быть, это поможет вам узнать правильный идентификатор:

https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/list-pipelines.html

...