

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

# Memahami pengiriman data di Amazon Data Firehose
<a name="basic-deliver"></a>

Saat Anda mengirim data ke aliran Firehose, data akan dikirim secara otomatis ke tujuan yang Anda pilih. Tabel berikut menjelaskan pengiriman data ke tujuan yang berbeda.


| Destinasi | Detail | 
| --- | --- | 
| Amazon S3 |  Untuk pengiriman data ke Amazon S3, Firehose menggabungkan beberapa catatan masuk berdasarkan konfigurasi buffering aliran Firehose Anda. Kinesis Data Firehose kemudian memberikan catatan tersebut ke Amazon S3 sebagai objek Amazon S3. Secara default, Firehose menggabungkan data tanpa pembatas apa pun. [Jika Anda ingin memiliki pembatas baris baru di antara catatan, Anda dapat menambahkan pembatas baris baru dengan mengaktifkan fitur dalam konfigurasi konsol [Firehose](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3) atau parameter API.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Processor.html) Pengiriman data antara Firehose dan tujuan Amazon S3 dienkripsi dengan TLS (HTTPS).  | 
| Amazon Redshift |  Untuk pengiriman data ke Amazon Redshift, Firehose pertama-tama mengirimkan data masuk ke bucket S3 Anda dalam format yang dijelaskan sebelumnya. Firehose kemudian mengeluarkan perintah Amazon **COPY** Redshift untuk memuat data dari bucket S3 ke cluster yang disediakan Amazon Redshift atau workgroup Amazon Redshift Serverless. Pastikan bahwa setelah Amazon Data Firehose menggabungkan beberapa catatan masuk ke objek Amazon S3, objek Amazon S3 dapat disalin ke klaster yang disediakan Amazon Redshift atau grup kerja Amazon Redshift Tanpa Server. Untuk informasi selengkapnya, lihat [Parameter Format Data Perintah SALIN Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html).  | 
| OpenSearch Layanan dan Tanpa OpenSearch Server | Untuk pengiriman data ke OpenSearch Layanan dan OpenSearch Tanpa Server, Amazon Data Firehose menyangga catatan masuk berdasarkan konfigurasi buffering aliran Firehose Anda. Kemudian menghasilkan permintaan massal OpenSearch Layanan atau OpenSearch Tanpa Server untuk mengindeks beberapa catatan ke kluster OpenSearch Layanan atau koleksi Tanpa OpenSearch Server Anda. Pastikan rekaman Anda dikodekan UTF-8 dan diratakan ke objek JSON satu baris sebelum Anda mengirimkannya ke Amazon Data Firehose. Selain itu, rest.action.multi.allow\$1explicit\$1index opsi untuk kluster OpenSearch Layanan Anda harus disetel ke true (default) untuk mengambil permintaan massal dengan indeks eksplisit yang ditetapkan per catatan. Untuk informasi selengkapnya, lihat [Opsi Lanjutan Konfigurasi OpenSearch Layanan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options) di Panduan Pengembang OpenSearch Layanan Amazon.  | 
| Splunk |  Untuk pengiriman data ke Splunk, Amazon Data Firehose menggabungkan byte yang Anda kirim. Jika Anda ingin pembatas dalam data, seperti karakter baris baru, Anda harus memasukkannya sendiri. Pastikan bahwa Splunk dikonfigurasi untuk mengurai pembatas tersebut. [Untuk mengarahkan ulang data yang dikirim ke bucket kesalahan S3 (cadangan S3) kembali ke Splunk, ikuti langkah-langkah yang disebutkan dalam dokumentasi Splunk.](https://www.splunk.com/en_us/blog/tips-and-tricks/aws-technical-add-on-simplifying-error-data-re-ingestion.html)  | 
| Titik akhir HTTP | Untuk pengiriman data ke titik akhir HTTP yang dimiliki oleh penyedia layanan pihak ketiga yang didukung, Anda dapat menggunakan layanan Amazon Lambda terintegrasi untuk membuat fungsi untuk mengubah rekaman masuk ke format yang sesuai dengan format yang diharapkan integrasi penyedia layanan. Hubungi penyedia layanan pihak ketiga yang titik akhir HTTP-nya Anda pilih sebagai tujuan untuk mempelajari lebih lanjut tentang format catatan yang diterima.  | 
| Kepingan salju |  Untuk pengiriman data ke Snowflake, Amazon Data Firehose secara internal menyangga data selama satu detik dan menggunakan operasi API streaming Snowflake untuk menyisipkan data ke Snowflake. Secara default, catatan yang Anda sisipkan dibilas dan dimasukkan ke tabel Snowflake setiap detik. Setelah Anda melakukan panggilan insert, Firehose memancarkan CloudWatch metrik yang mengukur berapa lama waktu yang dibutuhkan untuk data untuk berkomitmen ke Snowflake. Firehose saat ini hanya mendukung satu item JSON sebagai muatan rekaman dan tidak mendukung array JSON. Pastikan payload input Anda adalah objek JSON yang valid dan terbentuk dengan baik tanpa tanda kutip ganda, tanda kutip, atau karakter escape tambahan.  | 

Setiap tujuan Firehose memiliki frekuensi pengiriman datanya sendiri. Untuk informasi selengkapnya, lihat [Konfigurasikan petunjuk buffering](create-configure-backup.md#buffering-hints).

**Catatan duplikat**

Amazon Data Firehose menggunakan at-least-once semantik untuk pengiriman data. Dalam beberapa keadaan, seperti ketika waktu pengiriman data habis, percobaan ulang pengiriman oleh Amazon Data Firehose mungkin memperkenalkan duplikat jika permintaan pengiriman data asli akhirnya berhasil. Ini berlaku untuk semua jenis tujuan yang didukung Amazon Data Firehose, kecuali untuk tujuan Amazon S3, Apache Iceberg Tables, dan tujuan Snowflake.

**Topics**
+ [Memahami pengiriman di seluruh AWS akun dan wilayah](across.md)
+ [Memahami permintaan pengiriman titik akhir HTTP dan spesifikasi respons](httpdeliveryrequestresponse.md)
+ [Menangani kegagalan pengiriman data](retry.md)
+ [Konfigurasikan format nama objek Amazon S3](s3-object-name.md)
+ [Konfigurasikan rotasi indeks untuk OpenSearch Layanan](es-index-rotation.md)
+ [Jeda dan lanjutkan pengiriman data](pause-restart-stream.md)

# Memahami pengiriman di seluruh AWS akun dan wilayah
<a name="across"></a>

Amazon Data Firehose mendukung pengiriman data ke tujuan titik akhir HTTP di seluruh akun. AWS Aliran Firehose dan titik akhir HTTP yang Anda pilih sebagai tujuan dapat menjadi milik akun yang berbeda. AWS 

Amazon Data Firehose juga mendukung pengiriman data ke tujuan titik akhir HTTP di seluruh wilayah. AWS Anda dapat mengirimkan data dari aliran Firehose di satu AWS wilayah ke titik akhir HTTP di wilayah lain. AWS Anda juga dapat mengirimkan data dari aliran Firehose ke tujuan titik akhir HTTP di luar AWS wilayah, misalnya ke server lokal Anda sendiri dengan menyetel URL titik akhir HTTP ke tujuan yang Anda inginkan. Untuk skenario ini, biaya transfer data tambahan ditambahkan ke biaya pengiriman Anda. Untuk informasi selengkapnya tentang harga transfer data, lihat bagian [Transfer Data](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer) di halaman "Harga Sesuai Permintaan".

# Memahami permintaan pengiriman titik akhir HTTP dan spesifikasi respons
<a name="httpdeliveryrequestresponse"></a>

Agar Amazon Data Firehose berhasil mengirimkan data ke titik akhir HTTP kustom, titik akhir ini harus menerima permintaan dan mengirim tanggapan menggunakan format permintaan dan respons Amazon Data Firehose tertentu. Bagian ini menjelaskan spesifikasi format permintaan HTTP yang dikirim oleh layanan Amazon Data Firehose ke titik akhir HTTP kustom, serta spesifikasi format respons HTTP yang diharapkan oleh layanan Amazon Data Firehose. Titik akhir HTTP memiliki waktu 3 menit untuk menanggapi permintaan sebelum Amazon Data Firehose menghentikan permintaan tersebut. Amazon Data Firehose memperlakukan respons yang tidak sesuai dengan format yang tepat sebagai kegagalan pengiriman.

## Format permintaan
<a name="requestformat"></a>

**Parameter Jalur dan URL**  
Ini dikonfigurasi secara langsung oleh Anda sebagai bagian dari bidang URL tunggal. Amazon Data Firehose mengirimkannya seperti yang dikonfigurasi tanpa modifikasi. Hanya tujuan https yang didukung. Pembatasan URL diterapkan selama konfigurasi aliran pengiriman.  
Saat ini, hanya port 443 yang didukung untuk pengiriman data titik akhir HTTP.

**HTTP Header - -Versi X-Amz-Firehose-Protocol**  
Header ini digunakan untuk menunjukkan versi format permintaan/respons. Saru-satunya versi saat ini adalah 1.0.

**HTTP Header - -Id X-Amz-Firehose-Request**  
Nilai header ini adalah GUID buram yang dapat digunakan untuk tujuan debugging dan deduplikasi. Implementasi titik akhir harus mencatat nilai header ini jika memungkinkan, baik permintaan sukses maupun gagal. ID permintaan tetap sama di antara beberapa upaya permintaan yang sama.

**Header HTTP - Content-Type**  
Nilai header Content-Type selalu `application/json`.

**Header HTTP - Content-Encoding**  
Aliran Firehose dapat dikonfigurasi untuk menggunakan GZIP untuk mengompres tubuh saat mengirim permintaan. Ketika kompresi ini diaktifkan, nilai header Content-Encoding diatur ke gzip, sesuai praktek standar. Jika kompresi tidak diaktifkan, header Content-Encoding tidak ada sama sekali.

**Header HTTP - Content-Length**  
Ini digunakan dengan cara standar.

**HTTP Header - X-Amz-Firehose-Source -Arn:**  
ARN dari aliran Firehose diwakili dalam format string ASCII. ARN mengkodekan wilayah, ID AWS akun, dan nama aliran. Misalnya, `arn:aws:firehose:us-east-1:123456789:deliverystream/testStream`. 

**HTTP Header - -Kunci X-Amz-Firehose-Access**  
Header ini membawa kunci API atau kredensial lainnya. Anda memiliki kemampuan untuk membuat atau memperbarui kunci API (alias token otorisasi) saat membuat atau memperbarui aliran pengiriman Anda. Amazon Data Firehose membatasi ukuran kunci akses ke 4096 byte. Amazon Data Firehose tidak mencoba menafsirkan kunci ini dengan cara apa pun. Kunci yang dikonfigurasi disalin secara verbatim ke nilai header ini. Namun, jika Anda menggunakan Secrets Manager untuk mengkonfigurasi kunci, maka rahasia harus mengikuti format objek JSON tertentu:`{"api_key": "..."}`.   
Isi bisa berubah-ubah dan berpotensi mewakili token JWT atau ACCESS\$1KEY. Jika titik akhir memerlukan kredensial multi-bidang (misalnya, nama pengguna dan kata sandi), nilai semua bidang harus disimpan bersama-sama dalam satu access key dalam format yang dimengerti titik akhir (JSON atau CSV). Bidang ini dapat berupa dikodekan basis-64 jika isi asli bersifat biner. Amazon Data Firehose tidak mengubah and/or encode nilai yang dikonfigurasi dan menggunakan konten apa adanya.

**HTTP Header - -Atribut X-Amz-Firehose-Common**  
Header ini membawa atribut umum (metadata) yang berkaitan dengan seluruh permintaan, and/or ke semua catatan dalam permintaan. Ini dikonfigurasi langsung oleh Anda saat membuat aliran Firehose. Nilai atribut ini dikodekan sebagai objek JSON dengan skema berikut:   

```
"$schema": http://json-schema.org/draft-07/schema#

properties:
  commonAttributes:
    type: object
    minProperties: 0
    maxProperties: 50
    patternProperties:
      "^.{1,256}$":
        type: string
        minLength: 0
        maxLength: 1024
```
Inilah contohnya:  

```
"commonAttributes": {
    "deployment -context": "pre-prod-gamma",
    "device-types": ""
  }
```

**Isi - Ukuran Maks**  
Ukuran isi maksimum dikonfigurasi oleh Anda, dan bisa sampai maksimal 64 MiB, sebelum kompresi.

**Isi - Skema**  
Isi membawa satu dokumen JSON dengan Skema JSON berikut (ditulis dalam YAML):  

```
"$schema": http://json-schema.org/draft-07/schema#

title: FirehoseCustomHttpsEndpointRequest
description: >
  The request body that the Firehose service sends to
  custom HTTPS endpoints.
type: object
properties:
  requestId:
    description: >
      Same as the value in the X-Amz-Firehose-Request-Id header,
      duplicated here for convenience.
    type: string
  timestamp:
    description: >
      The timestamp (milliseconds since epoch) at which the Firehose
      server generated this request.
    type: integer
  records:
    description: >
      The actual records of the Firehose stream, carrying 
      the customer data.
    type: array
    minItems: 1
    maxItems: 10000
    items:
      type: object
      properties:
        data:
          description: >
            The data of this record, in Base64. Note that empty
            records are permitted in Firehose. The maximum allowed
            size of the data, before Base64 encoding, is 1024000
            bytes; the maximum length of this field is therefore
            1365336 chars.
          type: string
          minLength: 0
          maxLength: 1365336

required:
  - requestId
  - records
```
Inilah contohnya:  

```
{
  "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f",
  "timestamp": 1578090901599
  "records": [
    {
      "data": "aGVsbG8="
    },
    {
      "data": "aGVsbG8gd29ybGQ="
    }
  ]
}
```

## Format respons
<a name="responseformat"></a>

**Perilaku Default pada Galat**  
Jika respons gagal memenuhi persyaratan di bawah ini, server Firehose memperlakukannya seolah-olah memiliki kode status 500 tanpa isi.

**Kode Status**  
Kode status HTTP HARUS berada di kisaran 2XX, 4XX, atau 5XX.  
Server Amazon Data Firehose TIDAK mengikuti pengalihan (kode status 3XX). Hanya kode respons 200 yang dianggap sebagai pengiriman catatan yang sukses untuk HTTP/EP. Kode respons 413 (ukuran melebihi) dianggap sebagai kegagalan permanen dan kumpulan catatan tidak dikirim ke bucket kesalahan jika dikonfigurasi. Semua kode respons lainnya dianggap sebagai kesalahan yang bisa dicoba ulang dan dikenakan algoritma mundur coba lagi yang akan dijelaskan kemudian. 

**Header HTTP - Jenis Konten**  
Satu-satunya jenis konten yang dapat diterima adalah aplikasi/json.

**Header HTTP - Content-Encoding**  
Content-Encoding TIDAK HARUS digunakan. Isi HARUS tidak dikompresi.

**Header HTTP - Content-Length**  
Header Content-Length HARUS ada jika respons memiliki isi.

**Isi - Ukuran Maks**  
Isi respons harus berukuran 1 MiB atau kurang.  

```
"$schema": http://json-schema.org/draft-07/schema#

title: FirehoseCustomHttpsEndpointResponse

description: >
  The response body that the Firehose service sends to
  custom HTTPS endpoints.
type: object
properties:
  requestId:
    description: >
      Must match the requestId in the request.
    type: string
  
  timestamp:
    description: >
      The timestamp (milliseconds since epoch) at which the
      server processed this request.
    type: integer
   
  errorMessage:
    description: >
      For failed requests, a message explaining the failure.
      If a request fails after exhausting all retries, the last 
      Instance of the error message is copied to error output
      S3 bucket if configured.
    type: string
    minLength: 0
    maxLength: 8192
required:
  - requestId
  - timestamp
```
Inilah contohnya:  

```
Failure Case (HTTP Response Code 4xx or 5xx)
{
  "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f",
  "timestamp": "1578090903599",
  "errorMessage": "Unable to deliver records due to unknown error."
}
Success case (HTTP Response Code 200)
{
  "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f",
  "timestamp": 1578090903599
}
```

**Penanganan Respons Kesalahan**  
Dalam semua kasus kesalahan, server Amazon Data Firehose mencoba kembali pengiriman kumpulan catatan yang sama menggunakan algoritma back-off eksponensial. Percobaan ulang dibatalkan menggunakan waktu mundur awal (1 detik) dengan faktor jitter (15%) dan setiap percobaan ulang berikutnya dibatalkan menggunakan rumus (initial-backoff-time \$1 (pengganda (2) ^ retry\$1count)) dengan jitter tambahan. Waktu mundur dibatasi oleh interval maksimum 2 menit. Misalnya pada percobaan ulang 'n'-th, waktu mundur adalah = MAX (120, 2^n) \$1 acak (0,85, 1,15).  
Parameter yang ditentukan dalam persamaan sebelumnya dapat berubah sewaktu-waktu. Lihat dokumentasi AWS Firehose untuk mengetahui waktu mundur awal yang tepat, waktu backoff maks, persentase pengganda, dan jitter yang digunakan dalam algoritma mundur eksponensial.  
Dalam setiap percobaan ulang berikutnya, and/or tujuan kunci akses ke mana catatan dikirimkan mungkin berubah berdasarkan konfigurasi aliran Firehose yang diperbarui. Layanan Amazon Data Firehose menggunakan id permintaan yang sama di seluruh percobaan ulang dengan cara yang terbaik. Fitur terakhir ini dapat digunakan untuk tujuan deduplikasi oleh server titik akhir HTTP. Jika permintaan masih belum dikirimkan setelah waktu maksimum yang diizinkan (berdasarkan konfigurasi aliran Firehose), kumpulan rekaman secara opsional dapat dikirim ke bucket kesalahan berdasarkan konfigurasi aliran.

## Contoh
<a name="examples"></a>

 Contoh permintaan CWLog bersumber.

```
{
  "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f",
  "timestamp": 1578090901599,
  "records": [
   {
    "data": {
      "messageType": "DATA_MESSAGE",
      "owner": "123456789012",
      "logGroup": "log_group_name",
      "logStream": "log_stream_name",
      "subscriptionFilters": [
        "subscription_filter_name"
      ],
      "logEvents": [
        {
          "id": "0123456789012345678901234567890123456789012345",
          "timestamp": 1510109208016,
          "message": "log message 1"
        },
        {
          "id": "0123456789012345678901234567890123456789012345",
          "timestamp": 1510109208017,
          "message": "log message 2"
        }
      ]
    }
   }
  ]
}
```

# Menangani kegagalan pengiriman data
<a name="retry"></a>

Setiap tujuan Amazon Data Firehose memiliki penanganan kegagalan pengiriman datanya sendiri. 

Saat menyiapkan aliran Firehose, untuk banyak tujuan seperti, Splunk OpenSearch, dan titik akhir HTTP, Anda juga menyiapkan bucket S3 tempat data yang gagal dikirimkan dapat dicadangkan. Untuk informasi selengkapnya tentang cara Firehose mencadangkan data jika pengiriman gagal, lihat bagian tujuan yang relevan di halaman ini. Untuk informasi selengkapnya tentang cara memberikan akses ke bucket S3 tempat data yang gagal dikirimkan dapat dicadangkan, lihat Memberikan [Akses Firehose ke Tujuan Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3). Ketika Firehose (a) gagal mengirimkan data ke tujuan streaming, dan (b) gagal menulis data ke bucket S3 cadangan untuk pengiriman yang gagal, Firehose secara efektif menghentikan pengiriman streaming hingga saat data dapat dikirim ke tujuan atau ditulis ke lokasi S3 cadangan. 

## Amazon S3
<a name="dd-retry-s3"></a>

Pengiriman data ke bucket S3 Anda mungkin gagal karena berbagai alasan. Misalnya, bucket mungkin tidak ada lagi, peran IAM yang diasumsikan Amazon Data Firehose mungkin tidak memiliki akses ke bucket, jaringan gagal, atau kejadian serupa. Dalam kondisi ini, Amazon Data Firehose terus mencoba lagi hingga 24 jam hingga pengiriman berhasil. Waktu penyimpanan data maksimum Amazon Data Firehose adalah 24 jam. Jika pengiriman data gagal selama lebih dari 24 jam, data Anda akan hilang.

Pengiriman data ke bucket S3 Anda dapat gagal karena berbagai alasan, seperti:
+ Ember sudah tidak ada lagi.
+ Peran IAM yang diasumsikan oleh Amazon Data Firehose tidak memiliki akses ke bucket.
+ Masalah jaringan.
+ Kesalahan S3, seperti HTTP 500s atau kegagalan API lainnya.

Dalam kasus ini, Amazon Data Firehose akan mencoba lagi pengiriman:
+ **DirectPut sumber:** Percobaan ulang berlanjut hingga 24 jam.
+ **Kinesis Data Streams atau sumber MSK Amazon**: Percobaan ulang berlanjut tanpa batas waktu, hingga kebijakan retensi yang ditentukan pada aliran.

Amazon Data Firehose mengirimkan catatan yang gagal ke bucket kesalahan S3 hanya jika pemrosesan Lambda atau konversi parket gagal. Skenario kegagalan lainnya akan menghasilkan upaya coba lagi terus menerus ke S3 hingga periode retensi tercapai. Ketika Firehose berhasil mengirimkan catatan ke S3, Firehose membuat file objek S3, dan dalam kasus kegagalan rekaman sebagian, secara otomatis mencoba ulang pengiriman dan memperbarui file objek S3 yang sama dengan catatan yang berhasil diproses.

## Amazon Redshift
<a name="dd-retry-rs"></a>

Untuk tujuan Amazon Redshift, Anda dapat menentukan durasi coba lagi (0—7200 detik) saat membuat aliran Firehose.

Pengiriman data ke klaster yang disediakan Amazon Redshift atau grup kerja Amazon Redshift Serverless mungkin gagal karena beberapa alasan. Misalnya, Anda mungkin memiliki konfigurasi klaster yang salah dari aliran Firehose, klaster atau grup kerja yang sedang dalam pemeliharaan, atau kegagalan jaringan. Dalam kondisi ini, Amazon Data Firehose mencoba ulang untuk durasi waktu yang ditentukan dan melewatkan kumpulan objek Amazon S3 tertentu. Informasi objek yang dilewati dikirim ke bucket S3 Anda sebagai file manifes di folder `errors/`, yang dapat Anda gunakan untuk backfill manual. Untuk informasi tentang cara MENYALIN data secara manual dengan file manifes, lihat [Menggunakan Manifes untuk Menentukan File Data](https://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html). 

## OpenSearch Layanan Amazon dan Tanpa OpenSearch Server
<a name="dd-retry-osss"></a>

Untuk tujuan OpenSearch Layanan dan OpenSearch Tanpa Server, Anda dapat menentukan durasi coba lagi (0—7200 detik) selama pembuatan aliran Firehose.

Pengiriman data ke kluster OpenSearch Layanan atau pengumpulan OpenSearch Tanpa Server Anda mungkin gagal karena beberapa alasan. Misalnya, Anda mungkin memiliki klaster OpenSearch Layanan atau konfigurasi koleksi OpenSearch Tanpa Server yang salah dari aliran Firehose, kluster OpenSearch Layanan, atau koleksi OpenSearch Tanpa Server dalam pemeliharaan, kegagalan jaringan, atau peristiwa serupa. Dalam kondisi ini, Amazon Data Firehose mencoba ulang untuk durasi waktu yang ditentukan dan kemudian melewatkan permintaan indeks tertentu. Dokumen yang dilewati dikirim ke bucket S3 Anda di folder `AmazonOpenSearchService_failed/`, yang dapat Anda gunakan untuk backfill manual. 

Untuk OpenSearch Layanan, setiap dokumen memiliki format JSON berikut:

```
{
    "attemptsMade": "(number of index requests attempted)",
    "arrivalTimestamp": "(the time when the document was received by Firehose)",
    "errorCode": "(http error code returned by OpenSearch Service)",
    "errorMessage": "(error message returned by OpenSearch Service)",
    "attemptEndingTimestamp": "(the time when Firehose stopped attempting index request)",
    "esDocumentId": "(intended OpenSearch Service document ID)",
    "esIndexName": "(intended OpenSearch Service index name)",
    "esTypeName": "(intended OpenSearch Service type name)",
    "rawData": "(base64-encoded document data)"
}
```

Untuk OpenSearch Tanpa Server, setiap dokumen memiliki format JSON berikut:

```
{
    "attemptsMade": "(number of index requests attempted)",
    "arrivalTimestamp": "(the time when the document was received by Firehose)",
    "errorCode": "(http error code returned by OpenSearch Serverless)",
    "errorMessage": "(error message returned by OpenSearch Serverless)",
    "attemptEndingTimestamp": "(the time when Firehose stopped attempting index request)",
    "osDocumentId": "(intended OpenSearch Serverless document ID)",
    "osIndexName": "(intended OpenSearch Serverless index name)",
    "rawData": "(base64-encoded document data)"
}
```

## Splunk
<a name="dd-retry-splunk"></a>

Saat Amazon Data Firehose mengirim data ke Splunk, ia menunggu pengakuan dari Splunk. Jika terjadi kesalahan, atau pengakuan tidak tiba dalam periode batas waktu pengakuan, Amazon Data Firehose memulai penghitung durasi coba lagi. Kinesis Data Firehose terus mencoba kembali sampai durasi coba lagi berakhir. Setelah itu, Amazon Data Firehose menganggapnya sebagai kegagalan pengiriman data dan mencadangkan data ke bucket Amazon S3 Anda. 

Setiap kali Amazon Data Firehose mengirimkan data ke Splunk, apakah itu upaya awal atau percobaan ulang, itu memulai ulang penghitung batas waktu pengakuan. Kinesis Data Firehose kemudian menunggu pengakuan tiba dari Splunk. Bahkan jika durasi percobaan ulang berakhir, Amazon Data Firehose masih menunggu pengakuan sampai menerimanya atau batas waktu pengakuan tercapai. Jika waktu pengakuan habis, Amazon Data Firehose memeriksa untuk menentukan apakah ada waktu tersisa di penghitung coba lagi. Jika ada waktu yang tersisa, Kinesis Data Firehose akan mencoba lagi dan mengulangi logika sampai menerima pengakuan atau sampai waktu coba lagi telah berakhir.

Kegagalan untuk menerima pengakuan bukan satu-satunya jenis kesalahan pengiriman data yang dapat terjadi. Untuk informasi tentang jenis kesalahan pengiriman data lainnya, lihat [Kesalahan Pengiriman Data Splunk](https://docs.aws.amazon.com/firehose/latest/dev/monitoring-with-cloudwatch-logs.html#monitoring-splunk-errors). Kesalahan pengiriman data memicu logika coba lagi jika durasi coba lagi lebih besar dari 0.

Berikut ini adalah contoh catatan kesalahan.

```
{
  "attemptsMade": 0,
  "arrivalTimestamp": 1506035354675,
  "errorCode": "Splunk.AckTimeout",
  "errorMessage": "Did not receive an acknowledgement from HEC before the HEC acknowledgement timeout expired. Despite the acknowledgement timeout, it's possible the data was indexed successfully in Splunk. Amazon Data Firehose backs up in Amazon S3 data for which the acknowledgement timeout expired.",
  "attemptEndingTimestamp": 13626284715507,
  "rawData": "MiAyNTE2MjAyNzIyMDkgZW5pLTA1ZjMyMmQ1IDIxOC45Mi4xODguMjE0IDE3Mi4xNi4xLjE2NyAyNTIzMyAxNDMzIDYgMSA0MCAxNTA2MDM0NzM0IDE1MDYwMzQ3OTQgUkVKRUNUIE9LCg==",
  "EventId": "49577193928114147339600778471082492393164139877200035842.0"
}
```

## Tujuan titik akhir HTTP
<a name="dd-retry-http"></a>

Saat Amazon Data Firehose mengirimkan data ke tujuan titik akhir HTTP, Amazon Data Firehose menunggu respons dari tujuan ini. Jika terjadi kesalahan, atau respons tidak tiba dalam periode batas waktu respons, Amazon Data Firehose memulai penghitung durasi coba lagi. Kinesis Data Firehose terus mencoba kembali sampai durasi coba lagi berakhir. Setelah itu, Amazon Data Firehose menganggapnya sebagai kegagalan pengiriman data dan mencadangkan data ke bucket Amazon S3 Anda. 

Setiap kali Amazon Data Firehose mengirimkan data ke tujuan titik akhir HTTP, apakah itu upaya awal atau percobaan ulang, itu memulai ulang penghitung batas waktu respons. Kinesis Data Firehose kemudian menunggu respons dari tujuan titik akhir HTTP. Bahkan jika durasi percobaan ulang berakhir, Amazon Data Firehose masih menunggu respons hingga menerimanya atau batas waktu respons tercapai. Jika waktu respons habis, Amazon Data Firehose memeriksa untuk menentukan apakah ada waktu tersisa di penghitung coba lagi. Jika ada waktu yang tersisa, Kinesis Data Firehose akan mencoba lagi dan mengulangi logika sampai menerima respons atau sampai waktu coba lagi telah berakhir.

Kegagalan untuk menerima respons bukan satu-satunya jenis kesalahan pengiriman data yang dapat terjadi. Untuk informasi tentang jenis kesalahan pengiriman data lainnya, lihat [Kesalahan Pengiriman Data Titik Akhir HTTP](https://docs.aws.amazon.com/firehose/latest/dev/monitoring-with-cloudwatch-logs.html#monitoring-http-errors).

Berikut ini adalah contoh catatan kesalahan.

```
{
	"attemptsMade":5,
	"arrivalTimestamp":1594265943615,
	"errorCode":"HttpEndpoint.DestinationException",
	"errorMessage":"Received the following response from the endpoint destination. {"requestId": "109777ac-8f9b-4082-8e8d-b4f12b5fc17b", "timestamp": 1594266081268, "errorMessage": "Unauthorized"}", 
	"attemptEndingTimestamp":1594266081318,
	"rawData":"c2FtcGxlIHJhdyBkYXRh",
	"subsequenceNumber":0,
	"dataId":"49607357361271740811418664280693044274821622880012337186.0"
}
```

## Kepingan salju
<a name="dd-retry-snowflake"></a>

Untuk tujuan Snowflake, saat membuat aliran Firehose, Anda dapat menentukan durasi coba ulang opsional (0-7200 detik). Nilai default untuk durasi coba lagi adalah 60 detik. 

Pengiriman data ke tabel Snowflake Anda mungkin gagal karena beberapa alasan seperti konfigurasi tujuan Snowflake yang salah, pemadaman kepingan salju, kegagalan jaringan, dll. Kebijakan coba lagi tidak berlaku untuk kesalahan yang tidak dapat diambil kembali. Misalnya, jika Snowflake menolak muatan JSON Anda karena memiliki kolom tambahan yang hilang di tabel, Firehose tidak mencoba mengirimkannya lagi. Sebagai gantinya, ini membuat cadangan untuk semua kegagalan penyisipan karena masalah payload JSON ke ember kesalahan S3 Anda. 

Demikian pula, jika pengiriman gagal karena peran, tabel, atau database yang salah, Firehose tidak mencoba lagi dan menulis data ke bucket S3 Anda. Durasi coba lagi hanya berlaku untuk kegagalan karena masalah layanan Snowflake, gangguan jaringan sementara, dll. Dalam kondisi ini, Firehose mencoba ulang untuk durasi waktu yang ditentukan sebelum mengirimkannya ke S3. Catatan yang gagal dikirimkan dalam folder snowflake-failed/, yang dapat Anda gunakan untuk pengisian ulang manual. 

Berikut ini adalah contoh JSON untuk setiap record yang Anda kirimkan ke S3.

```
{
    "attemptsMade": 3,
    "arrivalTimestamp": 1594265943615,
    "errorCode": "Snowflake.InvalidColumns",
    "errorMessage": "Snowpipe Streaming does not support columns of type AUTOINCREMENT, IDENTITY, GEO, or columns with a default value or collation",
    "attemptEndingTimestamp": 1712937865543,
    "rawData": "c2FtcGxlIHJhdyBkYXRh"
}
```

# Konfigurasikan format nama objek Amazon S3
<a name="s3-object-name"></a>

Ketika Firehose mengirimkan data ke Amazon S3, nama kunci objek S3 mengikuti format** <evaluated prefix><suffix>, di mana akhiran memiliki format *- - - - - - - -* <Firehose stream name><Firehose stream version><year><month><day><hour><minute><second><uuid><file extension><Firehose stream version>dimulai dengan 1 dan meningkat 1 untuk setiap perubahan konfigurasi aliran Firehose. Anda dapat mengubah konfigurasi aliran Firehose (misalnya, nama bucket S3, petunjuk buffering, kompresi, dan enkripsi). Anda dapat melakukannya dengan menggunakan Firehose console atau operasi [UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)API. 

Untuk**<evaluated prefix>, Firehose menambahkan awalan waktu default dalam format. `YYYY/MM/dd/HH` Awalan ini menciptakan hierarki logis di bucket, di mana setiap garis miring maju (/) menciptakan level dalam hierarki. Anda dapat memodifikasi struktur ini dengan menentukan awalan kustom yang menyertakan ekspresi yang dievaluasi saat runtime. Untuk informasi tentang cara menentukan awalan kustom, lihat Awalan [Kustom untuk Objek Layanan Penyimpanan Sederhana Amazon](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).

Secara default, zona waktu yang digunakan untuk awalan waktu dan akhiran ada di UTC, tetapi Anda dapat mengubahnya ke zona waktu yang Anda inginkan. Misalnya, untuk menggunakan Waktu Standar Jepang alih-alih UTC, Anda dapat mengonfigurasi zona waktu Asia/Tokyo ke dalam atau [dalam Konsol Manajemen AWS pengaturan parameter API CustomTimeZone ()](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html). Daftar berikut berisi zona waktu yang didukung Firehose untuk konfigurasi awalan S3.

## Zona waktu yang didukung
<a name="collapsible-section-1"></a>

Berikut ini adalah daftar zona waktu yang Firehose mendukung untuk konfigurasi awalan S3.

------
#### [ Africa ]

```
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmera
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu
Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott
Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli
Africa/Tunis
Africa/Windhoek
```

------
#### [ America ]

```
America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Aruba
America/Asuncion
America/Barbados
America/Belize
America/Bogota
America/Buenos_Aires
America/Caracas
America/Cayenne
America/Cayman
America/Chicago
America/Costa_Rica
America/Cuiaba
America/Curacao
America/Dawson_Creek
America/Denver
America/Dominica
America/Edmonton
America/El_Salvador
America/Fortaleza
America/Godthab
America/Grand_Turk
America/Grenada
America/Guadeloupe
America/Guatemala
America/Guayaquil
America/Guyana
America/Halifax
America/Havana
America/Indianapolis
America/Jamaica
America/La_Paz
America/Lima
America/Los_Angeles
America/Managua
America/Manaus
America/Martinique
America/Mazatlan
America/Mexico_City
America/Miquelon
America/Montevideo
America/Montreal
America/Montserrat
America/Nassau
America/New_York
America/Noronha
America/Panama
America/Paramaribo
America/Phoenix
America/Port_of_Spain
America/Port-au-Prince
America/Porto_Acre
America/Puerto_Rico
America/Regina
America/Rio_Branco
America/Santiago
America/Santo_Domingo
America/Sao_Paulo
America/Scoresbysund
America/St_Johns
America/St_Kitts
America/St_Lucia
America/St_Thomas
America/St_Vincent
America/Tegucigalpa
America/Thule
America/Tijuana
America/Tortola
America/Vancouver
America/Winnipeg
```

------
#### [ Antarctica ]

```
Antarctica/Casey
Antarctica/DumontDUrville
Antarctica/Mawson
Antarctica/McMurdo
Antarctica/Palmer
```

------
#### [ Asia ]

```
Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau
Asia/Aqtobe
Asia/Ashgabat
Asia/Ashkhabad
Asia/Baghdad
Asia/Bahrain
Asia/Baku
Asia/Bangkok
Asia/Beirut
Asia/Bishkek
Asia/Brunei
Asia/Calcutta
Asia/Colombo
Asia/Dacca
Asia/Damascus
Asia/Dhaka
Asia/Dubai
Asia/Dushanbe
Asia/Hong_Kong
Asia/Irkutsk
Asia/Jakarta
Asia/Jayapura
Asia/Jerusalem
Asia/Kabul
Asia/Kamchatka
Asia/Karachi
Asia/Katmandu
Asia/Krasnoyarsk
Asia/Kuala_Lumpur
Asia/Kuwait
Asia/Macao
Asia/Magadan
Asia/Manila
Asia/Muscat
Asia/Nicosia
Asia/Novosibirsk
Asia/Phnom_Penh
Asia/Pyongyang
Asia/Qatar
Asia/Rangoon
Asia/Riyadh
Asia/Saigon
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Thimbu
Asia/Thimphu
Asia/Tokyo
Asia/Ujung_Pandang
Asia/Ulaanbaatar
Asia/Ulan_Bator
Asia/Vientiane
Asia/Vladivostok
Asia/Yakutsk
Asia/Yekaterinburg
Asia/Yerevan
```

------
#### [ Atlantic ]

```
Atlantic/Azores
Atlantic/Bermuda
Atlantic/Canary
Atlantic/Cape_Verde
Atlantic/Faeroe
Atlantic/Jan_Mayen
Atlantic/Reykjavik
Atlantic/South_Georgia
Atlantic/St_Helena
Atlantic/Stanley
```

------
#### [ Australia ]

```
Australia/Adelaide
Australia/Brisbane
Australia/Broken_Hill
Australia/Darwin
Australia/Hobart
Australia/Lord_Howe
Australia/Perth
Australia/Sydney
```

------
#### [ Europe ]

```
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Brussels
Europe/Bucharest
Europe/Budapest
Europe/Chisinau
Europe/Copenhagen
Europe/Dublin
Europe/Gibraltar
Europe/Helsinki
Europe/Istanbul
Europe/Kaliningrad
Europe/Kiev
Europe/Lisbon
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Minsk
Europe/Monaco
Europe/Moscow
Europe/Oslo
Europe/Paris
Europe/Prague
Europe/Riga
Europe/Rome
Europe/Samara
Europe/Simferopol
Europe/Sofia
Europe/Stockholm
Europe/Tallinn
Europe/Tirane
Europe/Vaduz
Europe/Vienna
Europe/Vilnius
Europe/Warsaw
Europe/Zurich
```

------
#### [ Indian ]

```
Indian/Antananarivo
Indian/Chagos
Indian/Christmas
Indian/Cocos
Indian/Comoro
Indian/Kerguelen
Indian/Mahe
Indian/Maldives
Indian/Mauritius
Indian/Mayotte
Indian/Reunion
```

------
#### [ Pacific ]

```
Pacific/Apia
Pacific/Auckland
Pacific/Chatham
Pacific/Easter
Pacific/Efate
Pacific/Enderbury
Pacific/Fakaofo
Pacific/Fiji
Pacific/Funafuti
Pacific/Galapagos
Pacific/Gambier
Pacific/Guadalcanal
Pacific/Guam
Pacific/Honolulu
Pacific/Kiritimati
Pacific/Kosrae
Pacific/Majuro
Pacific/Marquesas
Pacific/Nauru
Pacific/Niue
Pacific/Norfolk
Pacific/Noumea
Pacific/Pago_Pago
Pacific/Palau
Pacific/Pitcairn
Pacific/Ponape
Pacific/Port_Moresby
Pacific/Rarotonga
Pacific/Saipan
Pacific/Tahiti
Pacific/Tarawa
Pacific/Tongatapu
Pacific/Truk
Pacific/Wake
Pacific/Wallis
```

------

<file extension>Anda tidak dapat mengubah bidang akhiran kecuali**. Saat Anda mengaktifkan konversi atau kompresi format data, Firehose akan menambahkan ekstensi file berdasarkan konfigurasi. Tabel berikut menjelaskan ekstensi file default yang ditambahkan oleh Firehose: 


| Konfigurasi | Ekstensi file | 
| --- | --- | 
| Konversi Format Data: Parket | .parket | 
| Konversi Format Data: ORC | .orc | 
| Kompresi: Gzip | .gz | 
| Kompresi: Zip | .zip | 
| Kompresi: Snappy | .tajam | 
| Kompresi: Hadoop-Snappy | .hsnappy | 

Anda juga dapat menentukan ekstensi file yang Anda inginkan di konsol Firehose atau API. Ekstensi file harus dimulai dengan titik (.) dan dapat berisi karakter yang diizinkan: 0-9a-z\$1 -\$1.\$1' (). Ekstensi file tidak boleh melebihi 128 karakter.

**catatan**  
Saat Anda menentukan ekstensi file, itu akan mengganti ekstensi file default yang ditambahkan Firehose [saat konversi atau kompresi format data](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) diaktifkan.

# Memahami awalan khusus untuk objek Amazon S3
<a name="s3-prefixes"></a>

<evaluated prefix><suffix>Objek yang dikirim ke Amazon S3 mengikuti [format nama](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-namekey). Anda dapat menentukan awalan kustom yang menyertakan ekspresi yang dievaluasi saat runtime. Awalan kustom yang Anda tentukan akan mengganti awalan default. `yyyy/MM/dd/HH`

Anda dapat menggunakan ekspresi formulir berikut dalam awalan kustom Anda:`!{namespace:value}`, di mana `namespace` bisa menjadi salah satu dari yang berikut, seperti yang dijelaskan di bagian berikut.
+  `firehose` 
+ `timestamp`
+ `partitionKeyFromQuery`
+ `partitionKeyFromLambda`

Jika prefiks berakhir dengan garis miring (/), itu akan muncul sebagai folder dalam bucket Amazon S3. Untuk informasi selengkapnya, lihat [Format Nama Objek Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name) di Panduan *Data FirehoseDeveloper Amazon*.

## `timestamp`namespace
<a name="timestamp-namespace"></a>

[Nilai yang valid untuk namespace ini adalah string yang merupakan string Java yang valid. DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) Sebagai contoh, pada tahun 2018, ekspresi `!{timestamp:yyyy}` memberi nilai `2018`. 

Saat mengevaluasi stempel waktu, Firehose menggunakan perkiraan stempel waktu kedatangan dari catatan tertua yang terdapat dalam objek Amazon S3 yang sedang ditulis. 

Secara default, stempel waktu ada di UTC. Tapi, Anda dapat menentukan zona waktu yang Anda inginkan. Misalnya, Anda dapat mengonfigurasi zona waktu ke Asia/Tokyo dalam Konsol Manajemen AWS atau dalam pengaturan parameter API ([CustomTimeZone](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html)) jika Anda ingin menggunakan Waktu Standar Jepang, bukan UTC. Untuk melihat daftar zona waktu yang didukung, lihat Format [Nama Objek Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name).

Jika Anda menggunakan namespace `timestamp` lebih dari sekali dalam ekspresi prefiks yang sama, setiap instans akan memberi nilai waktu yang sama.

## `firehose`namespace
<a name="firehose-namespace"></a>

Ada dua nilai yang dapat Anda gunakan dengan namespace ini: `error-output-type` dan `random-string`. Tabel berikut menjelaskan cara menggunakannya.


**Nilai namespace `firehose`**  

| Konversi | Deskripsi | Contoh input | Contoh Output | Catatan | 
| --- | --- | --- | --- | --- | 
| error-output-type | Mengevaluasi ke salah satu string berikut, tergantung pada konfigurasi aliran Firehose Anda, dan alasan kegagalan: \$1processing-failed, AmazonOpenSearchService -failed, splunk-failed,,\$1. format-conversion-failed http-endpoint-failedJika Anda menggunakannya lebih dari sekali dalam ekspresi yang sama, setiap instans akan memberi nilai string kesalahan yang sama. | myPrefix/result=\$1\$1firehose:error-output-type\$1/\$1\$1timestamp:yyyy/MM/dd\$1 | myPrefix/result=processing-failed/2018/08/03 |  error-output-typeNilai hanya dapat digunakan di ErrorOutputPrefix lapangan. | 
| random-string |  Memberi nilai string acak berisi 11 karakter. Jika Anda menggunakannya lebih dari sekali dalam ekspresi yang sama, setiap instans akan memberi nilai string acak baru.  | myPrefix/\$1\$1firehose:random-string\$1/ | myPrefix/046b6c7f-0b/ | Anda dapat menggunakannya dengan kedua jenis prefiks tersebut.Anda dapat menempatkannya di awal string format untuk mendapatkan prefiks acak, yang kadang-kadang diperlukan untuk mencapai throughput yang sangat tinggi dengan Amazon S3. | 

## `partitionKeyFromLambda`dan ruang `partitionKeyFromQuery` nama
<a name="dynamic-partitioning-namespaces"></a>

Untuk [partisi dinamis](dynamic-partitioning.md), Anda harus menggunakan format ekspresi berikut di awalan bucket S3:`!{namespace:value}`, di mana namespace dapat berupa atau, atau keduanya. `partitionKeyFromQuery` `partitionKeyFromLambda` Jika Anda menggunakan penguraian inline untuk membuat kunci partisi untuk data sumber Anda, Anda harus menentukan nilai awalan bucket S3 yang terdiri dari ekspresi yang ditentukan dalam format berikut:. `"partitionKeyFromQuery:keyID"` Jika Anda menggunakan fungsi AWS Lambda untuk membuat kunci partisi untuk data sumber Anda, Anda harus menentukan nilai awalan bucket S3 yang terdiri dari ekspresi yang ditentukan dalam format berikut:. `"partitionKeyFromLambda:keyID"` Untuk informasi selengkapnya, lihat “Pilih Amazon S3 untuk Tujuan Anda” di [Membuat aliran Amazon Firehose](basic-create.md#basic-create.title).

## Aturan semantik
<a name="prefix-rules"></a>

Aturan berikut berlaku untuk ekspresi `Prefix` dan `ErrorOutputPrefix`.
+ Untuk namespace `timestamp`, setiap karakter yang tidak diapit tanda kutip tunggal akan diberi nilai. Dengan kata lain, string yang tidak menggunakan tanda kutip tunggal di bidang nilai akan ditafsirkan secara harfiah.
+ Jika Anda menentukan awalan yang tidak berisi ekspresi namespace stempel waktu, Firehose menambahkan ekspresi ke nilai di `!{timestamp:yyyy/MM/dd/HH/}` bidang. `Prefix`
+ Urutan `!{` hanya dapat muncul dalam ekspresi `!{namespace:value}`.
+ `ErrorOutputPrefix` boleh null hanya jika `Prefix` tidak mengandung ekspresi apa pun. Dalam kasus ini, `Prefix` memberi nilai `<specified-prefix>yyyy/MM/DDD/HH/` dan `ErrorOutputPrefix` memberi nilai `<specified-prefix><error-output-type>yyyy/MM/DDD/HH/`. `DDD` mewakili hari ke berapa dalam tahun itu.
+ Jika Anda menentukan ekspresi untuk `ErrorOutputPrefix`, Anda harus menyertakan setidaknya satu instans dari `!{firehose:error-output-type}`.
+ `Prefix` tidak boleh berisi `!{firehose:error-output-type}`.
+ Baik `Prefix` maupun `ErrorOutputPrefix` boleh berisi lebih dari 512 karakter setelah diberi nilai.
+ Jika tujuannya adalah Amazon Redshift, `Prefix` tidak boleh berisi ekspresi dan `ErrorOutputPrefix` harus null.
+ Jika tujuannya adalah Amazon OpenSearch Service atau Splunk, dan tidak `ErrorOutputPrefix` ditentukan, Firehose menggunakan bidang untuk `Prefix` catatan gagal. 
+ Ketika tujuannya adalah Amazon S3, `Prefix` dan `ErrorOutputPrefix` dalam konfigurasi tujuan Amazon S3 secara berurutan digunakan untuk catatan yang berhasil dan catatan yang gagal. Jika Anda menggunakan AWS CLI atau API, Anda dapat menggunakan `ExtendedS3DestinationConfiguration` untuk menentukan konfigurasi *pencadangan* Amazon S3 dengan `Prefix` dan `ErrorOutputPrefix`-nya sendiri.
+ Saat Anda menggunakan Konsol Manajemen AWS dan mengatur tujuan ke Amazon S3, Firehose masing-masing menggunakan `Prefix` dan `ErrorOutputPrefix` dalam konfigurasi tujuan untuk catatan yang berhasil dan catatan gagal. Jika Anda menentukan awalan menggunakan ekspresi, Anda harus menentukan awalan kesalahan termasuk. `!{firehose:error-output-type}`
+ Saat Anda menggunakan `ExtendedS3DestinationConfiguration` AWS CLI, API, atau CloudFormation, jika Anda menentukan`S3BackupConfiguration`, Firehose tidak menyediakan default. `ErrorOutputPrefix`
+ Anda tidak dapat menggunakan `partitionKeyFromLambda` dan `partitionKeyFromQuery` ruang nama saat membuat ErrorOutputPrefix ekspresi.

## Contoh prefiks
<a name="s3-prefix-examples"></a>


**Contoh `Prefix` dan `ErrorOutputPrefix`**  

| Input | Prefiks yang diberi nilai (pukul 10:30 UTC pada 27 Agt 2018) | 
| --- | --- | 
|  `Prefix`: Tidak ditentukan `ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/`  |  `Prefix`: `2018/08/27/10` `ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/`  | 
|  `Prefix`: `!{timestamp:yyyy/MM/dd}` `ErrorOutputPrefix`: Tidak ditentukan  | Input tidak valid: ErrorOutputPrefix tidak boleh null ketika Prefiks berisi ekspresi | 
|  `Prefix`: `myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}` `ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}`  |  `Prefix`: `myFirehose/DeliveredYear=2018/anyMonth/rand=5abf82daaa5` `ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/2018/anyMonth/10`  | 
| `Prefix`: `myPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/` `ErrorOutputPrefix`: `myErrorPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}`  | `Prefix`: `myPrefix/year=2018/month=07/day=06/hour=23/` `ErrorOutputPrefix`: `myErrorPrefix/year=2018/month=07/day=06/hour=23/processing-failed` | 
|  `Prefix`: `myFirehosePrefix/` `ErrorOutputPrefix`: Tidak ditentukan  |  `Prefix`: `myFirehosePrefix/2018/08/27/` `ErrorOutputPrefix`: `myFirehosePrefix/processing-failed/2018/08/27/`  | 

# Konfigurasikan rotasi indeks untuk OpenSearch Layanan
<a name="es-index-rotation"></a>

Untuk tujuan OpenSearch Layanan, Anda dapat menentukan opsi rotasi indeks berbasis waktu dari salah satu dari lima opsi berikut:**NoRotation**,,**OneHour**, **OneDay****OneWeek**, atau**OneMonth**.

Bergantung pada opsi rotasi yang Anda pilih, Amazon Data Firehose menambahkan sebagian stempel waktu kedatangan UTC ke nama indeks yang Anda tentukan. Kinesis Data Firehose memutar stempel waktu yang ditambahkan dengan sesuai. Contoh berikut menunjukkan nama indeks yang dihasilkan di OpenSearch Layanan untuk setiap opsi rotasi indeks, di mana nama indeks yang ditentukan **myindex** dan stempel waktu kedatangan. `2016-02-25T13:00:00Z` 


| RotationPeriod | IndexName | 
| --- | --- | 
| NoRotation | myindex | 
| OneHour | myindex-2016-02-25-13 | 
| OneDay | myindex-2016-02-25 | 
| OneWeek | myindex-2016-w08 | 
| OneMonth | myindex-2016-02 | 

**catatan**  
Dengan opsi `OneWeek`, Data Firehose secara otomatis membuat indeks menggunakan format <YEAR>-w<WEEK NUMBER> (sebagai contoh, `2020-w33`), dengan jumlah minggu dihitung menggunakan waktu UTC dan sesuai dengan konvensi AS berikut:  
Seminggu dimulai pada hari Minggu
Minggu pertama tahun ini adalah minggu pertama yang berisi hari Sabtu di tahun ini

# Jeda dan lanjutkan pengiriman data
<a name="pause-restart-stream"></a>

Setelah Anda menyiapkan aliran Firehose, data yang tersedia di sumber aliran akan terus dikirim ke tujuan. Jika Anda mengalami situasi di mana tujuan streaming sementara tidak tersedia (misalnya, selama operasi pemeliharaan yang direncanakan), Anda mungkin ingin menghentikan sementara pengiriman data, dan melanjutkan ketika tujuan tersedia lagi. 

**penting**  
Saat Anda menggunakan pendekatan yang dijelaskan di bawah ini untuk menjeda dan melanjutkan aliran, setelah melanjutkan streaming, Anda akan melihat bahwa beberapa catatan dikirim ke keranjang kesalahan di Amazon S3 sementara sisa aliran terus dikirim ke tujuan. Ini adalah batasan pendekatan yang diketahui, dan itu terjadi karena sejumlah kecil catatan yang sebelumnya tidak dapat dikirim ke tujuan setelah beberapa percobaan ulang dilacak sebagai gagal.

## Jeda aliran Firehose
<a name="pausing-stream"></a>

Untuk menjeda pengiriman streaming di Firehose, pertama-tama hapus izin Firehose untuk menulis ke lokasi cadangan S3 untuk pengiriman yang gagal. Misalnya, jika Anda ingin menjeda aliran Firehose dengan OpenSearch tujuan, Anda dapat melakukannya dengan memperbarui izin. Untuk informasi selengkapnya, lihat [Memberikan Akses Firehose ke Tujuan OpenSearch Layanan Publik](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es). 

Hapus `"Effect": "Allow"` izin untuk tindakan`s3:PutObject`, dan secara eksplisit tambahkan pernyataan yang menerapkan `Effect": "Deny"` izin pada tindakan `s3:PutObject` untuk bucket S3 yang digunakan untuk mencadangkan pengiriman yang gagal. Selanjutnya, matikan tujuan streaming (misalnya, mematikan OpenSearch domain tujuan), atau hapus izin untuk Firehose untuk menulis ke tujuan. Untuk memperbarui izin untuk tujuan lain, periksa bagian tujuan Anda di [Mengontrol Akses dengan Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html). Setelah Anda menyelesaikan dua tindakan ini, Firehose akan berhenti mengirimkan aliran, dan Anda dapat memantau ini menggunakan [CloudWatch metrik](https://docs.aws.amazon.com/firehose/latest/dev/cloudwatch-metrics.html) untuk Firehose. 

**penting**  
Saat Anda menjeda pengiriman streaming di Firehose, Anda perlu memastikan bahwa sumber aliran (misalnya, di Kinesis Data Streams atau di Layanan Terkelola untuk Kafka) dikonfigurasi untuk menyimpan data hingga pengiriman aliran dilanjutkan dan data dikirim ke tujuan. Jika sumbernya DirectPut, Firehose akan menyimpan data selama 24 jam. Kehilangan data dapat terjadi jika Anda tidak melanjutkan aliran dan mengirimkan data sebelum berakhirnya periode penyimpanan data.

## Lanjutkan aliran Firehose
<a name="resuming-stream"></a>

Untuk melanjutkan pengiriman, pertama-tama kembalikan perubahan yang dilakukan sebelumnya ke tujuan streaming dengan menyalakan tujuan dan memastikan bahwa Firehose memiliki izin untuk mengirimkan aliran ke tujuan. Selanjutnya, kembalikan perubahan yang dibuat sebelumnya ke izin yang diterapkan ke bucket S3 untuk mencadangkan pengiriman yang gagal. Yaitu, terapkan `"Effect": "Allow"` izin untuk tindakan tersebut`s3:PutObject`, dan hapus `"Effect": "Deny"` izin pada tindakan `s3:PutObject` untuk bucket S3 yang digunakan untuk mencadangkan pengiriman yang gagal. Terakhir, pantau menggunakan [CloudWatch metrik untuk Firehose](https://docs.aws.amazon.com/firehose/latest/dev/cloudwatch-metrics.html) untuk mengonfirmasi bahwa aliran sedang dikirim ke tujuan. Untuk melihat dan memecahkan masalah kesalahan, gunakan [pemantauan Amazon CloudWatch Logs untuk Firehose](https://docs.aws.amazon.com/firehose/latest/dev/monitoring-with-cloudwatch-logs.html). 