

Setelah mempertimbangkan dengan cermat, kami memutuskan untuk menghentikan Amazon Kinesis Data Analytics untuk aplikasi SQL:

1. Mulai **1 September 2025,** kami tidak akan memberikan perbaikan bug untuk Amazon Kinesis Data Analytics untuk aplikasi SQL karena kami akan memiliki dukungan terbatas untuk itu, mengingat penghentian yang akan datang.

2. Mulai **15 Oktober 2025,** Anda tidak akan dapat membuat Kinesis Data Analytics baru untuk aplikasi SQL.

3. Kami akan menghapus aplikasi Anda mulai **27 Januari 2026**. Anda tidak akan dapat memulai atau mengoperasikan Amazon Kinesis Data Analytics untuk aplikasi SQL. Support tidak akan lagi tersedia untuk Amazon Kinesis Data Analytics untuk SQL sejak saat itu. Untuk informasi selengkapnya, lihat [Amazon Kinesis Data Analytics untuk penghentian Aplikasi SQL](discontinuation.md).

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

# Mengonfigurasi Output Aplikasi
<a name="how-it-works-output"></a>



Dalam kode aplikasi Anda, Anda menulis output pernyataan SQL untuk satu atau lebih aliran dalam aplikasi. Anda dapat menambahkan konfigurasi output ke aplikasi Anda. untuk menyimpan semua yang ditulis ke aliran dalam aplikasi ke tujuan eksternal seperti aliran data Amazon Kinesis, aliran pengiriman Firehose, atau fungsi. AWS Lambda 

Ada batas pada jumlah tujuan eksternal yang dapat Anda gunakan untuk menyimpan output aplikasi. Untuk informasi selengkapnya, lihat [Batas](limits.md). 

**catatan**  
Sebaiknya gunakan satu tujuan eksternal untuk menyimpan data aliran kesalahan dalam aplikasi agar Anda dapat menyelidiki kesalahan. 



Dalam setiap konfigurasi output ini, Anda memberikan hal berikut:
+ **Nama aliran dalam aplikasi** – Aliran yang ingin Anda simpan ke tujuan eksternal. 

  Kinesis Data Analytics mencari aliran dalam aplikasi yang Anda tentukan dalam konfigurasi output. (Nama aliran adalah peka huruf besar/kecil dan harus sama persis.) Pastikan kode aplikasi Anda membuat aliran dalam aplikasi ini. 
+ **Tujuan eksternal** — Anda dapat menyimpan data ke aliran data Kinesis, aliran pengiriman Firehose, atau fungsi Lambda. Anda menyediakan Amazon Resource Name (ARN) aliran atau fungsi. Anda juga menyediakan IAM role yang dapat diambil Kinesis Data Analytics untuk menulis ke aliran atau fungsi atas nama Anda. Anda menjelaskan format catatan (JSON, CSV) ke Kinesis Data Analytics yang digunakan saat menulis ke tujuan eksternal.

Jika Kinesis Data Analytics tidak dapat menulis ke tujuan streaming atau Lambda, layanan terus mencoba tanpa batas. Ini membuat tekanan balik, yang menyebabkan aplikasi Anda tertinggal. Jika masalah ini tidak teratasi, aplikasi Anda akhirnya berhenti memproses data baru. Anda dapat memantau [Metrik Kinesis Data Analytics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html) dan mengatur alarm untuk kegagalan. Untuk informasi selengkapnya tentang metrik dan alarm, lihat Menggunakan [ CloudWatchMetrik Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) dan Membuat Alarm [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). CloudWatch

Anda dapat mengonfigurasi output aplikasi menggunakan Konsol Manajemen AWS. Konsol membuat panggilan API untuk menyimpan konfigurasi. 

## Membuat Output Menggunakan AWS CLI
<a name="how-it-works-output-cli"></a>

Bagian ini menjelaskan cara membuat bagian `Outputs` dari isi permintaan untuk operasi `CreateApplication` atau `AddApplicationOutput`.

### Membuat Output Aliran Kinesis
<a name="how-it-works-output-cli-streams"></a>

Fragmen JSON berikut menunjukkan bagian `Outputs` di isi permintaan `CreateApplication` untuk membuat tujuan Amazon Kinesis data stream.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "KinesisStreamsOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
 
]
```

### Membuat Output Aliran Pengiriman Firehose
<a name="how-it-works-output-cli-firehose"></a>

Fragmen JSON berikut menunjukkan `Outputs` bagian di badan `CreateApplication` permintaan untuk membuat tujuan aliran pengiriman Amazon Data Firehose.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "KinesisFirehoseOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
]
```

### Membuat Output Fungsi Lambda
<a name="how-it-works-output-cli-lambda"></a>

Fragmen JSON berikut menunjukkan `Outputs` bagian dalam badan `CreateApplication` permintaan untuk membuat tujuan AWS Lambda fungsi.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "LambdaOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
]
```

# Menggunakan Fungsi Lambda sebagai Output
<a name="how-it-works-output-lambda"></a>

Menggunakan AWS Lambda sebagai tujuan memungkinkan Anda untuk lebih mudah melakukan pasca-pemrosesan hasil SQL Anda sebelum mengirimnya ke tujuan akhir. Tugas pasca-pemrosesan umum meliputi berikut ini:
+ Menggabungkan beberapa baris ke dalam satu catatan
+ Menggabungkan hasil saat ini dengan hasil sebelumnya untuk mengatasi data yang datang terlambat
+ Mengirimkan ke berbagai tujuan berdasarkan tipe informasi
+ Terjemahan format catatan (seperti menerjemahkan ke Protobuf)
+ Manipulasi atau transformasi string
+ Pengayaan data setelah pemrosesan analitik
+ Pemrosesan khusus untuk kasus penggunaan geospasial
+ Enkripsi data

Fungsi Lambda dapat memberikan informasi analitik ke berbagai AWS layanan dan tujuan lainnya, termasuk yang berikut:
+ [Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) (Amazon S3)
+ Kustom APIs
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)
+ [Amazon Aurora](http://aurora.apache.org/)
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/)
+ [Layanan Pemberitahuan Sederhana Amazon (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/)
+ [Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/) (Amazon SQS)
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)

Untuk informasi selengkapnya tentang membuat aplikasi Lambda, lihat [Memulai dengan AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

**Topics**
+ [Lambda sebagai Izin Output](#how-it-works-output-lambda-perms)
+ [Lambda sebagai Metrik Output](#how-it-works-output-lambda-metrics)
+ [Lambda sebagai Model Data Input Peristiwa Output dan Model Respons Catatan](#how-it-works-output-lambda-model)
+ [Frekuensi Invokasi Output Lambda](#how-it-works-output-lambda-frequency)
+ [Menambahkan Fungsi Lambda untuk Digunakan sebagai Output](#how-it-works-output-lambda-procedure)
+ [Lambda umum sebagai Kegagalan Output](#how-it-works-output-lambda-troubleshooting)
+ [Membuat Fungsi Lambda untuk Tujuan Aplikasi](how-it-works-output-lambda-functions.md)

## Lambda sebagai Izin Output
<a name="how-it-works-output-lambda-perms"></a>

Untuk menggunakan Lambda sebagai output, IAM role output Lambda aplikasi memerlukan kebijakan izin berikut:

```
{
   "Sid": "UseLambdaFunction",
   "Effect": "Allow",
   "Action": [
       "lambda:InvokeFunction",
       "lambda:GetFunctionConfiguration"
   ],
   "Resource": "FunctionARN"
}
```

## Lambda sebagai Metrik Output
<a name="how-it-works-output-lambda-metrics"></a>

Anda menggunakan Amazon CloudWatch untuk memantau jumlah byte yang dikirim, keberhasilan dan kegagalan, dan sebagainya. [Untuk informasi tentang CloudWatch metrik yang dipancarkan oleh Kinesis Data Analytics menggunakan Lambda sebagai output, lihat Metrik Amazon Kinesis Analytics.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html)

## Lambda sebagai Model Data Input Peristiwa Output dan Model Respons Catatan
<a name="how-it-works-output-lambda-model"></a>

Untuk mengirim catatan output Kinesis Data Analytics, fungsi Lambda Anda harus sesuai dengan data input peristiwa yang diperlukan dan model respons catatan. 

### Model Data Input Peristiwa
<a name="how-it-works-output-lambda-model-request"></a>

Kinesis Data Analytics terus mengirimkan catatan output dari aplikasi ke Lambda sebagai fungsi output dengan model permintaan berikut. Dalam fungsi Anda, Anda mengulangi melalui daftar dan menerapkan logika bisnis Anda untuk memenuhi persyaratan output Anda (seperti transformasi data sebelum mengirim ke tujuan akhir).


| Bidang | Deskripsi | 
| --- | --- | 
| Bidang | Deskripsi | 
| --- | --- | 
| Bidang | Deskripsi | 
| --- | --- | 
| invocationId | ID invokasi Lambda (GUID acak). | 
| applicationArn | Amazon Resource Name (ARN) aplikasi Kinesis Data Analytics. | 
| catatan [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| recordId | ID catatan (GUID acak) | 
| lambdaDeliveryRecordMetadata |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| data | Muatan catatan output terenkode Base64 | 
| retryHint | Jumlah coba lagi pengiriman | 

**catatan**  
`retryHint` adalah nilai yang meningkat untuk setiap kegagalan pengiriman. Nilai ini tidak bertahan lama, dan menyetel ulang jika aplikasi terganggu.

### Model Respons Catatan
<a name="how-it-works-output-lambda-model-response"></a>

Setiap catatan yang dikirim ke Lambda Anda sebagai fungsi output (dengan catatan IDs) harus diakui dengan salah satu `Ok` atau`DeliveryFailed`, dan harus berisi parameter berikut. Jika tidak, Kinesis Data Analytics menganggapnya sebagai kegagalan pengiriman.


| Bidang | Deskripsi | 
| --- | --- | 
| catatan [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| recordId | ID catatan diteruskan dari Kinesis Data Analytics ke Lambda selama invokasi. Ketidakcocokan apa pun antara ID catatan asli dan ID catatan yang dibenarkan dianggap sebagai kegagalan pengiriman. | 
| result | Status pengiriman catatan. Berikut adalah nilai yang mungkin: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 

## Frekuensi Invokasi Output Lambda
<a name="how-it-works-output-lambda-frequency"></a>

Aplikasi Kinesis Data Analytics menyangga catatan output dan sering memanggil fungsi tujuan AWS Lambda .
+ Jika catatan dipancarkan ke aliran dalam aplikasi tujuan dalam aplikasi analitik data sebagai jendela jatuh, fungsi AWS Lambda tujuan dipanggil per pemicu jendela jatuh. Misalnya, jika jendela tumbling senilai 60 detik digunakan untuk memancarkan catatan ke aliran dalam aplikasi tujuan, fungsi Lambda dipanggil sekali setiap 60 detik.
+ Jika catatan dipancarkan ke aliran dalam aplikasi tujuan di aplikasi sebagai kueri berkelanjutan atau jendela geser, fungsi tujuan Lambda dipanggil sekitar sekali per detik.

**catatan**  
[Fungsi per Lambda memanggil batas ukuran muatan permintaan](https://docs.aws.amazon.com/lambda/latest/dg/limits.html) berlaku. Melebihi batas tersebut menghasilkan catatan output yang dibagi dan dikirim di beberapa panggilan fungsi Lambda.

## Menambahkan Fungsi Lambda untuk Digunakan sebagai Output
<a name="how-it-works-output-lambda-procedure"></a>

Prosedur berikut menunjukkan cara menambahkan fungsi Lambda sebagai output untuk aplikasi Kinesis Data Analytics.

1. [Masuk ke Konsol Manajemen AWS dan buka Managed Service for Apache Flink console di https://console.aws.amazon.com /kinesisanalytics.](https://console.aws.amazon.com/kinesisanalytics)

1. Pilih aplikasi dalam daftar, lalu pilih **Application details** (Detail aplikasi).

1. Di bagian **Destination** (Tujuan), pilih **Connect new destination** (Sambungkan tujuan baru).

1. Untuk item **Destination** (Tujuan), pilih **fungsi AWS Lambda **.

1. Di bagian **Kirim catatan ke AWS Lambda**, pilih fungsi atau versi Lambda yang sudah ada, atau pilih **Create new** (Buat baru).

1. Jika Anda membuat fungsi Lambda baru, lakukan hal berikut:

   1. Pilih salah satu templat yang disediakan. Untuk informasi selengkapnya, lihat [Membuat Fungsi Lambda untuk Tujuan Aplikasi](how-it-works-output-lambda-functions.md).

   1. Halaman **Buat Fungsi** terbuka di tab peramban baru. Di kotak **Name** (Nama), beri nama yang bermakna untuk fungsi (misalnya, **myLambdaFunction**).

   1. Perbarui templat dengan fungsi pasca-pemrosesan untuk aplikasi Anda. Untuk informasi tentang cara membuat fungsi Lambda, lihat [Memulai](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) dalam *Panduan Developer AWS Lambda *.

   1. Di konsol Kinesis Data Analytics, dalam daftar **Fungsi Lambda**, pilih fungsi Lambda yang baru saja Anda buat. Pilih **\$1LATEST** untuk versi fungsi Lambda.

1. Di bagian **In-application stream** (Aliran dalam aplikasi), pilih **Choose an existing in-application stream** (Pilih aliran dalam aplikasi yang sudah ada). Untuk **Nama aliran dalam aplikasi**, pilih aliran output aplikasi Anda. Hasil dari aliran output yang dipilih dikirim ke fungsi output Lambda.

1. Biarkan sisa formulir dengan nilai default, dan pilih **Save and continue** (Simpan dan lanjutkan).

Aplikasi Anda sekarang mengirimkan catatan dari aliran dalam aplikasi ke fungsi Lambda Anda. Anda dapat melihat hasil template default di CloudWatch konsol Amazon. Pantau metrik `AWS/KinesisAnalytics/LambdaDelivery.OkRecords` untuk melihat jumlah catatan yang dikirim ke fungsi Lambda.

## Lambda umum sebagai Kegagalan Output
<a name="how-it-works-output-lambda-troubleshooting"></a>

Berikut adalah alasan umum pengiriman ke fungsi Lambda dapat gagal.
+ Tidak semua catatan (dengan catatan IDs) dalam batch yang dikirim ke fungsi Lambda dikembalikan ke layanan Kinesis Data Analytics. 
+ Respons kehilangan ID catatan atau bidang status. 
+ Waktu habis fungsi Lambda tidak cukup untuk mencapai logika bisnis dalam fungsi Lambda.
+ Logika bisnis dalam fungsi Lambda tidak menangkap semua kesalahan, yang mengakibatkan waktu habis dan tekanan balik karena pengecualian yang tidak ditangani. Ini sering disebut sebagai pesan “pil beracun”.

Untuk kegagalan pengiriman data, Kinesis Data Analytics terus mencoba kembali invokasi Lambda pada kumpulan catatan yang sama hingga berhasil. Untuk mendapatkan wawasan tentang kegagalan, Anda dapat memantau CloudWatch metrik berikut: 
+ Aplikasi Kinesis Data Analytics Lambda sebagai metrik CloudWatch Output: Menunjukkan jumlah keberhasilan dan kegagalan, di antara statistik lainnya. Untuk informasi selengkapnya, lihat [Metrik Amazon Kinesis Analytics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html).
+ AWS Lambda CloudWatch metrik fungsi dan log.

# Membuat Fungsi Lambda untuk Tujuan Aplikasi
<a name="how-it-works-output-lambda-functions"></a>

Aplikasi Kinesis Data Analytics Anda dapat AWS Lambda menggunakan fungsi sebagai output. Kinesis Data Analytics menyediakan templat untuk membuat fungsi Lambda yang digunakan sebagai tujuan aplikasi Anda. Gunakan templat ini sebagai titik awal untuk pasca-pemrosesan output dari aplikasi Anda. 

**Topics**
+ [Membuat Tujuan Fungsi Lambda di Node.js](#how-it-works-lambda-dest-nodejs)
+ [Membuat Tujuan Fungsi Lambda di Python](#how-it-works-lambda-dest-python)
+ [Membuat Tujuan Fungsi Lambda di Java](#how-it-works-lambda-dest-java)
+ [Membuat Tujuan Fungsi Lambda di .NET](#how-it-works-lambda-net)

## Membuat Tujuan Fungsi Lambda di Node.js
<a name="how-it-works-lambda-dest-nodejs"></a>

Templat berikut untuk membuat fungsi Lambda tujuan di Node.js tersedia di konsol:


| Lambda sebagai Cetak Biru Output | Bahasa dan Versi | Deskripsi | 
| --- | --- | --- | 
| kinesis-analytics-output | Node.js 12.x | Kirimkan catatan output dari aplikasi Kinesis Data Analytics ke tujuan khusus. | 

## Membuat Tujuan Fungsi Lambda di Python
<a name="how-it-works-lambda-dest-python"></a>

Templat berikut untuk membuat fungsi Lambda tujuan di Phyton tersedia di konsol:


| Lambda sebagai Cetak Biru Output | Bahasa dan Versi | Deskripsi | 
| --- | --- | --- | 
| kinesis-analytics-output-sns | Python 2.7 | Kirimkan catatan output dari aplikasi Kinesis Data Analytics ke Amazon SNS. | 
| kinesis-analytics-output-ddb | Python 2.7 | Kirimkan catatan output dari aplikasi Kinesis Data Analytics ke Amazon DynamoDB. | 

## Membuat Tujuan Fungsi Lambda di Java
<a name="how-it-works-lambda-dest-java"></a>

Untuk membuat fungsi Lambda tujuan di Java, gunakan kelas [peristiwa Java](https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events).

Kode berikut menunjukkan fungsi Lambda tujuan sampel menggunakan Java:

```
public class LambdaFunctionHandler
        implements RequestHandler<KinesisAnalyticsOutputDeliveryEvent, KinesisAnalyticsOutputDeliveryResponse> {

    @Override
    public KinesisAnalyticsOutputDeliveryResponse handleRequest(KinesisAnalyticsOutputDeliveryEvent event,
            Context context) {
        context.getLogger().log("InvocatonId is : " + event.invocationId);
        context.getLogger().log("ApplicationArn is : " + event.applicationArn);

        List<KinesisAnalyticsOutputDeliveryResponse.Record> records = new ArrayList<KinesisAnalyticsOutputDeliveryResponse.Record>();
        KinesisAnalyticsOutputDeliveryResponse response = new KinesisAnalyticsOutputDeliveryResponse(records);

        event.records.stream().forEach(record -> {
            context.getLogger().log("recordId is : " + record.recordId);
            context.getLogger().log("record retryHint is :" + record.lambdaDeliveryRecordMetadata.retryHint);
            // Add logic here to transform and send the record to final destination of your choice.
            response.records.add(new Record(record.recordId, KinesisAnalyticsOutputDeliveryResponse.Result.Ok));
        });
        return response;
    }

}
```

## Membuat Tujuan Fungsi Lambda di .NET
<a name="how-it-works-lambda-net"></a>

Untuk membuat fungsi Lambda tujuan di .NET, gunakan kelas [peristiwa .NET](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents).

Kode berikut menunjukkan fungsi Lambda tujuan sampel menggunakan C\$1:

```
public class Function
    {
        public KinesisAnalyticsOutputDeliveryResponse FunctionHandler(KinesisAnalyticsOutputDeliveryEvent evnt, ILambdaContext context)
        {
            context.Logger.LogLine($"InvocationId: {evnt.InvocationId}");
            context.Logger.LogLine($"ApplicationArn: {evnt.ApplicationArn}");

            var response = new KinesisAnalyticsOutputDeliveryResponse
            {
                Records = new List<KinesisAnalyticsOutputDeliveryResponse.Record>()
            };

            foreach (var record in evnt.Records)
            {
                context.Logger.LogLine($"\tRecordId: {record.RecordId}");
                context.Logger.LogLine($"\tRetryHint: {record.RecordMetadata.RetryHint}");
                context.Logger.LogLine($"\tData: {record.DecodeData()}");

                // Add logic here to send to the record to final destination of your choice.

                var deliveredRecord = new KinesisAnalyticsOutputDeliveryResponse.Record
                {
                    RecordId = record.RecordId,
                    Result = KinesisAnalyticsOutputDeliveryResponse.OK
                };
                response.Records.Add(deliveredRecord);
            }
            return response;
        }
    }
```

Untuk informasi selengkapnya tentang membuat fungsi Lambda untuk pra-pemrosesan dan tujuan di .NET, lihat [https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents).

# Model Pengiriman untuk Menyimpan Output Aplikasi untuk Tujuan Eksternal
<a name="failover-checkpoint"></a>

Amazon Kinesis Data Analytics menggunakan model pengiriman "setidaknya sekali" untuk output aplikasi ke tujuan yang dikonfigurasi. Saat aplikasi berjalan, Kinesis Data Analytics mengambil titik pemeriksaan internal. Titik pemeriksaan ini adalah titik dalam waktu ketika catatan output dikirim ke tujuan tanpa kehilangan data. Layanan menggunakan titik pemeriksaan yang diperlukan untuk memastikan output aplikasi Anda dikirim setidaknya sekali ke tujuan yang dikonfigurasi.

Dalam situasi normal, aplikasi Anda memproses data yang masuk terus-menerus. Kinesis Data Analytics menulis output ke tujuan yang dikonfigurasi, seperti aliran data Kinesis atau aliran pengiriman Firehose. Namun, aplikasi Anda sesekali dapat terganggu, misalnya:
+ Anda memilih untuk menghentikan aplikasi Anda dan memulai ulang nanti.
+ Anda menghapus IAM role yang diperlukan oleh Kinesis Data Analytics untuk menulis output aplikasi Anda ke tujuan yang dikonfigurasi. Tanpa IAM role, Kinesis Data Analytics tidak memiliki izin untuk menulis ke tujuan eksternal atas nama Anda.
+ Penghentian jaringan atau kegagalan layanan internal lainnya menyebabkan aplikasi Anda berhenti berjalan sejenak. 

Saat aplikasi dimulai ulang, Kinesis Data Analytics memastikan aplikasi terus memproses dan menulis output dari titik sebelum atau sama dengan saat terjadinya kegagalan. Ini membantu memastikan Kinesis Data Analytics tidak melewatkan pengiriman output aplikasi apa pun ke tujuan yang dikonfigurasi. 

Misalkan Anda mengonfigurasi beberapa tujuan dari aliran dalam aplikasi yang sama. Setelah aplikasi pulih dari kegagalan, Kinesis Data Analytics melanjutkan penyimpanan output ke tujuan yang dikonfigurasi dari catatan terakhir yang dikirim ke tujuan paling lambat. Ini dapat mengakibatkan catatan output yang sama dikirimkan lebih dari sekali ke tujuan lain. Dalam hal ini, Anda harus menangani duplikasi potensial di tujuan secara eksternal. 