

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

# Buat pipeline pemrosesan video dengan menggunakan Amazon Kinesis Video Streams dan AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski dan Pushparaju Thangavel, Amazon Web Services*

## Ringkasan
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-summary"></a>

Pola ini menunjukkan cara menggunakan [Amazon Kinesis Video Streams dan](https://aws.amazon.com/kinesis/video-streams/) [AWS Fargate](https://aws.amazon.com/fargate) untuk mengekstrak bingkai dari aliran video dan menyimpannya sebagai file gambar untuk diproses lebih lanjut di [Amazon Simple Storage Service (Amazon S3](https://aws.amazon.com/s3/)). 

Pola ini menyediakan contoh aplikasi dalam bentuk proyek Java Maven. Aplikasi ini mendefinisikan infrastruktur AWS dengan menggunakan AWS [Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). Baik logika pemrosesan bingkai dan definisi infrastruktur ditulis dalam bahasa pemrograman Java. Anda dapat menggunakan aplikasi sampel ini sebagai dasar untuk mengembangkan pipa pemrosesan video real-time Anda sendiri atau untuk membangun langkah pra-pemrosesan video dari pipa pembelajaran mesin. 

## Prasyarat dan batasan
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ Kit Pengembangan Java SE (JDK) 11, diinstal
+ [Apache Maven](https://maven.apache.org/), diinstal
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), diinstal
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)) versi 2, diinstal
+ [Docker](https://docs.docker.com/get-docker/) (diperlukan untuk membuat gambar Docker untuk digunakan dalam definisi tugas AWS Fargate), diinstal

**Batasan**

Pola ini dimaksudkan sebagai bukti konsep, atau sebagai dasar untuk pengembangan lebih lanjut. Seharusnya tidak digunakan dalam bentuknya saat ini dalam penyebaran produksi.

**Versi produk**
+ [Pola ini diuji dengan AWS CDK versi 1.77.0 (lihat versi AWS CDK)](https://docs.aws.amazon.com/cdk/api/latest/versions.html)
+ JDK 11
+ AWS CLI versi 2

## Arsitektur
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-architecture"></a>

**Tumpukan teknologi target**
+ Amazon Kinesis Video Streams
+ Tugas AWS Fargate
+ Antrean Amazon Simple Queue Service (Amazon SQS)
+ Buket Amazon S3

**Arsitektur target**

![\[Arsitektur untuk menggunakan Kinesis Video Streams dan Fargate untuk membangun pipeline pemrosesan video.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


Pengguna membuat aliran video Kinesis, mengunggah video, dan mengirimkan pesan JSON yang berisi rincian tentang input Kinesis video stream dan output S3 bucket ke antrian SQS. AWS Fargate, yang menjalankan aplikasi utama dalam wadah, menarik pesan dari antrian SQS dan mulai mengekstrak bingkai. Setiap frame disimpan dalam file gambar dan disimpan di bucket S3 target.

**Otomatisasi dan skala**

Aplikasi sampel dapat menskalakan baik secara horizontal maupun vertikal dalam satu Wilayah AWS. Penskalaan horizontal dapat dicapai dengan meningkatkan jumlah tugas AWS Fargate yang diterapkan yang dibaca dari antrian SQS. Penskalaan vertikal dapat dicapai dengan meningkatkan jumlah utas pemecahan bingkai dan penerbitan gambar dalam aplikasi. Pengaturan ini diteruskan sebagai variabel lingkungan ke aplikasi dalam definisi [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)sumber daya di AWS CDK. Karena sifat penerapan tumpukan AWS CDK, Anda dapat menerapkan aplikasi ini di beberapa Wilayah AWS dan akun tanpa upaya tambahan.

## Alat
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-tools"></a>

**Alat**
+ [AWS CDK](https://aws.amazon.com/cdk/) adalah kerangka kerja pengembangan perangkat lunak untuk mendefinisikan infrastruktur dan sumber daya cloud Anda dengan menggunakan bahasa pemrograman seperti TypeScript,, JavaScript Python, Java, dan C \$1/.Net.
+ [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams adalah layanan AWS yang dikelola sepenuhnya yang dapat Anda gunakan untuk melakukan streaming video langsung dari perangkat ke AWS Cloud, atau membuat aplikasi untuk pemrosesan video real-time atau analitik video berorientasi batch.
+ [AWS Fargate](https://aws.amazon.com/fargate) adalah mesin komputasi tanpa server untuk kontainer. Fargate menghilangkan kebutuhan untuk menyediakan dan mengelola server, dan memungkinkan Anda fokus pada pengembangan aplikasi Anda.
+ [Amazon S3](https://aws.amazon.com/s3/) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja.
+ [Amazon SQS](https://aws.amazon.com/sqs/) adalah layanan antrian pesan yang dikelola sepenuhnya yang memungkinkan Anda memisahkan dan menskalakan layanan mikro, sistem terdistribusi, dan aplikasi tanpa server.

**Kode**
+ File.zip dari proyek aplikasi sampel (`frame-splitter-code.zip`) dilampirkan.

## Epik
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Menyebarkan infrastruktur
<a name="deploy-the-infrastructure"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mulai daemon Docker. | Mulai daemon Docker di sistem lokal Anda. AWS CDK menggunakan Docker untuk membuat image yang digunakan dalam tugas AWS Fargate. Anda harus menjalankan Docker sebelum melanjutkan ke langkah berikutnya. | Pengembang, DevOps insinyur | 
| Bangun proyek. | Unduh aplikasi `frame-splitter-code` sampel (terlampir) dan ekstrak isinya ke dalam folder di mesin lokal Anda. Sebelum Anda dapat menyebarkan infrastruktur, Anda harus membangun proyek [Java Maven](https://maven.apache.org/). Pada prompt perintah, navigasikan ke direktori root proyek, dan buat proyek dengan menjalankan perintah: <pre>mvn clean install</pre> | Pengembang, DevOps insinyur | 
| Bootstrap AWS CDK. | (Hanya pengguna AWS CDK pertama kali) Jika ini adalah pertama kalinya Anda menggunakan AWS CDK, Anda mungkin harus mem-bootstrap lingkungan dengan menjalankan perintah AWS CLI:<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>dimana `$AWS_PROFILE_NAME` memegang nama profil AWS dari kredensi AWS Anda. Atau, Anda dapat menghapus parameter ini untuk menggunakan profil default. Untuk informasi selengkapnya, lihat [dokumentasi AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Pengembang, DevOps insinyur | 
| Menerapkan tumpukan AWS CDK. | Pada langkah ini, Anda membuat sumber daya infrastruktur yang diperlukan (antrean SQS, bucket S3, definisi tugas AWS Fargate) di akun AWS Anda, membuat image Docker yang diperlukan untuk tugas AWS Fargate, dan menerapkan aplikasi. Pada prompt perintah, arahkan ke direktori root proyek, dan jalankan perintah:<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>dimana `$AWS_PROFILE_NAME` memegang nama profil AWS dari kredensi AWS Anda. Atau, Anda dapat menghapus parameter ini untuk menggunakan profil default. Konfirmasikan penyebaran. Perhatikan nilai **QueueUrl**dan **Bucket** dari keluaran penyebaran CDK; Anda akan memerlukannya di langkah selanjutnya. AWS CDK membuat aset, mengunggahnya ke akun AWS Anda, dan membuat semua sumber daya infrastruktur. Anda dapat mengamati proses pembuatan sumber daya di [ CloudFormation konsol AWS](https://console.aws.amazon.com/cloudformation/). Untuk informasi selengkapnya, lihat [ CloudFormation dokumentasi AWS dan dokumentasi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Pengembang, DevOps insinyur | 
| Buat aliran video. | Pada langkah ini, Anda membuat aliran video Kinesis yang akan berfungsi sebagai aliran input untuk pemrosesan video. Pastikan AWS CLI telah diinstal dan dikonfigurasi. Di AWS CLI, jalankan:<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>dimana `$AWS_PROFILE_NAME` memegang nama profil AWS dari kredensyal AWS Anda (atau hapus parameter ini untuk menggunakan profil default) dan `$STREAM_NAME` merupakan nama aliran yang valid. Atau, Anda dapat membuat aliran video dengan menggunakan konsol Kinesis dengan mengikuti langkah-langkah dalam dokumentasi [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console). Perhatikan AWS Resource Name (ARN) dari aliran yang dibuat; Anda akan membutuhkannya nanti. | Pengembang, DevOps insinyur | 

### Jalankan contoh
<a name="run-an-example"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Unggah video ke streaming. | Di folder proyek untuk `frame-splitter-code` aplikasi sampel, buka `ProcessingTaskTest.java` file di `src/test/java/amazon/awscdk/examples/splitter` folder. Ganti `streamName`**** variabel `profileName`**** dan dengan nilai yang Anda gunakan pada langkah sebelumnya. Untuk mengunggah contoh video ke aliran video Kinesis yang Anda buat pada langkah sebelumnya, jalankan:  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Atau, Anda dapat mengunggah video Anda dengan menggunakan salah satu metode yang dijelaskan dalam dokumentasi [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Pengembang, DevOps insinyur | 
| Memulai pemrosesan video. | Sekarang setelah Anda mengunggah video ke aliran video Kinesis, Anda dapat mulai memprosesnya. Untuk memulai logika pemrosesan, Anda harus mengirim pesan dengan detail ke antrian SQS yang dibuat AWS CDK selama penerapan. Untuk mengirim pesan menggunakan AWS CLI, jalankan:<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>dimana `$AWS_PROFILE_NAME` memegang nama profil AWS dari kredensyal AWS Anda (hapus parameter ini untuk menggunakan profil default), `QUEUE_URL` adalah **QueueUrl**nilai dari output AWS CDK, dan `MESSAGE` merupakan string JSON dalam format berikut: <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>di `STREAM_ARN` mana ARN dari aliran video yang Anda buat pada langkah sebelumnya dan `BUCKET_NAME` merupakan nilai **Bucket dari output** AWS CDK. Mengirim pesan ini memulai pemrosesan video. Atau, Anda dapat mengirim pesan menggunakan konsol Amazon SQS, seperti yang dijelaskan dalam dokumentasi [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html). | Pengembang, DevOps insinyur | 
| Lihat gambar bingkai video. | Anda dapat melihat gambar yang dihasilkan di bucket `s3://BUCKET_NAME/test-output` keluaran S3 yang `BUCKET_NAME` merupakan nilai **Bucket** dari output AWS CDK. | Pengembang, DevOps insinyur | 

## Sumber daya terkait
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Dokumentasi AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Referensi AWS CDK API](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Lokakarya pengantar AWS CDK](https://cdkworkshop.com/)
+ [Dokumentasi Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Contoh: Mengidentifikasi Objek dalam Streaming Video Menggunakan SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Contoh: Mengurai dan Merender Fragmen Aliran Video Kinesis](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analisis video langsung dalam skala secara real time menggunakan Amazon Kinesis Video Streams SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/) dan Amazon (postingan blog AWS Machine Learning)
+ [AWS Fargate Memulai](https://aws.amazon.com/fargate/getting-started/)

## Informasi tambahan
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Memilih IDE**

Kami menyarankan Anda menggunakan IDE Java favorit Anda untuk membangun dan menjelajahi proyek ini.  

**Membersihkan**

Setelah Anda selesai menjalankan contoh ini, hapus semua sumber daya yang diterapkan untuk menghindari biaya infrastruktur AWS tambahan. 

Untuk menghapus infrastruktur dan aliran video, gunakan dua perintah ini di AWS CLI:

```
cdk destroy --profile "$AWS_PROFILE_NAME" --all
```

```
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
```

Atau, Anda dapat menghapus sumber daya secara manual dengan menggunakan CloudFormation konsol AWS untuk menghapus CloudFormation tumpukan AWS, dan konsol Kinesis untuk menghapus aliran video Kinesis. Perhatikan bahwa `cdk destroy` tidak menghapus bucket S3 keluaran atau gambar di repositori Amazon Elastic Container Registry (Amazon ECR) (). `aws-cdk/assets` Anda harus menghapusnya secara manual.

## Lampiran
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)