Tutorial: Video transcoding batch dengan Operasi Batch S3,, dan AWS LambdaAWS Elemental MediaConvert - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Video transcoding batch dengan Operasi Batch S3,, dan AWS LambdaAWS Elemental MediaConvert

Konsumen video menggunakan perangkat dari segala bentuk, ukuran, dan vintage untuk menikmati konten media. Beragam perangkat ini menghadirkan tantangan bagi pembuat konten dan distributor. Alih-alih dalam one-size-fits-all format, video harus dikonversi sehingga dapat menjangkau berbagai ukuran, format, dan bitrate. Tugas konversi ini bahkan lebih menantang ketika Anda memiliki sejumlah besar video yang harus dikonversi.

AWS menawarkan Anda metode untuk membangun arsitektur terdistribusi yang dapat diskalakan yang melakukan hal berikut:

  • Menelan video masukan

  • Memproses video untuk pemutaran di berbagai perangkat

  • Menyimpan file media yang ditranskode

  • Mengirimkan file media keluaran untuk memenuhi permintaan

Jika Anda memiliki repositori video ekstensif yang disimpan di Amazon S3, Anda dapat mentranskode video ini dari format sumbernya ke beberapa jenis file dalam ukuran, resolusi, dan format yang diperlukan oleh pemutar video atau perangkat tertentu. Secara khusus, Operasi Batch S3 memberi Anda solusi untuk menjalankan AWS Lambda fungsi untuk video input yang ada di bucket sumber S3. Kemudian, fungsi Lambda memanggil AWS Elemental MediaConvertuntuk melakukan tugas transcoding video skala besar. File media keluaran yang dikonversi disimpan dalam bucket tujuan S3.

Diagram alur kerja batch-transcoding.
Tujuan

Dalam tutorial ini, Anda mempelajari cara mengatur Operasi Batch S3 untuk menjalankan fungsi Lambda untuk transcoding batch video yang disimpan dalam bucket sumber S3. Fungsi Lambda memanggil MediaConvert untuk mentranskode video. Output untuk setiap video di bucket sumber S3 adalah sebagai berikut:

  • Streaming bitrate adaptif HTTP Live Streaming (HLS) untuk pemutaran pada perangkat dengan berbagai ukuran dan bandwidth yang bervariasi

  • File video MP4

  • Gambar thumbnail dikumpulkan pada interval

Prasyarat

Sebelum Anda memulai tutorial ini, Anda harus memiliki bucket sumber Amazon S3 (misalnya,tutorial-bucket-1) dengan video yang akan ditranskode sudah disimpan di dalamnya.

Anda dapat memberi ember nama lain jika Anda mau. Untuk informasi selengkapnya tentang nama bucket di Amazon S3, lihat. Peraturan penamaan bucket

Untuk bucket sumber S3, pertahankan pengaturan yang terkait dengan pengaturan Blokir Akses Publik untuk bucket ini disetel ke default (Blokir semua akses publik diaktifkan). Untuk informasi selengkapnya, lihat Membuat bucket.

Untuk informasi selengkapnya tentang mengunggah video ke bucket sumber S3, lihat. Mengunggah Objek Jika Anda mengunggah banyak file video besar ke S3, Anda mungkin ingin menggunakan Amazon S3 Transfer Acceleration untuk mengonfigurasi transfer file yang cepat dan aman. Transfer Acceleration dapat mempercepat pengunggahan video ke bucket S3 Anda untuk transfer jarak jauh video yang lebih besar. Untuk informasi selengkapnya, lihat Mengonfigurasi transfer file yang cepat dan aman menggunakan Amazon S3 Transfer Acceleration.

Langkah 1: Buat bucket S3 untuk file media keluaran

Pada langkah ini, Anda membuat bucket tujuan S3 untuk menyimpan file media keluaran yang dikonversi. Anda juga membuat konfigurasi Cross Origin Resource Sharing (CORS) untuk memungkinkan akses lintas asal ke file media transkode yang disimpan di bucket tujuan S3 Anda.

Buat ember untuk file media keluaran

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Pilih Buat bucket.

  4. Untuk nama Bucket, masukkan nama untuk bucket Anda (misalnya,tutorial-bucket-2).

  5. Untuk Wilayah, pilih Wilayah AWS tempat Anda ingin ember berada.

  6. Untuk memastikan akses publik ke file media keluaran Anda, dalam pengaturan Blokir Akses Publik untuk bucket ini, hapus Blokir semua akses publik.

    Awas

    Sebelum Anda menyelesaikan langkah ini, tinjau Melakukan blok akses publik ke penyimpanan Amazon S3 Anda untuk memastikan bahwa Anda telah memahami dan menerima risiko yang terkait dengan mengizinkan akses publik. Saat Anda mematikan pengaturan Blokir Akses Publik untuk membuat bucket Anda publik, siapa pun di internet dapat mengakses bucket Anda. Kami sarankan agar Anda memblokir semua akses publik ke bucket Anda.

    Jika Anda tidak ingin menghapus pengaturan Blokir Akses Publik, Anda dapat menggunakan Amazon CloudFront untuk mengirimkan file media yang ditranskode ke pemirsa (pengguna akhir). Untuk informasi selengkapnya, lihat Tutorial: Hosting video streaming sesuai permintaan dengan Amazon S3, Amazon, dan CloudFront Amazon Route 53.

  7. Pilih kotak centang di sebelah Saya mengakui bahwa pengaturan saat ini dapat mengakibatkan bucket ini dan objek dalam menjadi publik.

  8. Pertahankan pengaturan yang tersisa disetel ke default.

  9. Pilih Buat bucket.

Tambahkan konfigurasi CORS ke bucket keluaran S3

Konfigurasi JSON CORS mendefinisikan cara untuk aplikasi web klien (pemutar video dalam konteks ini) yang dimuat dalam satu domain untuk memutar file media keluaran transkode dalam domain yang berbeda.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Dalam daftar Bucket, pilih nama bucket yang Anda buat sebelumnya (misalnya,tutorial-bucket-2).

  4. Pilih tab Izin.

  5. Di bagian Berbagi sumber daya lintas asal (CORS), pilih Edit.

  6. Di kotak teks konfigurasi CORS, salin dan tempel konfigurasi CORS berikut.

    Konfigurasi CORS harus dalam format JSON. Dalam contoh ini, AllowedOrigins atribut menggunakan karakter wildcard (*) untuk menentukan semua asal. Jika Anda tahu asal spesifik Anda, Anda dapat membatasi AllowedOrigins atribut ke URL pemain spesifik Anda. Untuk informasi selengkapnya tentang mengonfigurasi atribut ini dan atribut lainnya, lihatKonfigurasi CORS.

    [ { "AllowedOrigins": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedHeaders": [ "*" ], "ExposeHeaders": [] } ]
  7. Pilih Simpan perubahan.

Langkah 2: Buat peran IAM untuk MediaConvert

Untuk digunakan AWS Elemental MediaConvert untuk mentranskode video input yang disimpan di bucket S3, Anda harus memiliki peran layanan AWS Identity and Access Management (IAM) untuk memberikan MediaConvert izin membaca dan menulis file video dari dan ke bucket sumber dan tujuan S3 Anda. Saat Anda menjalankan pekerjaan transcoding, MediaConvert konsol menggunakan peran ini.

Untuk membuat peran IAM untuk MediaConvert
  1. Buat peran IAM dengan nama peran yang Anda pilih (misalnya,tutorial-mediaconvert-role). Untuk membuat peran ini, ikuti langkah-langkah di Buat MediaConvert peran Anda di IAM (konsol) di Panduan AWS Elemental MediaConvert Pengguna.

  2. Setelah Anda membuat peran IAM untuk MediaConvert, dalam daftar Peran, pilih nama peran MediaConvert yang Anda buat (misalnya,tutorial-mediaconvert-role).

  3. Pada halaman Ringkasan, salin ARN Peran (yang dimulai denganarn:aws:iam::), dan simpan ARN untuk digunakan nanti.

    Untuk informasi tentang ARN, lihat Amazon Resource Name (ARN) di Referensi Umum AWS .

Langkah 3: Buat peran IAM untuk fungsi Lambda Anda

Untuk mentranskode video batch dengan dan Operasi Batch MediaConvert S3, Anda menggunakan fungsi Lambda untuk menghubungkan kedua layanan ini untuk mengonversi video. Fungsi Lambda ini harus memiliki peran IAM yang memberikan izin fungsi Lambda untuk MediaConvert mengakses dan Operasi Batch S3.

Buat peran IAM untuk fungsi Lambda Anda

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi kiri, pilih Peran, lalu pilih Buat peran.

  3. Pilih jenis peran AWS layanan, lalu di bawah Kasus penggunaan umum, pilih Lambda.

  4. Pilih Berikutnya: Izin.

  5. Pada halaman Lampirkan kebijakan izin, masukkan AWSLambdaBasicExecutionRole kotak Filter kebijakan. Untuk melampirkan kebijakan terkelola AWSLambdaBasicExecutionRoleke peran ini untuk memberikan izin menulis ke CloudWatch Log Amazon, pilih kotak centang di AWSLambdaBasicExecutionRolesebelahnya.

  6. Pilih Berikutnya: Tanda.

  7. (Opsional) Tambahkan tag ke kebijakan terkelola.

  8. Pilih Selanjutnya: Tinjau.

  9. Untuk Nama peran, masukkan tutorial-lambda-transcode-role.

  10. Pilih Buat peran.

Sematkan kebijakan inline untuk peran IAM fungsi Lambda Anda

Untuk memberikan izin ke MediaConvert sumber daya yang diperlukan agar fungsi Lambda dapat dijalankan, Anda harus menggunakan kebijakan sebaris.

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Peran.

  3. Dalam daftar Peran, pilih nama peran IAM yang Anda buat sebelumnya untuk fungsi Lambda Anda (misalnyatutorial-lambda-transcode-role,).

  4. Pilih tab Izin.

  5. Pilih Menambahkan kebijakan inline.

  6. Pilih tab JSON, lalu salin dan tempel kebijakan JSON berikut.

    Dalam kebijakan JSON, ganti contoh nilai ARN dengan peran ARN Resource dari peran IAM MediaConvert untuk yang Anda buat di Langkah 2 (misalnya,). tutorial-mediaconvert-role

    { "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" } ] }
  7. Pilih Tinjau Kebijakan.

  8. Untuk Nama, masukkan tutorial-lambda-policy.

  9. Pilih Buat Kebijakan.

    Setelah Anda membuat kebijakan sebaris, kebijakan tersebut secara otomatis disematkan dalam peran IAM fungsi Lambda Anda.

Langkah 4: Buat fungsi Lambda untuk transcoding video

Di bagian tutorial ini, Anda membangun fungsi Lambda menggunakan SDK untuk Python untuk diintegrasikan dengan Operasi Batch S3 dan. MediaConvert Untuk memulai transcoding video yang sudah disimpan di bucket sumber S3, Anda menjalankan tugas Operasi Batch S3 yang secara langsung memanggil fungsi Lambda untuk setiap video di bucket sumber S3. Kemudian, fungsi Lambda mengirimkan pekerjaan transcoding untuk setiap video. MediaConvert

Tulis kode fungsi Lambda dan buat paket penerapan

  1. Di mesin lokal Anda, buat folder bernamabatch-transcode.

  2. Di batch-transcode folder, buat file dengan pengaturan pekerjaan JSON. Misalnya, Anda dapat menggunakan pengaturan yang disediakan di bagian ini, dan beri nama filejob.json.

    Sebuah job.json file menentukan berikut:

    • File mana yang akan ditranskode

    • Bagaimana Anda ingin mentranskode video input Anda

    • File media keluaran apa yang ingin Anda buat

    • Apa yang harus diberi nama file yang ditranskode

    • Tempat menyimpan file yang ditranskode

    • Fitur canggih mana yang akan diterapkan, dan sebagainya

    Dalam tutorial ini, kita menggunakan job.json file berikut untuk membuat output berikut untuk setiap video di bucket sumber S3:

    • Streaming bitrate adaptif HTTP Live Streaming (HLS) untuk pemutaran di beberapa perangkat dengan ukuran berbeda dan bandwidth yang bervariasi

    • File video MP4

    • Gambar thumbnail dikumpulkan pada interval

    job.jsonFile contoh ini menggunakan Quality-Defined Variable Bitrate (QVBR) untuk mengoptimalkan kualitas video. Output HLS sesuai dengan Apple (audio tidak dicampur dari video, durasi segmen 6 detik, dan kualitas video yang dioptimalkan melalui QVBR otomatis).

    Jika Anda tidak ingin menggunakan contoh pengaturan yang disediakan di sini, Anda dapat membuat job.json spesifikasi berdasarkan kasus penggunaan Anda. Untuk memastikan konsistensi di seluruh output Anda, pastikan file input Anda memiliki konfigurasi video dan audio yang serupa. Untuk file input apa pun dengan konfigurasi video dan audio yang berbeda, buat otomatisasi terpisah (job.jsonpengaturan unik). Untuk informasi selengkapnya, lihat Contoh pengaturan AWS Elemental MediaConvert pekerjaan di JSON di Panduan AWS Elemental MediaConvert Pengguna.

    { "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" } ] }
  3. Di batch-transcode folder, buat file dengan fungsi Lambda. Anda dapat menggunakan contoh Python berikut dan memberi nama file. convert.py

    Operasi Batch S3 mengirimkan data tugas tertentu ke fungsi Lambda dan memerlukan data hasil kembali. Untuk contoh permintaan dan respons untuk fungsi Lambda, informasi tentang kode respons dan hasil, dan contoh fungsi Lambda untuk Operasi Batch S3, lihat. Memanggil fungsi 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 the job.json file. destination_s3 = 's3://{0}/{1}/{2}' \ .format(os.environ['DestinationBucket'], 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 }
  4. Untuk membuat paket penyebaran dengan convert.py dan job.json sebagai .zip file bernamalambda.zip, di terminal lokal Anda, buka batch-transcode folder yang Anda buat sebelumnya, dan jalankan perintah berikut.

    Untuk pengguna macOS, jalankan perintah berikut:

    zip -r lambda.zip convert.py job.json

    Untuk pengguna Windows, jalankan perintah berikut:

    powershell Compress-Archive convert.py lambda.zip
    powershell Compress-Archive -update job.json lambda.zip

Buat fungsi Lambda dengan peran eksekusi (konsol)

  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Di panel navigasi kiri, pilih Fungsi.

  3. Pilih Buat fungsi.

  4. Pilih Penulis dari scratch.

  5. Di bagian Informasi dasar, lakukan hal berikut:

    1. Untuk Nama fungsi, masukkan tutorial-lambda-convert.

    2. Untuk Runtime, pilih Python 3.8 atau versi Python yang lebih baru.

  6. Pilih Ubah peran eksekusi default, dan di bawah Peran eksekusi, pilih Gunakan peran yang ada.

  7. Di bawah Peran yang ada, pilih nama peran IAM yang Anda buat untuk fungsi Lambda di Langkah 3 (misalnyatutorial-lambda-transcode-role,).

  8. Untuk pengaturan yang tersisa, pertahankan defaultnya.

  9. Pilih Buat fungsi.

Terapkan fungsi Lambda Anda dengan arsip file.zip dan konfigurasikan fungsi Lambda (konsol)

  1. Di bagian Sumber Kode halaman untuk fungsi Lambda yang Anda buat (misalnya,tutorial-lambda-convert), pilih Unggah dari lalu file.zip.

  2. Pilih Unggah untuk memilih .zip file lokal Anda.

  3. Pilih lambda.zip file yang Anda buat sebelumnya, dan pilih Buka.

  4. Pilih Simpan.

  5. Di bagian Pengaturan waktu proses, pilih Edit.

  6. Untuk memberi tahu runtime Lambda metode handler mana dalam kode fungsi Lambda Anda yang akan dipanggil, masukkan di bidang Handler. convert.handler

    Ketika Anda mengkonfigurasi fungsi dalam Python, nilai pengaturan handler adalah nama file dan nama modul handler, dipisahkan oleh titik (). . Misalnya, convert.handler memanggil handler metode yang didefinisikan dalam convert.py file.

  7. Pilih Simpan.

  8. Pada halaman fungsi Lambda Anda, pilih tab Konfigurasi. Di panel navigasi kiri pada tab Konfigurasi, pilih Variabel lingkungan, lalu pilih Edit.

  9. Pilih Tambahkan variabel lingkungan. Kemudian, masukkan Kunci dan Nilai yang ditentukan untuk masing-masing variabel lingkungan berikut:

  10. Pilih Simpan.

  11. (Opsional) Pada tab Konfigurasi, di bagian Konfigurasi umum pada panel navigasi kiri, pilih Edit. Di bidang Timeout, masukkan 2 min 0 sec. Lalu, pilih Simpan.

    Timeout adalah jumlah waktu yang memungkinkan Lambda menjalankan fungsi untuk pemanggilan sebelum menghentikannya. Default-nya adalah 3 detik. Harga didasarkan pada jumlah memori yang dikonfigurasi dan jumlah waktu kode Anda berjalan. Untuk informasi selengkapnya, lihat harga AWS Lambda.

Langkah 5: Konfigurasikan Inventaris Amazon S3 untuk bucket sumber S3 Anda

Setelah mengatur fungsi transcoding Lambda, buat pekerjaan Operasi Batch S3 untuk mentranskode satu set video. Pertama, Anda memerlukan daftar objek video masukan yang Anda inginkan Operasi Batch S3 untuk menjalankan tindakan transcoding yang ditentukan. Untuk mendapatkan daftar objek video masukan, Anda dapat membuat laporan Inventaris S3 untuk bucket sumber S3 Anda (misalnya,tutorial-bucket-1).

Membuat dan mengonfigurasi bucket untuk laporan Inventaris S3 untuk video masukan

Untuk menyimpan laporan Inventaris S3 yang mencantumkan objek bucket sumber S3, buat bucket tujuan Inventaris S3, lalu konfigurasikan kebijakan bucket untuk bucket untuk menulis file inventaris ke bucket sumber S3.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Pilih Buat bucket.

  4. Untuk nama Bucket, masukkan nama untuk bucket Anda (misalnya,tutorial-bucket-3).

  5. Untuk Wilayah AWS, pilih di Wilayah AWS mana Anda ingin ember berada.

    Bucket tujuan inventaris harus Wilayah AWS sama dengan bucket sumber tempat Anda menyiapkan Inventaris S3. Bucket tujuan inventaris bisa berbeda Akun AWS.

  6. Di pengaturan Blokir Akses Publik untuk bucket ini, pertahankan pengaturan default (Blokir semua akses publik diaktifkan).

  7. Untuk pengaturan yang tersisa, pertahankan defaultnya.

  8. Pilih Buat bucket.

  9. Dalam daftar Bucket, pilih nama bucket yang baru saja Anda buat (misalnya,tutorial-bucket-3).

  10. Untuk memberikan izin Amazon S3 untuk menulis data laporan inventaris ke bucket tujuan Inventaris S3, pilih tab Izin.

  11. Gulir ke bawah ke bagian Kebijakan Bucket, lalu pilih Edit. Halaman kebijakan Bucket terbuka.

  12. Untuk memberikan izin untuk Inventaris S3, di bidang Kebijakan, tempel kebijakan bucket berikut.

    Ganti tiga nilai contoh dengan nilai-nilai berikut:

    • Nama bucket yang Anda buat untuk menyimpan laporan inventaris (misalnya,tutorial-bucket-3).

    • Nama bucket sumber yang menyimpan video input (misalnya,tutorial-bucket-1).

    • Akun AWS ID yang Anda gunakan untuk membuat bucket sumber video S3 (misalnya,111122223333.

    { "Version":"2012-10-17", "Statement":[ { "Sid":"InventoryAndAnalyticsExamplePolicy", "Effect":"Allow", "Principal": {"Service": "s3.amazonaws.com"}, "Action":"s3:PutObject", "Resource":["arn:aws:s3:::tutorial-bucket-3/*"], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::tutorial-bucket-1" }, "StringEquals": { "aws:SourceAccount": "111122223333", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  13. Pilih Simpan perubahan.

Konfigurasikan Inventaris Amazon S3 untuk bucket sumber video S3 Anda

Untuk membuat daftar file datar objek video dan metadata, Anda harus mengonfigurasi S3 Inventory untuk bucket sumber video S3 Anda. Laporan inventaris terjadwal ini dapat menyertakan semua objek dalam bucket atau objek yang dikelompokkan berdasarkan awalan bersama. Dalam tutorial ini, laporan S3 Inventory mencakup semua objek video di bucket sumber S3 Anda.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Untuk mengonfigurasi laporan Inventaris S3 dari video masukan di bucket sumber S3, dalam daftar Bucket, pilih nama bucket sumber S3 (misalnya,). tutorial-bucket-1

  4. Pilih tab Manajemen.

  5. Gulir ke bawah ke bagian Konfigurasi inventaris, dan pilih Buat konfigurasi inventaris.

  6. Untuk nama konfigurasi Inventaris, masukkan nama (misalnya,tutorial-inventory-config).

  7. Di bawah lingkup Inventaris, pilih Versi saat ini hanya untuk versi Objek dan simpan pengaturan cakupan Inventaris lainnya disetel ke default untuk tutorial ini.

  8. Di bagian Laporkan detail, untuk bucket Tujuan, pilih Akun ini.

  9. Untuk Tujuan, pilih Jelajahi S3, dan pilih bucket tujuan yang Anda buat sebelumnya untuk menyimpan laporan inventaris (misalnya,tutorial-bucket-3). Kemudian, pilih Pilih jalur.

    Bucket tujuan inventaris harus Wilayah AWS sama dengan bucket sumber tempat Anda menyiapkan Inventaris S3. Bucket tujuan inventaris bisa berbeda Akun AWS.

    Di bagian bucket Destination, izin bucket Destination ditambahkan ke kebijakan bucket tujuan inventaris, yang memungkinkan Amazon S3 menempatkan data di bucket tujuan inventaris. Untuk informasi selengkapnya, lihat Membuat kebijakan bucket tujuan.

  10. Untuk Frekuensi, pilih Harian.

  11. Untuk Format output, pilih CSV.

  12. Untuk Status, pilih Aktifkan.

  13. Di bagian enkripsi sisi server, pilih Nonaktifkan untuk tutorial ini.

    Untuk informasi selengkapnya, lihat Mengonfigurasi inventaris dengan menggunakan konsol S3 dan Memberikan izin kepada Amazon S3 untuk menggunakan CMK untuk enkripsi.

  14. Di bidang tambahan - bagian opsional, pilih Ukuran, Terakhir dimodifikasi, dan kelas Penyimpanan.

  15. Pilih Buat.

Untuk informasi selengkapnya, lihat Mengonfigurasi inventaris dengan menggunakan konsol S3.

Periksa laporan inventaris untuk bucket sumber video S3 Anda

Saat laporan inventaris diterbitkan, file manifes dikirim ke bucket tujuan Inventaris S3.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Dalam daftar Bucket, pilih nama bucket sumber video (misalnya,tutorial-bucket-1).

  4. Pilih Manajemen.

  5. Untuk melihat apakah laporan Inventaris S3 Anda sudah siap sehingga Anda dapat membuat pekerjaan Operasi Batch S3 di Langkah 7, di bawah konfigurasi Inventaris, periksa apakah tombol Buat pekerjaan dari manifes diaktifkan.

    catatan

    Diperlukan waktu hingga 48 jam untuk mengirimkan laporan inventaris pertama. Jika tombol Buat pekerjaan dari manifes dinonaktifkan, laporan inventaris pertama belum dikirim. Tunggu hingga laporan inventaris pertama dikirimkan dan tombol Buat pekerjaan dari manifes diaktifkan sebelum Anda membuat pekerjaan Operasi Batch S3 di Langkah 7.

  6. Untuk memeriksa laporan Inventaris S3 (manifest.json), di kolom Tujuan, pilih nama bucket tujuan inventaris yang Anda buat sebelumnya untuk menyimpan laporan inventaris (misalnya,tutorial-bucket-3).

  7. Pada tab Objects, pilih folder yang ada dengan nama bucket sumber S3 Anda (misalnya,tutorial-bucket-1). Kemudian pilih nama yang Anda masukkan dalam nama konfigurasi Inventaris saat Anda membuat konfigurasi inventaris sebelumnya (misalnya,tutorial-inventory-config).

    Anda dapat melihat daftar folder dengan tanggal pembuatan laporan sebagai namanya.

  8. Untuk memeriksa laporan Inventaris S3 harian untuk tanggal tertentu, pilih folder dengan nama tanggal pembuatan yang sesuai, lalu pilihmanifest.json.

  9. Untuk memeriksa detail laporan inventaris pada tanggal tertentu, pada halaman manifest.json, pilih Unduh atau Buka.

Langkah 6: Buat peran IAM untuk Operasi Batch S3

Untuk menggunakan Operasi Batch S3 untuk melakukan transcoding batch, Anda harus terlebih dahulu membuat peran IAM untuk memberikan izin Amazon S3 untuk melakukan Operasi Batch S3.

Membuat kebijakan IAM untuk Operasi Batch S3

Anda harus membuat kebijakan IAM yang memberikan izin Operasi Batch S3 untuk membaca manifes masukan, menjalankan fungsi Lambda, dan menulis laporan penyelesaian pekerjaan Operasi Batch S3.

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi di sebelah kiri, pilih Kebijakan.

  3. Pilih Buat kebijakan.

  4. Pilih tab JSON.

  5. Di bidang teks JSON, tempel kebijakan JSON berikut.

    Dalam kebijakan JSON, ganti empat nilai contoh dengan nilai berikut:

    • Nama bucket sumber yang menyimpan video masukan Anda (misalnya,tutorial-bucket-1).

    • Nama bucket tujuan inventaris yang Anda buat di Langkah 5 untuk menyimpan manifest.json file (misalnya,tutorial-bucket-3).

    • Nama bucket yang Anda buat di Langkah 1 untuk menyimpan file media keluaran (misalnya,tutorial-bucket-2). Dalam tutorial ini, kita menempatkan laporan penyelesaian pekerjaan di bucket tujuan untuk file media output.

    • Peran ARN dari fungsi Lambda yang Anda buat di Langkah 4. Untuk menemukan dan menyalin peran ARN dari fungsi Lambda, lakukan hal berikut:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "S3Get", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::tutorial-bucket-1/*", "arn:aws:s3:::tutorial-bucket-3/*" ] }, { "Sid": "S3PutJobCompletionReport", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::tutorial-bucket-2/*" }, { "Sid": "S3BatchOperationsInvokeLambda", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-west-2:111122223333:function:tutorial-lambda-convert" ] } ] }
  6. Pilih Berikutnya: Tanda.

  7. Pilih Berikutnya: Tinjau.

  8. Di bidang Nama, masukkan tutorial-s3batch-policy.

  9. Pilih Buat kebijakan.

Buat peran IAM Operasi Batch S3 dan lampirkan kebijakan izin

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi kiri, pilih Peran, lalu pilih Buat peran.

  3. Pilih jenis Layanan AWSperan, lalu pilih layanan S3.

  4. Di bawah Pilih kasus penggunaan Anda, pilih Operasi Batch S3.

  5. Pilih Berikutnya: Izin.

  6. Di bawah Lampirkan kebijakan izin, masukkan nama kebijakan IAM yang Anda buat sebelumnya (misalnya,tutorial-s3batch-policy) di kotak pencarian untuk memfilter daftar kebijakan. Pilih kotak centang di samping nama kebijakan (misalnya,tutorial-s3batch-policy).

  7. Pilih Berikutnya: Tanda.

  8. Pilih Selanjutnya: Tinjau.

  9. Untuk Nama peran, masukkan tutorial-s3batch-role.

  10. Pilih Buat peran.

    Setelah Anda membuat peran IAM untuk Operasi Batch S3, kebijakan kepercayaan berikut secara otomatis dilampirkan ke peran tersebut. Kebijakan kepercayaan ini memungkinkan prinsipal layanan Operasi Batch S3 untuk mengambil peran IAM.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

Langkah 7: Buat dan jalankan pekerjaan Operasi Batch S3

Untuk membuat tugas Operasi Batch S3 untuk memproses video input di bucket sumber S3, Anda harus menentukan parameter untuk pekerjaan khusus ini.

catatan

Sebelum Anda mulai membuat pekerjaan Operasi Batch S3, pastikan tombol Buat pekerjaan dari manifes diaktifkan. Untuk informasi selengkapnya, lihat Periksa laporan inventaris untuk bucket sumber video S3 Anda. Jika tombol Buat pekerjaan dari manifes dinonaktifkan, laporan inventaris pertama belum terkirim dan Anda harus menunggu hingga tombol diaktifkan. Setelah mengonfigurasi Inventaris Amazon S3 untuk bucket sumber S3 di Langkah 5, diperlukan waktu hingga 48 jam untuk mengirimkan laporan inventaris pertama.

Membuat tugas Operasi Batch S3

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Operasi Batch.

  3. Pilih Buat tugas.

  4. Untuk Wilayah AWS, pilih Wilayah tempat Anda ingin membuat tugas Anda.

    Dalam tutorial ini, untuk menggunakan tugas Operasi Batch S3 untuk menginvokasi fungsi Lambda, Anda harus membuat tugas di Wilayah yang sama dengan bucket sumber video S3 tempat objek yang direferensikan dalam manifes tersebut berada.

  5. Di bagian Manifes, lakukan hal berikut ini:

    1. Untuk Format manifes, pilih Laporan Inventaris S3 (manifest.json).

    2. Untuk Objek manifes, pilih Telusuri S3 untuk menemukan bucket yang Anda buat di Langkah 5 untuk menyimpan laporan inventaris (misalnya, tutorial-bucket-3). Pada halaman Objek manifes, navigasikan nama objek hingga Anda menemukan file manifest.json untuk tanggal tertentu. File ini mencantumkan informasi tentang semua video yang transkode batch-nya ingin Anda lakukan. Ketika Anda telah menemukan file manifest.json yang ingin Anda gunakan, pilih tombol opsi di sebelahnya. Kemudian, pilih Pilih jalur.

    3. (Opsional) Untuk ID versi objek manifes-opsional, masukkan ID versi untuk objek manifes jika Anda ingin menggunakan versi selain yang terbaru.

  6. Pilih Selanjutnya.

  7. Untuk menggunakan fungsi Lambda untuk mentranskode semua objek yang terdaftar dalam file manifest.json yang dipilih, di bawah Jenis operasi, pilih Menginvokasi fungsi AWS Lambda .

  8. Di bagian Menginvokasi fungsi Lambda, lakukan hal berikut ini:

    1. Pilih Pilih dari fungsi di akun Anda.

    2. Untuk Fungsi Lambda, pilih nama fungsi Lambda yang telah Anda buat di Langkah 4 (misalnya, tutorial-lambda-convert).

    3. Untuk Versi fungsi Lambda, pertahankan nilai default $LATEST.

  9. Pilih Selanjutnya. Halaman Konfigurasi opsi tambahan terbuka.

  10. Di bagian Opsi tambahan, pertahankan pengaturan default.

    Untuk informasi selengkapnya tentang opsi ini, lihat Elemen permintaan pekerjaan Operasi Batch.

  11. Di bagian Laporan penyelesaian, untuk Jalur ke tujuan laporan penyelesaian, pilih Telusuri S3. Temukan bucket yang telah Anda buat untuk file media output di Langkah 1 (misalnya, tutorial-bucket-2). Pilih tombol opsi di sebelah nama bucket tersebut. Kemudian, pilih Pilih jalur.

    Untuk pengaturan Laporan penyelesaian yang tersisa, pertahankan defaultnya. Untuk informasi selengkapnya tentang pengaturan laporan penyelesaian, lihat Elemen permintaan pekerjaan Operasi Batch. Laporan penyelesaian menyimpan catatan detail tugas dan operasi yang dilakukan.

  12. Di bagian Izin, pilih Pilih dari peran IAM yang ada. Untuk Peran IAM, pilih peran IAM untuk tugas Operasi Batch S3 yang Anda buat di Langkah 6 (misalnya, tutorial-s3batch-role).

  13. Pilih Selanjutnya.

  14. Pada halaman Ulasan, tinjau pengaturannya. Lalu, pilih Buat tugas.

    Setelah S3 selesai membaca manifes tugas Operasi Batch S3 Anda, itu akan menetapkan Status tugas menjadi Menunggu konfirmasi Anda untuk menjalankan. Untuk melihat pembaruan status tugas, segarkan halaman. Anda tidak dapat menjalankan tugas Anda sampai statusnya Menunggu konfirmasi Anda untuk menjalankan.

Jalankan tugas Operasi Batch S3 untuk menginvokasi fungsi Lambda Anda

Jalankan tugas Operasi Batch Anda untuk menginvokasi fungsi Lambda untuk transkode video. Jika tugas Anda gagal, Anda dapat memeriksa laporan penyelesaian Anda untuk mengidentifikasi penyebabnya.

Untuk menjalankan tugas Operasi Batch S3
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Operasi Batch.

  3. Dalam daftar Tugas, pilih ID tugas di baris pertama, yang merupakan tugas Operasi Batch S3 yang telah Anda buat sebelumnya.

  4. Pilih Jalankan tugas.

  5. Tinjau kembali parameter tugas Anda, dan konfirmasikan bahwa nilai untuk Total objek yang tercantum dalam temuan sama dengan jumlah objek dalam manifes tersebut. Lalu, pilih Jalankan tugas.

    Halaman tugas Operasi Batch S3 Anda terbuka.

  6. Setelah tugas mulai berjalan, pada halaman tugas Anda, di bawah Status, periksa kemajuan tugas Operasi Batch S3 Anda, seperti Status, % Selesai, Total yang berhasil (laju), Total yang gagal (laju), Tanggal dihentikan, dan Alasan terminasi.

    Saat tugas Operasi Batch S3 selesai, lihat data di halaman tugas Anda untuk mengonfirmasi bahwa tugas selesai seperti yang diharapkan.

    Jika lebih dari 50 persen operasi objek tugas Operasi Batch S3 gagal setelah lebih dari 1.000 pengoperasian yang telah dicoba, tugas tersebut secara otomatis gagal. Untuk memeriksa laporan penyelesaian Anda guna mengidentifikasi penyebab kegagalan, gunakan prosedur opsional berikut ini.

(Opsional) Memeriksa laporan penyelesaian Anda

Anda dapat menggunakan laporan penyelesaian untuk menentukan objek mana yang gagal, serta penyebab kegagalannya.

Untuk memeriksa laporan penyelesaian Anda terkait detail mengenai objek yang gagal
  1. Pada halaman tugas Operasi Batch S3 Anda, gulir ke bawah ke bagian Laporan penyelesaian, dan pilih tautan di bawah Tujuan laporan penyelesaian.

    Halaman bucket tujuan output S3 terbuka.

  2. Pada tab Objek, pilih folder yang memiliki nama yang diakhiri dengan ID tugas Operasi Batch S3 yang telah Anda buat sebelumnya.

  3. Pilih hasil/.

  4. Centang kotak di samping file .csv.

  5. Untuk melihat laporan tugas, pilih Buka atau Unduh.

(Opsional) Memantau setiap invokasi Lambda di konsol Lambda

Setelah tugas Operasi Batch S3 mulai berjalan, tugas akan memanggil fungsi Lambda untuk setiap objek video input. S3 menulis log dari setiap pemanggilan CloudWatch Lambda ke Log. Anda dapat menggunakan dasbor pemantauan konsol Lambda untuk memantau fungsi Lambda Anda.

  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Di panel navigasi kiri, pilih Fungsi.

  3. Dalam daftar Fungsi, pilih nama fungsi Lambda yang Anda buat di Langkah 4 (misalnya, tutorial-lambda-convert).

  4. Pilih tab Monitor.

  5. Di bawah Metrik, lihat metrik runtime untuk fungsi Lambda Anda.

  6. Di bawah Log, lihat data log untuk setiap pemanggilan Lambda melalui Wawasan Log. CloudWatch

    catatan

    Saat Anda menggunakan Operasi Batch S3 dengan fungsi Lambda, fungsi Lambda dipanggil pada setiap objek. Jika tugas Operasi Batch S3 Anda berukuran besar, tugas ini dapat menginvokasi beberapa fungsi Lambda secara bersamaan, yang menyebabkan lonjakan konkurensi Lambda.

    Masing-masing Akun AWS memiliki kuota konkurensi Lambda per Wilayah. Untuk informasi selengkapnya, lihat AWS Lambda Penskalaan Fungsi dalam AWS Lambda Panduan Pengembang. Praktik terbaik untuk menggunakan fungsi Lambda dengan Operasi Batch S3 adalah dengan menetapkan batas konkurensi pada fungsi Lambda itu sendiri. Menetapkan batas konkurensi membuat tugas tidak menghabiskan sebagian besar konkurensi Lambda Anda, dan berpotensi throttling fungsi lain di akun Anda. Untuk informasi selengkapnya, lihat Mengelola konkurensi cadangan Lambda di AWS Lambda Panduan Pengembang.

(Opsional) Pantau setiap pekerjaan MediaConvert transcoding video di konsol MediaConvert

MediaConvert Pekerjaan melakukan pekerjaan transcoding file media. Saat pekerjaan Operasi Batch S3 Anda memanggil fungsi Lambda Anda untuk setiap video, setiap pemanggilan fungsi Lambda membuat pekerjaan transcoding untuk setiap video input. MediaConvert

  1. Masuk ke AWS Management Console dan buka MediaConvert konsol di https://console.aws.amazon.com/mediaconvert/.

  2. Jika halaman MediaConvert pengantar muncul, pilih Memulai.

  3. Dari daftar Tugas, lihat setiap baris untuk memantau tugas transkode bagi setiap video input.

  4. Identifikasi baris tugas yang ingin Anda periksa, dan pilih tautan ID tugas untuk membuka halaman detail tugas.

  5. Pada halaman Ringkasan tugas, di bagian bawah Output, pilih tautan untuk output HLS, MP4, atau Thumbnail, tergantung pada apa yang didukung oleh browser Anda, untuk membuka bucket tujuan S3 untuk file media output.

  6. Di folder yang sesuai (HLS, MP4, atau Thumbnail) bucket tujuan output S3 Anda, pilih nama objek file media output.

    Halaman detail objek terbuka.

  7. Pada halaman detail objek, di bawah Ikhtisar objek, pilih tautan di bawah URL objek untuk menonton file media output yang telah ditranskode.

Langkah 8: Memeriksa file media output dari bucket tujuan S3 Anda

Untuk memeriksa file media output dari bucket tujuan S3 Anda
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Dalam daftar Bucket, pilih nama bucket tujuan S3 untuk file media output yang Anda buat di Langkah 1 (misalnya, tutorial-bucket-2).

  4. Pada tab Objek, setiap video input memiliki folder yang memiliki nama video input. Setiap folder berisi file media output transkode untuk video input.

    Untuk memeriksa file media output untuk video input, lakukan hal berikut ini:

    1. Pilih folder dengan nama video input yang ingin Anda periksa.

    2. Pilih folder Default/.

    3. Pilih folder untuk format transkode (HLS, MP4, atau thumbnail dalam tutorial ini).

    4. Pilih nama file media output.

    5. Untuk melihat file yang ditranskode, pada halaman detail objek, pilih tautan di bawah URL Objek.

      File media output dalam format HLS dibagi menjadi segmen-segmen yang pendek. Untuk memutar video ini, sematkan URL objek file .m3u8 di pemutar yang kompatibel.

Langkah 9: Membersihkan

Jika Anda melakukan transkode video menggunakan Operasi Batch S3, Lambda, MediaConvert dan hanya sebagai latihan pembelajaran, hapus AWS sumber daya yang Anda alokasikan sehingga Anda tidak lagi dikenakan biaya.

Hapus konfigurasi Inventaris S3 untuk bucket sumber S3 Anda

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Dalam daftar Bucket, pilih nama bucket sumber Anda (misalnya, tutorial-bucket-1).

  4. Pilih tab Manajemen.

  5. Di bagian Konfigurasi inventaris, pilih tombol opsi di sebelah konfigurasi inventaris yang Anda buat di Langkah 5 (misalnya, tutorial-inventory-config).

  6. Pilih Hapus, lalu pilih Konfirmasi.

Hapus fungsi Lambda

  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Di panel navigasi kiri, pilih Fungsi.

  3. Centang kotak di samping fungsi yang Anda buat di Langkah 4 (misalnya, tutorial-lambda-convert).

  4. Pilih Tindakan, lalu pilih Hapus.

  5. Di kotak dialog Hapus fungsi, pilih Hapus.

Hapus grup CloudWatch log

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi sebelah kiri, pilih Log, lalu pilih Grup log.

  3. Pilih kotak centang di samping grup log yang memiliki nama yang diakhiri dengan fungsi Lambda yang Anda buat di Langkah 4 (misalnya, tutorial-lambda-convert).

  4. Pilih Tindakan, lalu pilih Hapus grup log.

  5. Di kotak dialog Hapus grup log, pilih Hapus.

Menghapus peran IAM bersama dengan kebijakan inline untuk peran IAM

Untuk menghapus peran IAM yang Anda buat di Langkah 2, Langkah 3, dan Langkah 6, lakukan hal berikut ini:

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Peran, lalu centang kotak di samping nama peran yang ingin Anda hapus.

  3. Pilih Hapus di bagian atas halaman.

  4. Di dalam kotak dialog konfirmasi, masukkan respons yang diperlukan di dalam kolom input teks berdasarkan prompt, lalu pilih Hapus.

Hapus kebijakan IAM yang dikelola pelanggan

Untuk menghapus kebijakan IAM yang dikelola pelanggan yang Anda buat di Langkah 6, lakukan hal berikut ini:

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi di sebelah kiri, pilih Kebijakan.

  3. Pilih tombol opsi di samping kebijakan yang Anda buat di Langkah 6 (misalnya, tutorial-s3batch-policy). Anda dapat menggunakan kotak pencarian untuk memfilter daftar kebijakan.

  4. Pilih Tindakan, lalu pilih Hapus.

  5. Konfirmasi bahwa Anda ingin menghapus kebijakan ini dengan memasukkan namanya di kolom teks, lalu pilih Hapus.

Kosongkan bucket S3

Untuk mengosongkan bucket S3 yang Anda buat di Prasyarat, Langkah 1, dan Langkah 5, lakukan hal berikut ini:

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Di daftar Bucket, pilih tombol opsi di samping nama bucket yang ingin Anda kosongkan, lalu pilih Kosongkan.

  4. Di halaman Bucket kosong, konfirmasikan bahwa Anda ingin mengosongkan bucket dengan mengetik permanently delete ke dalam bidang teks, lalu pilih Kosongkan.

Menghapus bucket S3

Untuk menghapus bucket S3 yang Anda buat di Prasyarat, Langkah 1, dan Langkah 5, lakukan hal berikut ini:

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Di dalam daftar Bucket, pilih tombol opsi di samping nama bucket yang ingin Anda hapus.

  4. Pilih Hapus.

  5. Di halaman Hapus bucket, konfirmasikan bahwa Anda ingin menghapus bucket dengan memasukkan nama bucket ke dalam bidang teks, lalu pilih Hapus bucket.

Langkah selanjutnya

Setelah menyelesaikan tutorial ini, Anda dapat menjelajahi lebih lanjut kasus penggunaan relevan lainnya: