Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Tutorial: transcodifica in batch di video con S3 Batch Operations
I consumatori di video utilizzano dispositivi di tutte le forme, dimensioni ed età per godere dei contenuti multimediali. Questa vasta gamma di dispositivi rappresenta una sfida per i creatori e i distributori di contenuti. Invece di essere in un one-size-fits-all formato, i video devono essere convertiti in modo che possano coprire un'ampia gamma di dimensioni, formati e bitrate. Questa operazione di conversione è ancora più difficile quando si dispone di un numero elevato di video che devono essere convertiti.
AWS offre un metodo per creare un'architettura scalabile e distribuita che esegue le seguenti operazioni:
-
Importa video di input
-
Elabora i video per la riproduzione su un'ampia gamma di dispositivi
-
Memorizza i file multimediali transcodificati
-
Fornisce i file multimediali di output per soddisfare la domanda
Quando hai repository video di grandi dimensioni archiviati in Amazon S3, puoi transcodificare questi video dal loro formato di origine in più tipi di file nelle dimensioni, nella risoluzione o nel formato necessario per un determinato lettore video o dispositivo. In particolare, S3 Batch Operations

Obiettivo
In questa esercitazione imparerai a impostare le operazioni in batch S3 per richiamare una funzione Lambda per la transcodificazione in batch di video memorizzati in un bucket S3 di origine. La funzione Lambda chiama MediaConvert per transcodificare i video. Gli output per ogni video nel bucket S3 di origine hanno le caratteristiche mostrate di seguito:
-
Un flusso di bitrate adattivo HTTPLive Streaming (HLS)
per la riproduzione su dispositivi di diverse dimensioni e larghezze di banda diverse -
MP4Un file video
-
Immagini in miniatura raccolte a intervalli
Argomenti
- Prerequisiti
- Fase 1: Creazione di un bucket S3 per i file multimediali di output
- Fase 2: Creare un IAM ruolo per MediaConvert
- Fase 3: Creare un IAM ruolo per la funzione Lambda
- Fase 4: Creazione di una funzione Lambda per la transcodifica dei video
- Fase 5: Configurazione dell'inventario Amazon S3 per il bucket S3 di origine
- Fase 6: Creare un IAM ruolo per S3 Batch Operations
- Fase 7: creazione ed esecuzione di un processo di operazioni in batch S3
- Fase 8: Controllo dei file multimediali di output dal bucket S3 di destinazione
- Fase 9: Pulizia
- Passaggi successivi
Prerequisiti
Prima di iniziare questo tutorial, devi disporre di un bucket Amazon S3 di origine (ad esempio,
) dove siano già archiviati video da transcodificare.amzn-s3-demo-source-bucket
Se lo desideri, puoi assegnare al bucket un altro nome. Per ulteriori informazioni sulle regole di denominazione dei bucket in Amazon S3, consulta Regole di denominazione dei bucket per uso generico.
Per il bucket S3 di origine, mantieni le impostazioni relative a Impostazioni di blocco dell'accesso pubblico per questo bucket sui valori di default (l'opzione Blocca tutto l'accesso pubblico è abilitata). Per ulteriori informazioni, consulta Creazione di un bucket.
Per ulteriori informazioni sul caricamento di video nel bucket S3 di origine, consulta Caricamento degli oggetti. Quando carichi un video in S3, puoi anche possibile utilizzare Amazon S3 Transfer Acceleration
Fase 1: Creazione di un bucket S3 per i file multimediali di output
In questa fase, viene creato un bucket S3 di destinazione per archiviare i file multimediali di output convertiti. Puoi anche creare una configurazione Cross Origin Resource Sharing (CORS) per consentire l'accesso multiorigine ai file multimediali transcodificati archiviati nel tuo bucket di destinazione S3.
Fasi secondarie
Creazione di un bucket per i file multimediali di output
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Seleziona Crea bucket.
-
Per Nome bucket, specifica un nome per il bucket, ad esempio
.amzn-s3-demo-destination-bucket1
-
Per la regione, scegli Regione AWS dove vuoi che risieda il bucket.
-
Per garantire l'accesso pubblico ai file multimediali di output, in Block Public Access settings for this bucket (Impostazioni di blocco dell'accesso pubblico per questo bucket), deseleziona Block all public access (Blocca tutto l'accesso pubblico).
avvertimento
Prima di completare questa fase, consulta Blocco dell'accesso pubblico allo storage Amazon S3 per confermare di avere compreso e accettato i rischi connessi alla concessione di un accesso pubblico. Quando si disattivano le impostazioni di blocco dell'accesso pubblico per rendere pubblico il bucket, chiunque su Internet può accedere al bucket. Consigliamo di bloccare tutti gli accessi pubblici ai bucket.
Se non desideri cancellare le impostazioni Block Public Access, puoi utilizzare Amazon CloudFront per distribuire i file multimediali transcodificati agli spettatori (utenti finali). Per ulteriori informazioni, consulta Tutorial: hosting di video in streaming su richiesta con Amazon S3, Amazon e CloudFront Amazon Route 53.
-
Seleziona la casella di controllo accanto a I acknowledge that the current settings might result in this bucket and the objects within becoming public. (Riconosco che le impostazioni correnti possono portare il bucket e gli oggetti all'interno a diventare pubblici).
-
Mantieni le impostazioni rimanenti impostate sui valori predefiniti.
-
Seleziona Crea bucket.
Aggiungi una CORS configurazione al bucket di output S3
Una JSON CORS configurazione definisce un modo per le applicazioni web client (lettori video in questo contesto) caricate in un dominio di riprodurre file multimediali di output transcodificati in un dominio diverso.
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Bucket scegli il nome del bucket creato in precedenza (ad esempio,
).amzn-s3-demo-destination-bucket1
-
Scegli la scheda Autorizzazioni.
-
Nella sezione Condivisione di risorse tra origini diverse (CORS), scegli Modifica.
-
Nella casella CORS di testo di configurazione, copia e incolla la seguente CORS configurazione.
La CORS configurazione deve essere in JSON formato. In questo esempio, l'attributo
AllowedOrigins
utilizza il carattere jolly (*
) per specificare tutte le origini. Se conosci la tua origine specifica, puoi limitare l'AllowedOrigins
attributo al tuo giocatore specificoURL. Per ulteriori informazioni sulla configurazione di questo e altri attributi, consulta Elementi di una CORS configurazione.[ { "AllowedOrigins": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedHeaders": [ "*" ], "ExposeHeaders": [] } ]
-
Scegli Save changes (Salva modifiche).
Fase 2: Creare un IAM ruolo per MediaConvert
Da utilizzare per AWS Elemental MediaConvert transcodificare i video di input memorizzati nel bucket S3, devi avere un ruolo di servizio AWS Identity and Access Management (IAM) per concedere MediaConvert le autorizzazioni per leggere e scrivere file video da e verso i bucket di origine e destinazione S3. Quando esegui lavori di transcodifica, la console utilizza questo ruolo. MediaConvert
Per creare un ruolo per IAM MediaConvert
-
Crea un IAM ruolo con un nome di ruolo a tua scelta (ad esempio,
tutorial-mediaconvert-role
). Per creare questo ruolo, segui la procedura descritta in Crea il tuo MediaConvert ruolo in IAM (console) nella Guida per l'AWS Elemental MediaConvert utente. -
Dopo aver creato il IAM ruolo per MediaConvert, nell'elenco dei ruoli, scegli il nome del ruolo per MediaConvert cui hai creato (ad esempio,
tutorial-mediaconvert-role
). -
Nella pagina Riepilogo, copia il ruolo ARN (che inizia con
arn:aws:iam::
) e salvalo ARN per utilizzarlo in seguito.Per ulteriori informazioni in meritoARNs, consulta Amazon Resource Names (ARNs) nella AWS Guida generale.
Fase 3: Creare un IAM ruolo per la funzione Lambda
Per transcodificare in batch i video con e MediaConvert S3 Batch Operations, usi una funzione Lambda per connettere questi due servizi e convertire i video. Questa funzione Lambda deve avere un IAM ruolo che conceda alla funzione Lambda le autorizzazioni di accesso e le operazioni in batch di S3. MediaConvert
Fasi secondarie
Crea un IAM ruolo per la tua funzione Lambda
Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel pannello di navigazione a sinistra, scegli Ruoli, quindi Crea ruolo.
-
Scegli il tipo di ruolo Servizio AWS dopodiché in Casi d'uso comuni scegli Lambda.
-
Scegli Successivo: autorizzazioni.
-
Sulla pagina Collega policy di autorizzazioni, immetti
AWSLambdaBasicExecutionRole
nella casella Filtra policy. Per allegare la policy gestita AWSLambdaBasicExecutionRolea questo ruolo per concedere le autorizzazioni di scrittura ad Amazon CloudWatch Logs, seleziona la casella di controllo accanto a. AWSLambdaBasicExecutionRole -
Scegli Successivo: Tag.
-
(Facoltativo) Aggiungi i tag alla policy gestita.
-
Scegli Prossimo: Rivedi.
-
Per Nome ruolo, inserisci
tutorial-lambda-transcode-role
. -
Scegliere Crea ruolo.
Incorpora una policy in linea per il IAM ruolo della tua funzione Lambda
Per concedere le autorizzazioni alla MediaConvert risorsa necessaria per l'esecuzione della funzione Lambda, è necessario utilizzare una policy in linea.
Accedi a AWS Management Console e apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione a sinistra, seleziona Ruoli.
-
Nell'elenco Ruoli, scegli il nome del IAM ruolo che hai creato in precedenza per la tua funzione Lambda (ad esempio,
tutorial-lambda-transcode-role
). -
Scegliere la scheda Permissions (Autorizzazioni).
-
Scegliere Add inline policy (Aggiungi policy inline).
-
Scegli la JSONscheda, quindi copia e incolla la seguente JSON politica.
Nella JSON politica, sostituisci il ARN valore di esempio ARN di
Resource
con il IAM ruolo del ruolo creato nel passaggio 2 (ad esempio,tutorial-mediaconvert-role
). MediaConvert{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow", "Sid": "Logging" }, { "Action": [ "iam:PassRole" ], "Resource": [ "
arn:aws:iam::111122223333:role/tutorial-mediaconvert-role
" ], "Effect": "Allow", "Sid": "PassRole" }, { "Action": [ "mediaconvert:*" ], "Resource": [ "*" ], "Effect": "Allow", "Sid": "MediaConvertService" }, { "Action": [ "s3:*" ], "Resource": [ "*" ], "Effect": "Allow", "Sid": "S3Service" } ] } -
Scegliere Review policy (Esamina policy).
-
In Nome, inserisci
tutorial-lambda-policy
. -
Scegliere Create Policy (Crea policy).
Dopo aver creato una policy in linea, questa viene automaticamente incorporata nel IAM ruolo della funzione Lambda.
Fase 4: Creazione di una funzione Lambda per la transcodifica dei video
In questa sezione del tutorial, crei una funzione Lambda usando SDK for Python da integrare con S3 Batch Operations e. MediaConvert Per iniziare a transcodificare i video già archiviati nel bucket S3 di origine, esegui un processo di operazioni in batch S3 che richiama direttamente la funzione Lambda per ogni video nel bucket S3 di origine. Quindi, la funzione Lambda invia un processo di transcodifica per ogni video a. MediaConvert
Fasi secondarie
Scrittura del codice della funzione Lambda e creazione di un pacchetto di implementazione
-
Nel computer locale, crea un cartella denominata
batch-transcode
. Nella
batch-transcode
cartella, create un file con le impostazioni del lavoro. JSON Ad esempio, è possibile utilizzare le impostazioni fornite in questa sezione e denominare il filejob.json
.Un file
job.json
specifica le seguenti informazioni:-
Quali file transcodificare
-
Come transcodificare i tuoi video di input
-
Quali file multimediali di output si desidera creare
-
Come denominare i file transcodificati
-
Dove salvare i file transcodificati
-
Le funzioni avanzate da applicare e così via.
In questo tutorial utilizziamo il seguente file
job.json
per creare i seguenti output per ogni video del bucket S3 di origine:-
Un flusso di bitrate adattivo HTTP Live Streaming (HLS) per la riproduzione su più dispositivi di dimensioni e larghezze di banda diverse
-
MP4Un file video
-
Immagini in miniatura raccolte a intervalli
Questo
job.json
file di esempio utilizza Quality-Defined Variable Bitrate (QVBR) per ottimizzare la qualità video. L'HLSuscita è compatibile con Apple (audio non mixato dal video, durata del segmento di 6 secondi e qualità video ottimizzata tramite auto). QVBRSe non si desidera utilizzare le impostazioni di esempio fornite qui, è possibile generare una specifica
job.json
basata sul proprio caso d'uso. Per garantire la coerenza tra gli output, assicurati che i file di input abbiano configurazioni video e audio simili. Per tutti i file di input con configurazioni video e audio diverse, è consigliabile creare automazioni separate (impostazionijob.json
univoche). Per ulteriori informazioni, consulta Esempi di impostazioni di AWS Elemental MediaConvert lavoro nella JSON Guida per l'utente.AWS Elemental MediaConvert{ "OutputGroups": [ { "CustomName": "HLS", "Name": "Apple HLS", "Outputs": [ { "ContainerSettings": { "Container": "M3U8", "M3u8Settings": { "AudioFramesPerPes": 4, "PcrControl": "PCR_EVERY_PES_PACKET", "PmtPid": 480, "PrivateMetadataPid": 503, "ProgramNumber": 1, "PatInterval": 0, "PmtInterval": 0, "TimedMetadata": "NONE", "VideoPid": 481, "AudioPids": [ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492 ] } }, "VideoDescription": { "Width": 640, "ScalingBehavior": "DEFAULT", "Height": 360, "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "GopSize": 2, "Slices": 1, "GopBReference": "DISABLED", "MaxBitrate": 1200000, "SlowPal": "DISABLED", "SpatialAdaptiveQuantization": "ENABLED", "TemporalAdaptiveQuantization": "ENABLED", "FlickerAdaptiveQuantization": "DISABLED", "EntropyEncoding": "CABAC", "FramerateControl": "INITIALIZE_FROM_SOURCE", "RateControlMode": "QVBR", "CodecProfile": "MAIN", "Telecine": "NONE", "MinIInterval": 0, "AdaptiveQuantization": "HIGH", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "TRANSITION_DETECTION", "QualityTuningLevel": "SINGLE_PASS_HQ", "FramerateConversionAlgorithm": "DUPLICATE_DROP", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "SECONDS", "ParControl": "INITIALIZE_FROM_SOURCE", "NumberBFramesBetweenReferenceFrames": 2, "RepeatPps": "DISABLED" } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "OutputSettings": { "HlsSettings": { "AudioGroupId": "program_audio", "AudioRenditionSets": "program_audio", "SegmentModifier": "$dt$", "IFrameOnlyManifest": "EXCLUDE" } }, "NameModifier": "_360" }, { "ContainerSettings": { "Container": "M3U8", "M3u8Settings": { "AudioFramesPerPes": 4, "PcrControl": "PCR_EVERY_PES_PACKET", "PmtPid": 480, "PrivateMetadataPid": 503, "ProgramNumber": 1, "PatInterval": 0, "PmtInterval": 0, "TimedMetadata": "NONE", "TimedMetadataPid": 502, "VideoPid": 481, "AudioPids": [ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492 ] } }, "VideoDescription": { "Width": 960, "ScalingBehavior": "DEFAULT", "Height": 540, "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "GopSize": 2, "Slices": 1, "GopBReference": "DISABLED", "MaxBitrate": 3500000, "SlowPal": "DISABLED", "SpatialAdaptiveQuantization": "ENABLED", "TemporalAdaptiveQuantization": "ENABLED", "FlickerAdaptiveQuantization": "DISABLED", "EntropyEncoding": "CABAC", "FramerateControl": "INITIALIZE_FROM_SOURCE", "RateControlMode": "QVBR", "CodecProfile": "MAIN", "Telecine": "NONE", "MinIInterval": 0, "AdaptiveQuantization": "HIGH", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "TRANSITION_DETECTION", "QualityTuningLevel": "SINGLE_PASS_HQ", "FramerateConversionAlgorithm": "DUPLICATE_DROP", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "SECONDS", "ParControl": "INITIALIZE_FROM_SOURCE", "NumberBFramesBetweenReferenceFrames": 2, "RepeatPps": "DISABLED" } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "OutputSettings": { "HlsSettings": { "AudioGroupId": "program_audio", "AudioRenditionSets": "program_audio", "SegmentModifier": "$dt$", "IFrameOnlyManifest": "EXCLUDE" } }, "NameModifier": "_540" }, { "ContainerSettings": { "Container": "M3U8", "M3u8Settings": { "AudioFramesPerPes": 4, "PcrControl": "PCR_EVERY_PES_PACKET", "PmtPid": 480, "PrivateMetadataPid": 503, "ProgramNumber": 1, "PatInterval": 0, "PmtInterval": 0, "TimedMetadata": "NONE", "VideoPid": 481, "AudioPids": [ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492 ] } }, "VideoDescription": { "Width": 1280, "ScalingBehavior": "DEFAULT", "Height": 720, "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "GopSize": 2, "Slices": 1, "GopBReference": "DISABLED", "MaxBitrate": 5000000, "SlowPal": "DISABLED", "SpatialAdaptiveQuantization": "ENABLED", "TemporalAdaptiveQuantization": "ENABLED", "FlickerAdaptiveQuantization": "DISABLED", "EntropyEncoding": "CABAC", "FramerateControl": "INITIALIZE_FROM_SOURCE", "RateControlMode": "QVBR", "CodecProfile": "MAIN", "Telecine": "NONE", "MinIInterval": 0, "AdaptiveQuantization": "HIGH", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "TRANSITION_DETECTION", "QualityTuningLevel": "SINGLE_PASS_HQ", "FramerateConversionAlgorithm": "DUPLICATE_DROP", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "SECONDS", "ParControl": "INITIALIZE_FROM_SOURCE", "NumberBFramesBetweenReferenceFrames": 2, "RepeatPps": "DISABLED" } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "OutputSettings": { "HlsSettings": { "AudioGroupId": "program_audio", "AudioRenditionSets": "program_audio", "SegmentModifier": "$dt$", "IFrameOnlyManifest": "EXCLUDE" } }, "NameModifier": "_720" }, { "ContainerSettings": { "Container": "M3U8", "M3u8Settings": {} }, "AudioDescriptions": [ { "AudioSourceName": "Audio Selector 1", "CodecSettings": { "Codec": "AAC", "AacSettings": { "Bitrate": 96000, "CodingMode": "CODING_MODE_2_0", "SampleRate": 48000 } } } ], "OutputSettings": { "HlsSettings": { "AudioGroupId": "program_audio", "AudioTrackType": "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT" } }, "NameModifier": "_audio" } ], "OutputGroupSettings": { "Type": "HLS_GROUP_SETTINGS", "HlsGroupSettings": { "ManifestDurationFormat": "INTEGER", "SegmentLength": 6, "TimedMetadataId3Period": 10, "CaptionLanguageSetting": "OMIT", "Destination": "s3://EXAMPLE-BUCKET/HLS/", "DestinationSettings": { "S3Settings": { "AccessControl": { "CannedAcl": "PUBLIC_READ" } } }, "TimedMetadataId3Frame": "PRIV", "CodecSpecification": "RFC_4281", "OutputSelection": "MANIFESTS_AND_SEGMENTS", "ProgramDateTimePeriod": 600, "MinSegmentLength": 0, "DirectoryStructure": "SINGLE_DIRECTORY", "ProgramDateTime": "EXCLUDE", "SegmentControl": "SEGMENTED_FILES", "ManifestCompression": "NONE", "ClientCache": "ENABLED", "StreamInfResolution": "INCLUDE" } } }, { "CustomName": "MP4", "Name": "File Group", "Outputs": [ { "ContainerSettings": { "Container": "MP4", "Mp4Settings": { "CslgAtom": "INCLUDE", "FreeSpaceBox": "EXCLUDE", "MoovPlacement": "PROGRESSIVE_DOWNLOAD" } }, "VideoDescription": { "Width": 1280, "ScalingBehavior": "DEFAULT", "Height": 720, "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 100, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "ParNumerator": 1, "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "HrdBufferInitialFillPercentage": 90, "GopSize": 2, "Slices": 2, "GopBReference": "ENABLED", "HrdBufferSize": 10000000, "MaxBitrate": 5000000, "ParDenominator": 1, "EntropyEncoding": "CABAC", "RateControlMode": "QVBR", "CodecProfile": "HIGH", "MinIInterval": 0, "AdaptiveQuantization": "AUTO", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "ENABLED", "QualityTuningLevel": "SINGLE_PASS_HQ", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "SECONDS", "ParControl": "SPECIFIED", "NumberBFramesBetweenReferenceFrames": 3, "RepeatPps": "DISABLED", "DynamicSubGop": "ADAPTIVE" } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "AudioDescriptions": [ { "AudioTypeControl": "FOLLOW_INPUT", "AudioSourceName": "Audio Selector 1", "CodecSettings": { "Codec": "AAC", "AacSettings": { "AudioDescriptionBroadcasterMix": "NORMAL", "Bitrate": 160000, "RateControlMode": "CBR", "CodecProfile": "LC", "CodingMode": "CODING_MODE_2_0", "RawFormat": "NONE", "SampleRate": 48000, "Specification": "MPEG4" } }, "LanguageCodeControl": "FOLLOW_INPUT", "AudioType": 0 } ] } ], "OutputGroupSettings": { "Type": "FILE_GROUP_SETTINGS", "FileGroupSettings": { "Destination": "s3://EXAMPLE-BUCKET/MP4/", "DestinationSettings": { "S3Settings": { "AccessControl": { "CannedAcl": "PUBLIC_READ" } } } } } }, { "CustomName": "Thumbnails", "Name": "File Group", "Outputs": [ { "ContainerSettings": { "Container": "RAW" }, "VideoDescription": { "Width": 1280, "ScalingBehavior": "DEFAULT", "Height": 720, "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "FRAME_CAPTURE", "FrameCaptureSettings": { "FramerateNumerator": 1, "FramerateDenominator": 5, "MaxCaptures": 500, "Quality": 80 } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" } } ], "OutputGroupSettings": { "Type": "FILE_GROUP_SETTINGS", "FileGroupSettings": { "Destination": "s3://EXAMPLE-BUCKET/Thumbnails/", "DestinationSettings": { "S3Settings": { "AccessControl": { "CannedAcl": "PUBLIC_READ" } } } } } } ], "AdAvailOffset": 0, "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "Offset": 0, "DefaultSelection": "DEFAULT", "ProgramSelection": 1 } }, "VideoSelector": { "ColorSpace": "FOLLOW" }, "FilterEnable": "AUTO", "PsiControl": "USE_PSI", "FilterStrength": 0, "DeblockFilter": "DISABLED", "DenoiseFilter": "DISABLED", "TimecodeSource": "EMBEDDED", "FileInput": "s3://EXAMPLE-INPUT-BUCKET/input.mp4" } ] }
-
-
Nella cartella
batch-transcode
, crea un file con una funzione Lambda. Puoi utilizzare il seguente esempio Python e denominare il fileconvert.py
.Le operazioni in batch S3 inviano dati di processi specifici a una funzione Lambda e richiedono i dati dei risultati. Per gli esempi di richiesta e risposta per la funzione Lambda, le informazioni sui codici di risposta e dei risultati e le funzioni Lambda di esempio per le operazioni in batch S3, consulta Funzione Invoke AWS Lambda.
import json import os from urllib.parse import urlparse import uuid import boto3 """ When you run an S3 Batch Operations job, your job invokes this Lambda function. Specifically, the Lambda function is invoked on each video object listed in the manifest that you specify for the S3 Batch Operations job in Step 5. Input parameter "event": The S3 Batch Operations event as a request for the Lambda function. Input parameter "context": Context about the event. Output: A result structure that Amazon S3 uses to interpret the result of the operation. It is a job response returned back to S3 Batch Operations. """ def handler(event, context): invocation_schema_version = event['invocationSchemaVersion'] invocation_id = event['invocationId'] task_id = event['tasks'][0]['taskId'] source_s3_key = event['tasks'][0]['s3Key'] source_s3_bucket = event['tasks'][0]['s3BucketArn'].split(':::')[-1] source_s3 = 's3://' + source_s3_bucket + '/' + source_s3_key result_list = [] result_code = 'Succeeded' result_string = 'The input video object was converted successfully.' # The type of output group determines which media players can play # the files transcoded by MediaConvert. # For more information, see Creating outputs with AWS Elemental MediaConvert. output_group_type_dict = { 'HLS_GROUP_SETTINGS': 'HlsGroupSettings', 'FILE_GROUP_SETTINGS': 'FileGroupSettings', 'CMAF_GROUP_SETTINGS': 'CmafGroupSettings', 'DASH_ISO_GROUP_SETTINGS': 'DashIsoGroupSettings', 'MS_SMOOTH_GROUP_SETTINGS': 'MsSmoothGroupSettings' } try: job_name = 'Default' with open('
job.json
') as file: job_settings = json.load(file) job_settings['Inputs'][0]['FileInput'] = source_s3 # The path of each output video is constructed based on the values of # the attributes in each object of OutputGroups in thejob.json
file. destination_s3 = 's3://{0}/{1}/{2}' \ .format(os.environ['amzn-s3-demo-destination-bucket
'], os.path.splitext(os.path.basename(source_s3_key))[0], os.path.splitext(os.path.basename(job_name))[0]) for output_group in job_settings['OutputGroups']: output_group_type = output_group['OutputGroupSettings']['Type'] if output_group_type in output_group_type_dict.keys(): output_group_type = output_group_type_dict[output_group_type] output_group['OutputGroupSettings'][output_group_type]['Destination'] = \ "{0}{1}".format(destination_s3, urlparse(output_group['OutputGroupSettings'][output_group_type]['Destination']).path) else: raise ValueError("Exception: Unknown Output Group Type {}." .format(output_group_type)) job_metadata_dict = { 'assetID': str(uuid.uuid4()), 'application': os.environ['Application'], 'input': source_s3, 'settings': job_name } region = os.environ['AWS_DEFAULT_REGION'] endpoints = boto3.client('mediaconvert', region_name=region) \ .describe_endpoints() client = boto3.client('mediaconvert', region_name=region, endpoint_url=endpoints['Endpoints'][0]['Url'], verify=False) try: client.create_job(Role=os.environ['MediaConvertRole'], UserMetadata=job_metadata_dict, Settings=job_settings) # You can customize error handling based on different error codes that # MediaConvert can return. # For more information, see MediaConvert error codes. # When the result_code is TemporaryFailure, S3 Batch Operations retries # the task before the job is completed. If this is the final retry, # the error message is included in the final report. except Exception as error: result_code = 'TemporaryFailure' raise except Exception as error: if result_code != 'TemporaryFailure': result_code = 'PermanentFailure' result_string = str(error) finally: result_list.append({ 'taskId': task_id, 'resultCode': result_code, 'resultString': result_string, }) return { 'invocationSchemaVersion': invocation_schema_version, 'treatMissingKeyAs': 'PermanentFailure', 'invocationId': invocation_id, 'results': result_list } -
Per creare un pacchetto di implementazione con
convert.py
ejob.json
come file.zip
denominatolambda.zip
, nel computer locale, apri la cartellabatch-transcode
creata in precedenza ed emetti il comando seguente.Per utenti macOS, eseguire il seguente comando:
zip -r
lambda.zip
convert.py
job.json
Per utenti Windows, esegui questi comandi:
powershell Compress-Archive
convert.py
lambda.zip
powershell Compress-Archive -update
job.json
lambda.zip
Creare una funzione Lambda con un ruolo di esecuzione (console)
-
Apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/
. -
Nel pannello di navigazione a sinistra, scegli Functions (Funzioni).
-
Selezionare Create function (Crea funzione).
-
Scegli Author from scratch (Crea da zero).
-
In Basic information (Informazioni di base) eseguire queste operazioni:
-
Nel campo Function name (Nome funzione), immettere
tutorial-lambda-convert
. -
In Runtime, scegli Python 3.8 o una versione successiva.
-
-
Scegli Change default execution role (Cambia ruolo di esecuzione predefinito) e in Execution role (Ruolo di esecuzione) scegli Use an existing role (Utilizza un ruolo esistente).
-
In Ruolo esistente, scegli il nome del IAM ruolo che hai creato per la funzione Lambda nel passaggio 3 (ad esempio,
tutorial-lambda-transcode-role
). -
Mantieni le impostazioni rimanenti impostate sui valori di default.
-
Scegli Crea funzione.
Implementa la tua funzione Lambda con gli archivi in file .zip e configura la funzione Lambda (console)
-
Nel riquadro Origine codice della pagina della funzione Lambda creata in precedenza (ad esempio,
tutorial-lambda-convert
), scegli Carica da e poi File .zip. -
Scegli Upload (Carica) per selezionare il file
.zip
locale. -
Scegli il file
lambda.zip
creato in precedenza, quindi scegli Apri. -
Seleziona Salva.
-
Nel pannello Runtime settings (Impostazioni runtime), scegli Edit (Modifica).
-
Per indicare al runtime Lambda quale metodo gestore richiamare nel codice della funzione Lambda, inserisci
convert.handler
nel campo Gestore.Quando si configura una funzione in Python, il valore dell'impostazione del gestore è costituito dal nome del file e dal nome del modulo del gestore, separati da un punto (
.
). Ad esempio,convert.handler
richiama il metodohandler
definito nel fileconvert.py
. -
Seleziona Salva.
-
Nella pagina della funzione Lambda, scegli la scheda Configuration (Configurazione). Nel pannello di navigazione a sinistra nella scheda Configurazione, scegli Variabili di ambiente, quindi scegli Modifica.
-
Scegli Add environment variable (Aggiungi variabile d'ambiente). Quindi, inserisci Chiave e Valore per ciascuna delle variabili di ambiente elencate di seguito.
-
Chiave:
DestinationBucket
Valore:amzn-s3-demo-destination-bucket1
Questo valore è il bucket S3 per i file multimediali di output creati nella Fase 1.
-
Chiave:
MediaConvertRole
Valore:arn:aws:iam::
111122223333
:role/tutorial-mediaconvert-roleQuesto valore è il ARN IAM ruolo per MediaConvert il quale hai creato nel passaggio 2. Assicurati di sostituirlo ARN con quello effettivo ARN del tuo IAM ruolo.
-
Chiave:
Application
Valore:Batch-Transcoding
Questo valore è il nome dell'applicazione.
-
-
Seleziona Salva.
-
(Facoltativo) Nella scheda Configuration (Configurazione), nella sezione General configuration (Configurazione generale) del pannello di navigazione a sinistra, seleziona Edit (Modifica). Nel campo Timeout inserisci
2
min0
sec. Quindi, scegliere Save (Salva).Il Timeout è la quantità di tempo consentita da Lambda per l'esecuzione di una funzione per una chiamata prima di arrestarla. Il valore predefinito è 3 secondi. I prezzi si basano sulla quantità di memoria configurata e sulla quantità di tempo di esecuzione del codice. Per ulteriori informazioni, consulta Prezzi di AWS Lambda
.
Fase 5: Configurazione dell'inventario Amazon S3 per il bucket S3 di origine
Dopo aver impostato la funzione di transcodifica Lambda, devi creare un processo di operazioni in batch S3 per transcodificare una serie di video. Innanzitutto, devi disporre di un elenco degli oggetti video di input sui quali desideri che le operazioni in Batch S3 eseguano l'azione di transcodifica specificata. Per ottenere un elenco di oggetti video di input, puoi generare un report di inventario S3 per il bucket S3 di origine (ad esempio,
). amzn-s3-demo-source-bucket
Fasi secondarie
Creazione e configurazione di un bucket per i report di inventario S3 dei video di input
Per archiviare un report di inventario S3 che elenca gli oggetti del bucket S3 di origine, devi creare un bucket di destinazione dell'inventario S3 e configurare una policy perché il bucket possa scrivere i file di inventario nel bucket S3 di origine.
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Seleziona Crea bucket.
-
Per Nome bucket, specifica un nome per il bucket, ad esempio
.amzn-s3-demo-destination-bucket2
-
Perché Regione AWS, scegli Regione AWS dove vuoi che risieda il bucket.
Il bucket di destinazione dell'inventario deve trovarsi nello stesso Regione AWS del bucket di origine in cui stai configurando S3 Inventory. Il bucket di destinazione dell'inventario può trovarsi in un diverso Account AWS.
-
In Impostazioni di blocco dell'accesso pubblico per questo bucket, mantieni le impostazioni di default (l'opzione Blocca tutto l'accesso pubblico è abilitata).
-
Mantieni le impostazioni rimanenti impostate sui valori di default.
-
Seleziona Crea bucket.
-
Nell'elenco Buckets (Bucket) scegli il nome del bucket appena creato (ad esempio,
).amzn-s3-demo-destination-bucket2
-
Per concedere ad Amazon S3 l'autorizzazione a scrivere dati per i report di inventario nel bucket di destinazione dell'inventario S3, seleziona la scheda Autorizzazioni.
-
Scorri verso il basso fino alla sezione Policy di bucket e scegli Modifica. Viene visualizzata la pagina Policy del bucket.
-
Per concedere le autorizzazioni per l'inventario S3, nel campo Policy copia la seguente policy del bucket.
Sostituisci i tre valori di esempio rispettivamente con i seguenti valori:
-
Il nome del bucket creato per archiviare i rapporti di inventario (ad esempio,
).amzn-s3-demo-destination-bucket2
-
Il nome del bucket di origine che archivia i video di input (ad esempio,
).amzn-s3-demo-source-bucket
-
L' Account AWS ID che hai usato per creare il bucket di sorgenti video S3 (ad esempio,.
111122223333
{ "Version":"2012-10-17", "Statement":[ { "Sid":"InventoryAndAnalyticsExamplePolicy", "Effect":"Allow", "Principal": {"Service": "s3.amazonaws.com"}, "Action":"s3:PutObject", "Resource":["arn:aws:s3:::
/*"], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-destination-bucket2
" }, "StringEquals": { "aws:SourceAccount": "amzn-s3-demo-source-bucket
111122223333
", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } -
-
Scegli Save changes (Salva modifiche).
Configurazione dell'inventario Amazon S3 per il bucket S3 di origine dei video
Per generare un elenco di file flat di oggetti video e metadati, devi configurare l'inventario S3 per il bucket S3 di origine dei video. Questi report pianificati possono includere tutti gli oggetti del bucket oppure oggetti raggruppati in base a un prefisso condiviso. In questo tutorial, il report di inventario S3 include tutti gli oggetti video nel bucket S3 di origine.
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Per configurare un report di inventario S3 dei video di input nel bucket S3 di origine, nell'elenco Bucket scegli il nome del bucket S3 di origine (ad esempio,
).amzn-s3-demo-source-bucket
-
Scegliere la scheda Management (Gestione),
-
Scorri fino alla sezione Configurazione dell'inventario e scegli Crea configurazione dell'inventario.
-
Nel campo Inventory configuration name (Nome configurazione inventario) inserisci un nome (ad esempio,
tutorial-inventory-config
). -
In Ambito inventario, scegli Solo versione corrente per Versioni oggetto e mantieni le altre impostazioni di Ambito inventario sui valori di default per questo tutorial.
-
Nella sezione Dettagli report, per Bucket di destinazione, scegli Questo account.
-
In Destinazione, scegli Sfoglia S3 e scegli il bucket di destinazione creato in precedenza per salvare i report di inventario (ad esempio,
). Quindi, scegli Seleziona percorso.amzn-s3-demo-destination-bucket2
Il bucket di destinazione dell'inventario deve trovarsi nello stesso bucket Regione AWS di origine in cui stai configurando S3 Inventory. Il bucket di destinazione dell'inventario può trovarsi in un diverso Account AWS.
Nel campo Destination bucket (Bucket di destinazione) la Destination bucket permission (Autorizzazione per il bucket di destinazione) viene aggiunta alla policy del bucket di destinazione dell'inventario per consentire ad Amazon S3 di inserirvi i dati. Per ulteriori informazioni, consulta Creazione di una policy di bucket di destinazione.
-
In Frequenza, seleziona Giornaliero.
-
Per Formato di output, scegli. CSV
-
In Stato, scegli Abilitato.
-
In Crittografia lato server, scegli Disabilita per questo tutorial.
Per ulteriori informazioni, consulta Configurazione dell'inventario utilizzando la console S3 e Concessione ad Amazon S3 dell'autorizzazione per l'utilizzo della chiave gestita dal cliente per la crittografia.
-
Nella sezione Campi aggiuntivi - facoltativo, seleziona Dimensioni, Ultima modifica e Classe di archiviazione.
-
Scegli Create (Crea).
Per ulteriori informazioni, consulta Configurazione dell'inventario utilizzando la console S3.
Controllo del report di inventario per il bucket S3 di origine dei video
Quando viene pubblicato un elenco di inventario, i file manifesto vengono inviati al bucket di destinazione dell'inventario S3.
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Buckets (Bucket) scegli il nome del bucket di origine dei video (ad esempio,
).amzn-s3-demo-source-bucket
-
Seleziona Gestione.
-
Per verificare se il report di inventario S3 è pronto per la creazione di un processo di operazioni in batch S3 nella Fase 7, in Configurazioni di inventario, verifica se il pulsante Create processo dal manifesto è abilitato.
Nota
La consegna del primo report di inventario può richiedere fino a 48 ore. Se il pulsante Create job from manifest (Crea processo dal manifesto) è disattivato, il primo report di inventario non è stato consegnato. Devi attendere che venga consegnato il primo report di inventario e che il pulsante Crea processo dal manifesto sia abilitato per creare un processo di operazioni in batch S3 nella Fase 7.
-
Per controllare un report di inventario S3 (
manifest.json
), nella colonna Destinazione, scegli il nome del bucket di destinazione dell'inventario creato in precedenza per l'archiviazione dei report di inventario (ad esempio,
).amzn-s3-demo-destination-bucket2
-
Nella scheda Oggetti, scegli la cartella esistente con il nome del bucket di origine S3 (ad esempio,
). Quindi scegli il nome che hai inserito in Nome configurazione inventario quando hai creato la configurazione dell'inventario (ad esempio,amzn-s3-demo-source-bucket
tutorial-inventory-config
).Puoi visualizzare un elenco di cartelle denominate con la data di generazione dei report.
-
Per controllare il report di inventario S3 giornaliero di una certa data, scegli una cartella denominata con una data di generazione, quindi scegli
manifest.json
. -
Per controllare i dettagli del report di inventario in una data specifica, nella pagina manifest.json, scegli Download (Scarica) o Open (Apri).
Fase 6: Creare un IAM ruolo per S3 Batch Operations
Per utilizzare S3 Batch Operations per eseguire la transcodifica in batch, devi prima creare un ruolo che IAM conceda ad Amazon S3 le autorizzazioni per eseguire S3 Batch Operations.
Fasi secondarie
Crea una IAM policy per S3 Batch Operations
È necessario creare una IAM policy che dia a S3 Batch Operations l'autorizzazione a leggere il manifesto di input, richiamare la funzione Lambda e scrivere il rapporto di completamento del lavoro di S3 Batch Operations.
Accedi AWS Management Console e apri la console all'indirizzo. IAM https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione a sinistra, seleziona Policy.
-
Scegli Create Policy (Crea policy).
-
Scegli la JSONscheda.
-
Nel campo di JSONtesto, incolla la seguente JSON politica.
Nella JSON politica, sostituisci i quattro valori di esempio con i seguenti valori:
-
Il nome del bucket di origine che archivia i video di input (ad esempio,
).amzn-s3-demo-source-bucket
-
Il nome del bucket di destinazione dell'inventario creato nella Fase 5 per archiviare i file
manifest.json
(ad esempio,
).amzn-s3-demo-destination-bucket2
-
Il nome del bucket creato nella Fase 1 per archiviare i file multimediali di output (ad esempio,
). In questo tutorial, abbiamo messo i report di completamento del processo nel bucket di destinazione per i file multimediali di output.amzn-s3-demo-destination-bucket1
-
Il ruolo ARN della funzione Lambda che hai creato nel passaggio 4. Per trovare e copiare il ruolo ARN della funzione Lambda, procedi come segue:
-
In una nuova scheda del browser, apri la pagina Funzioni nella console Lambda all'indirizzo https://console.aws.amazon.com/lambda/home#/functions
. -
Nell'elenco Funzioni, scegli la funzione Lambda creata nella Fase 4 (ad esempio,
tutorial-lambda-convert
). -
Scegli CopiaARN.
-
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Get", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*", "arn:aws:s3:::amzn-s3-demo-destination-bucket2
/*" ] }, { "Sid": "S3PutJobCompletionReport", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket1
/*" }, { "Sid": "S3BatchOperationsInvokeLambda", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-west-2
:111122223333
:function:tutorial-lambda-convert
" ] } ] } -
-
Scegliere Next: Tags (Successivo: Tag).
-
Scegliere Next:Review (Successivo: Rivedi).
-
Nel campo Name (Nome), inserire
tutorial-s3batch-policy
. -
Scegli Create Policy (Crea policy).
Crea un IAM ruolo S3 Batch Operations e allega politiche di autorizzazione
Accedi AWS Management Console e apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione a sinistra, scegli Ruoli, quindi Crea ruolo.
-
Scegli il tipo di ruolo Servizio AWS, quindi seleziona il servizio S3.
-
In Select your use case (Seleziona il tuo caso d'uso), scegli S3 Batch Operations (Operazioni in batch S3).
-
Scegliere Next: Permissions (Successivo: Autorizzazioni).
-
In Allega criteri di autorizzazione, inserisci il nome del IAM criterio creato in precedenza (ad esempio,
tutorial-s3batch-policy
) nella casella di ricerca per filtrare l'elenco dei criteri. Seleziona la casella di controllo accanto al nome della policy (ad esempio,tutorial-s3batch-policy
). -
Scegliere Next: Tags (Successivo: Tag).
-
Scegliere Next:Review (Successivo: Rivedi).
-
Per Nome ruolo, inserisci
tutorial-s3batch-role
. -
Scegliere Crea ruolo.
Dopo aver creato il IAM ruolo per S3 Batch Operations, la seguente politica di attendibilità viene automaticamente associata al ruolo. Questa politica di fiducia consente al responsabile del servizio S3 Batch Operations di assumere il IAM ruolo.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
Fase 7: creazione ed esecuzione di un processo di operazioni in batch S3
Per creare un processo di operazioni in batch S3 per elaborare i video di input nel bucket S3 di origine, devi specificare i parametri per questo particolare processo.
Nota
Per iniziare a creare un processo di operazioni in batch S3, devi assicurarti che il pulsante Crea processo dal manifesto sia abilitato. Per ulteriori informazioni, consulta Controllo del report di inventario per il bucket S3 di origine dei video. Se il pulsante Crea processo dal manifesto è disabilitato, il primo report di inventario non è stato consegnato e devi attendere che il pulsante sia abilitato. Dopo aver configurato l'inventario Amazon S3 per il bucket S3 di origine nella Fase 5, la consegna del primo report dell'inventario può richiedere fino a 48 ore.
Fasi secondarie
- Creare un processo di operazioni in batch S3
- Esecuzione del processo di operazioni in batch di S3 per richiamare la funzione Lambda
- (Facoltativo) Controllo del report di completamento
- (Facoltativo) Monitoraggio di ogni chiamata Lambda nella console Lambda
- (Facoltativo) Monitora ogni processo di MediaConvert transcodifica video nella console MediaConvert
Creare un processo di operazioni in batch S3
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Operazioni in batch.
-
Scegli Crea processo.
-
Per Regione AWS, scegli la regione in cui creare il processo.
In questo tutorial, al fine di utilizzare il processo di operazioni in batch S3 per richiamare una funzione Lambda, devi creare il processo nella stessa regione del bucket S3 di origine dei video in cui si trovano gli oggetti a cui fa riferimento il manifesto.
-
Nella sezione Manifesto, procedi nel seguente modo:
-
Per Manifest format (Formato manifesto), scegliere S3 inventory report (manifest.json) (Report inventario S3 (manifest.json)).
-
In Oggetto manifesto scegli Sfoglia S3 per trovare il bucket creato nella Fase 5 per l'archiviazione dei report di inventario (ad esempio,
). Nella pagina Oggetto manifesto, naviga tra i nomi degli oggetti fino a trovare un fileamzn-s3-demo-destination-bucket2
manifest.json
per una data specifica. Questo file elenca le informazioni su tutti i video che vuoi transcodificare in batch. Una volta trovato il filemanifest.json
da utilizzare, scegli il pulsante di opzione accanto ad esso. Quindi, scegli Seleziona percorso. -
(Facoltativo) In ID versione oggetto manifesto - facoltativo, inserisci l'ID versione dell'oggetto manifesto se desideri utilizzare una versione diversa da quella più recente.
-
-
Scegli Next (Successivo).
-
Per utilizzare la funzione Lambda per transcodificare tutti gli oggetti elencati nel file
manifest.json
selezionato, in Tipo di operazione, scegli Invoca funzione AWS Lambda . -
Nella sezione Chiamare una funzione Lambda completa le operazioni seguenti:
-
Scegli Choose from functions in your account (Scegli tra le funzioni del tuo account).
-
In Funzione Lambda, scegli la funzione Lambda creata nella Fase 4 (ad esempio,
tutorial-lambda-convert
). -
Per la versione della funzione Lambda, mantieni il valore predefinito $. LATEST
-
-
Scegli Next (Successivo). Viene visualizzata la pagina Configura opzioni aggiuntive.
-
In Opzioni aggiuntive mantieni le impostazioni predefinite.
Per ulteriori informazioni su queste opzioni, consulta Elementi della richiesta di un processo di operazioni in batch.
-
Nella sezione Report di completamento, per Percorso di destinazione del report di completamento, scegli Sfoglia S3. Individua il bucket creato per i file multimediali di output nella Fase 1 (ad esempio,
). Scegli il pulsante di opzione accanto al nome del bucket. Quindi, scegli Seleziona percorso.amzn-s3-demo-destination-bucket1
Mantieni le impostazioni rimanenti di Report di completamento impostate sui valori di default. Per ulteriori informazioni sulla configurazione dei report di completamento, consulta Elementi della richiesta di un processo di operazioni in batch. Un report di completamento mantiene un registro dei dettagli del processo e delle operazioni eseguite.
-
Nella sezione Autorizzazioni, scegli Scegli tra i ruoli esistenti IAM. Per IAMruolo, scegli il IAM ruolo per il tuo job S3 Batch Operations che hai creato nella Fase 6 (ad esempio,
tutorial-s3batch-role
). -
Scegli Next (Successivo).
-
Nella pagina Revisione, rivedi le impostazioni. Quindi seleziona Crea processo.
Dopo che S3 ha terminato la lettura del manifesto del processo di operazioni in batch S3, il processo imposta lo stato del processo su In attesa di conferma dell'esecuzione. Per visualizzare gli aggiornamenti dello stato del processo, aggiorna la pagina. Non sarà possibile eseguire il processo finché lo stato non sarà In attesa di esecuzione della conferma.
Esecuzione del processo di operazioni in batch di S3 per richiamare la funzione Lambda
Esegui il processo di operazioni in batch per richiamare la funzione Lambda per la transcodifica dei video. Se il processo non riesce, puoi controllare il report di completamento per identificare la causa.
Per eseguire il processo di operazioni in batch S3
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Operazioni in batch.
-
Nell'elenco Processi, scegli l'ID processo del processo nella prima riga, ovvero il processo di operazioni in batch S3 creato in precedenza.
-
Scegli Esegui processo.
-
Riesamina i parametri del processo e conferma che il valore di Total objects listed in manifest (Totale oggetti elencati nel manifesto) corrisponda al numero di oggetti nel manifesto. Seleziona quindi Esegui processo.
Viene visualizzata la pagina del processo di operazioni in batch S3.
-
Dopo l'inizio dell'esecuzione del processo, nella pagina del processo, in Status (Stato) controlla lo stato di avanzamento del processo di operazioni in batch S3, ad esempio Status (Stato), % Complete (% completamento), Total succeeded (rate) (Totale riusciti (tasso)), Total failed (rate) (Totale non riusciti (tasso)), Date terminated (Data di terminazione) e Reason for termination (Motivo della terminazione).
Al termine del processo di operazioni in batch S3, visualizza i dati nella pagina del processo per confermare che è stato completato come previsto.
Se oltre il 50% delle operazioni sugli oggetti di un processo di operazione in batch S3 ha esito negativo dopo aver tentato più di 1.000 operazioni, il processo ha automaticamente esito negativo. Per controllare il report di completamento per identificare la causa degli errori, consulta la procedura facoltativa riportata di seguito.
(Facoltativo) Controllo del report di completamento
Puoi utilizzare il report di completamento per determinare quali oggetti non sono riusciti e la causa degli errori.
Come controllare il report di completamento con i dettagli sugli oggetti non eseguiti correttamente
-
Nella pagina del processo di operazioni in batch S3, in Report di completamento, scegli il collegamento per Destinazione del report di completamento.
Viene aperta la pagina del bucket di destinazione dell'output S3.
-
Nella scheda Oggetti, scegli la cartella che ha il nome che termina con l'ID del processo di operazioni in batch S3 creato in precedenza.
-
Scegli results/ (risultati/).
-
Seleziona la casella di controllo accanto al file
.csv
. -
Per visualizzare il report del processo, scegli Apri o Scarica.
(Facoltativo) Monitoraggio di ogni chiamata Lambda nella console Lambda
Dopo l'avvio del processo di operazioni in batch S3, il processo richiama la funzione Lambda per ogni oggetto video di input. S3 scrive i log di ogni chiamata Lambda in Logs. CloudWatch Puoi utilizzare il pannello di controllo di monitoraggio della console Lambda per monitorare la funzione Lambda.
Apri AWS Lambda la console https://console.aws.amazon.com/lambda/
all'indirizzo. -
Nel pannello di navigazione a sinistra, scegli Functions (Funzioni).
-
Nell'elenco Funzioni, scegli la funzione Lambda creata nella Fase 4 (ad esempio,
tutorial-lambda-convert
). -
Selezionare la scheda Monitor (Monitora).
-
In Metrics (Parametri), visualizza i parametri di runtime per la funzione Lambda.
-
In Logs, visualizza i dati di log per ogni chiamata CloudWatch Lambda tramite Logs Insights.
Nota
Quando utilizzi le operazioni in batch S3 con una funzione Lambda, la funzione Lambda viene richiamata su ciascun oggetto. Se il tuo processo di operazioni in batch S3 è grande, può richiamare più funzioni Lambda contemporaneamente, causando un picco nella simultaneità Lambda.
Ciascuno Account AWS ha una quota di concorrenza Lambda per regione. Per ulteriori informazioni, consulta Dimensionamento della funzione AWS Lambda nella Guida per gli sviluppatori di AWS Lambda . Una best practice per l'utilizzo delle funzioni Lambda con le operazioni in batch S3 è impostare un limite di simultaneità sulla funzione Lambda stessa. Ciò impedisce al tuo processo di consumare la maggior parte della simultaneità Lambda e potenzialmente di limitare altre funzioni nel tuo account. Per ulteriori informazioni, consulta Gestione della simultaneità riservata Lambda nella Guida per gli sviluppatori di AWS Lambda .
(Facoltativo) Monitora ogni processo di MediaConvert transcodifica video nella console MediaConvert
Un MediaConvert job svolge il lavoro di transcodifica di un file multimediale. Quando il job S3 Batch Operations richiama la funzione Lambda per ogni video, ogni chiamata alla funzione Lambda crea un processo di transcodifica per ogni video in ingresso. MediaConvert
Accedi a e apri la console all'indirizzo. AWS Management Console MediaConvert https://console.aws.amazon.com/mediaconvert/
-
Se viene visualizzata la pagina MediaConvert introduttiva, scegli Inizia.
-
Nell'elenco Processi, visualizza ogni riga per monitorare l'attività di transcodifica per ogni video di input.
-
Identifica la riga del processo che desideri controllare e scegli il collegamento ID processo per aprire la pagina dei dettagli.
-
Nella pagina di riepilogo del lavoro, in Output, scegli il link per l'output HLSMP4, o Thumbnails, a seconda di ciò che è supportato dal tuo browser, per andare al bucket di destinazione S3 per i file multimediali di output.
-
Nella cartella (HLSo Thumbnails) corrispondente del bucket di destinazione di output S3, scegli il nome dell'oggetto del file multimediale di output. MP4
Viene aperta la pagina dei dettagli dell'oggetto.
-
Nella pagina dei dettagli dell'oggetto, in Panoramica degli oggetti, scegliete il link sotto Oggetto URL per guardare il file multimediale di output transcodificato.
Fase 8: Controllo dei file multimediali di output dal bucket S3 di destinazione
Come controllare i file multimediali di output dal bucket S3 di destinazione
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Bucket scegli il nome del bucket S3 di destinazione per i file multimediali di output creati nella Fase 1 (ad esempio,
).amzn-s3-demo-destination-bucket1
-
Nella scheda Objecets (Oggetti), ogni video di input ha una cartella con il nome del video di input. Ogni cartella contiene i file multimediali di output transcodificati di un video di input.
Per controllare i file multimediali di output di un video di input, esegui le seguenti operazioni:
-
Scegli la cartella con il nome del video di input che desideri controllare.
-
Scegli la cartella Default/ (Predefinito/).
-
Scegli la cartella per un formato transcodificato (HLSMP4, o le miniature in questo tutorial).
-
Scegli il nome del file multimediale di output.
-
Per guardare il file transcodificato, nella pagina dei dettagli dell'oggetto, scegliete il link sotto Oggetto. URL
I file multimediali di output nel HLS formato sono suddivisi in brevi segmenti. Per riprodurre questi video, incorporate l'oggetto URL del
.m3u8
file in un lettore compatibile.
-
Fase 9: Pulizia
Se hai transcodificato i video utilizzando S3 Batch Operations, Lambda MediaConvert e solo come esercizio di apprendimento, elimina AWS le risorse che hai allocato in modo da non addebitare più addebiti.
Fasi secondarie
- Eliminazione della configurazione di inventario S3 per il bucket S3 di origine
- Eliminazione della funzione Lambda
- Eliminare il gruppo di CloudWatch log
- Elimina i IAM ruoli insieme alle politiche in linea per i IAM ruoli
- Elimina la politica gestita dal cliente IAM
- Svuotare i bucket S3
- Eliminazione dei bucket S3
Eliminazione della configurazione di inventario S3 per il bucket S3 di origine
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Buckets (Bucket) scegli il nome del bucket di origine (ad esempio,
).amzn-s3-demo-source-bucket
-
Scegliere la scheda Management (Gestione),
-
Nella sezione Configurazioni inventario scegli la configurazione di inventario creata nella Fase 5 (ad esempio,
tutorial-inventory-config
). -
Scegli Elimina e poi Conferma.
Eliminazione della funzione Lambda
-
Apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/
. -
Nel pannello di navigazione a sinistra, scegli Functions (Funzioni).
-
Seleziona la casella di controllo accanto alla funzione creata nella Fase 4 (ad esempio,
tutorial-lambda-convert
). -
Scegli Azioni, quindi Elimina.
-
Nella finestra di dialogo Delete function (Elimina funzione), scegli Delete (Elimina).
Eliminare il gruppo di CloudWatch log
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel pannello di navigazione a sinistra scegli Log, quindi Gruppi di log.
-
Seleziona la casella di controllo accanto al gruppo di log dal nome che termina con la funzione Lambda creata nella Fase 4 (ad esempio,
tutorial-lambda-convert
). -
Scegli Actions (Operazioni), quindi scegli Delete log group(s) (Elimina gruppi di registri).
-
Nella finestra di dialogo Delete log group(s) (Elimina gruppo/i di log) scegli Delete (Elimina).
Elimina i IAM ruoli insieme alle politiche in linea per i IAM ruoli
Per eliminare i IAM ruoli creati nei passaggi 2, 3 e 6, procedi come segue:
Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel pannello di navigazione, scegli Ruoli, quindi seleziona la casella di controllo accanto al nome del ruolo che desideri eliminare.
-
Nella parte superiore della pagina, scegli Delete (Elimina).
-
Nella finestra di dialogo di conferma inserisci la risposta richiesta nel campo di inserimento di testo in base al comando e scegli Delete (Elimina).
Elimina la politica gestita dal cliente IAM
Per eliminare la IAM politica gestita dal cliente creata nel passaggio 6, procedi come segue:
Accedi a AWS Management Console e apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione a sinistra, seleziona Policy.
-
Scegli il pulsante di opzione accanto alla policy creata nella Fase 6 (ad esempio,
tutorial-s3batch-policy
). Puoi utilizzare la casella di ricerca per filtrare l'elenco di policy. -
Scegli Azioni, quindi Elimina.
-
Conferma di voler eliminare questa policy inserendone il nome nel campo di testo, quindi scegli Elimina.
Svuotare i bucket S3
Per svuotare i bucket S3 creati nei Prerequisiti, nella Fase 1 e nella Fase 5, completa le seguenti operazioni:
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Bucket scegli il pulsante di opzione accanto al nome del bucket che desideri svuotare, quindi scegli Svuota.
-
Nella pagina Svuota bucket conferma che desideri svuotare il bucket inserendo
permanently delete
nel campo di testo e quindi scegli Svuota.
Eliminazione dei bucket S3
Per eliminare i bucket S3 creati nei Prerequisiti, nella Fase 1 e nella Fase 5, completa invece le seguenti operazioni:
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Nell'elenco Bucket, scegli il pulsante di opzione accanto al nome del bucket che desideri eliminare.
-
Scegli Elimina.
-
Nella pagina Delete bucket (Elimina bucket) conferma che desideri eliminare il bucket inserendone il nome nel campo di testo e quindi scegli Delete bucket (Elimina bucket).
Passaggi successivi
Dopo aver completato questo tutorial, puoi esplorare altri casi d'uso rilevanti:
-
Puoi usare Amazon CloudFront per trasmettere i file multimediali transcodificati agli spettatori di tutto il mondo. Per ulteriori informazioni, consulta Tutorial: hosting di video in streaming su richiesta con Amazon S3, Amazon e CloudFront Amazon Route 53.
-
Puoi transcodificare i video nel momento in cui li carichi nel bucket di origine S3. A tale scopo, puoi configurare un trigger di eventi Amazon S3 che richiama automaticamente la funzione Lambda con cui transcodificare nuovi oggetti in S3. MediaConvert Per maggiori informazioni consulta Tutorial: Uso di un trigger Amazon S3 per richiamare una funzione Lambda nella Guida per gli sviluppatori di AWS Lambda .