

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

# Konektor MSK Amazon Athena
<a name="connectors-msk"></a>

Konektor Amazon Athena untuk Amazon [MSK memungkinkan Amazon](https://aws.amazon.com/msk/) Athena menjalankan kueri SQL pada topik Apache Kafka Anda. Gunakan konektor ini untuk melihat topik [Apache Kafka](https://kafka.apache.org/) sebagai tabel dan pesan sebagai baris di Athena. Untuk informasi tambahan, lihat [Menganalisis data streaming real-time di Amazon MSK dengan Amazon](https://aws.amazon.com/blogs/big-data/analyze-real-time-streaming-data-in-amazon-msk-with-amazon-athena/) Athena di Big Data AWS Blog.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-msk-prerequisites"></a>

Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-msk-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.
+ Tipe data tanggal dan stempel waktu tidak didukung untuk jenis file CSV dan diperlakukan sebagai nilai varchar.
+ Pemetaan ke bidang JSON bersarang tidak didukung. Konektor hanya memetakan bidang tingkat atas.
+ Konektor tidak mendukung tipe yang kompleks. Tipe kompleks ditafsirkan sebagai string.
+ Untuk mengekstrak atau bekerja dengan nilai JSON yang kompleks, gunakan fungsi terkait JSON yang tersedia di Athena. Untuk informasi selengkapnya, lihat [Ekstrak data JSON dari string](extracting-data-from-JSON.md).
+ Konektor tidak mendukung akses ke metadata pesan Kafka.

## Istilah
<a name="connectors-msk-terms"></a>
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Endpoint Kafka** — String teks yang membuat koneksi ke instance Kafka.

## Kompatibilitas cluster
<a name="connectors-msk-cluster-compatibility"></a>

Konektor MSK dapat digunakan dengan jenis cluster berikut.
+ **MSK Provisioned cluster** — Anda secara manual menentukan, memantau, dan menskalakan kapasitas cluster.
+ **MSK Serverless cluster** — Menyediakan kapasitas sesuai permintaan yang diskalakan secara otomatis sebagai timbangan aplikasi. I/O 
+ **Standalone Kafka** — Koneksi langsung ke Kafka (diautentikasi atau tidak diautentikasi).

## Metode otentikasi yang didukung
<a name="connectors-msk-supported-authentication-methods"></a>

Konektor mendukung metode otentikasi berikut.
+ [SALL/IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) 
+ [SSL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html)
+ [SELEMPANG](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)
+ SASL/PLAIN
+ SELEMPANG/PLAINTEXT
+ NO\_AUTH

  Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor MSK Athena](#connectors-msk-setup-configuring-authentication).

## Format data input yang didukung
<a name="connectors-msk-supported-input-data-formats"></a>

Konektor mendukung format data input berikut.
+ JSON
+ CSV

## Parameter
<a name="connectors-msk-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor MSK Athena.

### Konektor federasi katalog data Athena
<a name="connectors-msk-connection-legacy"></a>
+ **auth\_type** - Menentukan jenis otentikasi cluster. Konektor mendukung jenis otentikasi berikut:
  + **NO\_AUTH —** Terhubung langsung ke Kafka tanpa otentikasi (misalnya, ke cluster Kafka yang digunakan melalui instans EC2 yang tidak menggunakan otentikasi).
  + **SASL\_SSL\_PLAIN** — Metode ini menggunakan protokol `SASL_SSL` keamanan dan mekanisme `PLAIN` SASL.
  + **SASL\_PLAINTEXT\_PLAIN** — Metode ini menggunakan protokol `SASL_PLAINTEXT` keamanan dan mekanisme `PLAIN` SASL.
**catatan**  
Jenis `SASL_SSL_PLAIN` dan `SASL_PLAINTEXT_PLAIN` otentikasi didukung oleh Apache Kafka tetapi tidak oleh Amazon MSK.
  + **SASL\_SSL\_ AWS\_MSK \_IAM - Kontrol** akses IAM untuk Amazon MSK memungkinkan Anda menangani otentikasi dan otorisasi untuk kluster MSK Anda. AWS Kredensyal pengguna Anda (kunci rahasia dan kunci akses) digunakan untuk terhubung dengan cluster. Untuk informasi selengkapnya, lihat [Kontrol akses IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.
  + **SASL\_SSL\_SCRAM\_ SHA512** - Anda dapat menggunakan jenis otentikasi ini untuk mengontrol akses ke kluster MSK Amazon Anda. Metode ini menyimpan nama pengguna dan kata sandi AWS Secrets Manager. Rahasianya harus dikaitkan dengan cluster MSK Amazon. Untuk informasi selengkapnya, lihat [Menyiapkan SASL/SCRAM otentikasi untuk klaster MSK Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) di Panduan Pengembang Amazon Managed Streaming for Apache Kafka.
  + **SSL** — Otentikasi SSL menggunakan penyimpanan kunci dan file penyimpanan kepercayaan untuk terhubung dengan kluster MSK Amazon. Anda harus membuat file trust store dan key store, mengunggahnya ke bucket Amazon S3, dan memberikan referensi ke Amazon S3 saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di AWS Secrets Manager. Klien Anda harus memberikan kunci AWS rahasia saat konektor dikerahkan. Untuk informasi selengkapnya, lihat [Autentikasi TLS Mutual di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) Amazon Managed Streaming for Apache Kafka Kafka.

    Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor MSK Athena](#connectors-msk-setup-configuring-authentication).
+ **certificates\_s3\_reference** — Lokasi Amazon S3 yang berisi sertifikat (penyimpanan kunci dan file penyimpanan kepercayaan).
+ **disable\_spill\_encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **kafka\_endpoint — Detail titik akhir** untuk diberikan kepada Kafka. Misalnya, untuk klaster MSK Amazon, Anda menyediakan [URL bootstrap](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) untuk klaster.
+ **secrets\_manager\_secret** — Nama rahasia tempat AWS kredensialnya disimpan. Parameter ini tidak diperlukan untuk otentikasi IAM.
+ **Parameter tumpahan** — Fungsi Lambda menyimpan sementara (“tumpahan”) data yang tidak sesuai dengan memori ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama. Gunakan parameter dalam tabel berikut untuk menentukan lokasi tumpahan.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-msk.html)

## Dukungan tipe data
<a name="connectors-msk-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai yang didukung untuk Kafka dan Apache Arrow.


****  

| Kafka | Panah | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILIDETIK | 
| TANGGAL | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partisi dan split
<a name="connectors-msk-partitions-and-splits"></a>

Topik Kafka dibagi menjadi beberapa partisi. Setiap partisi dipesan. Setiap pesan dalam partisi memiliki ID tambahan yang disebut *offset*. Setiap partisi Kafka dibagi lagi menjadi beberapa split untuk pemrosesan paralel. Data tersedia untuk periode retensi yang dikonfigurasi dalam cluster Kafka.

## Praktik terbaik
<a name="connectors-msk-best-practices"></a>

Sebagai praktik terbaik, gunakan predikat pushdown saat Anda menanyakan Athena, seperti pada contoh berikut.

```
SELECT * 
FROM "{{msk_catalog_name}}"."{{glue_schema_registry_name}}"."{{glue_schema_name}}" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "{{msk_catalog_name}}"."{{glue_schema_registry_name}}"."{{glue_schema_name}}" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Menyiapkan konektor MSK
<a name="connectors-msk-setup"></a>

Sebelum Anda dapat menggunakan konektor, Anda harus mengatur cluster MSK Amazon Anda, menggunakan [AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) untuk menentukan skema Anda, dan mengkonfigurasi otentikasi untuk konektor.

**catatan**  
Jika Anda menyebarkan konektor ke VPC untuk mengakses sumber daya pribadi dan juga ingin terhubung ke layanan yang dapat diakses publik seperti Confluent, Anda harus mengaitkan konektor dengan subnet pribadi yang memiliki NAT Gateway. Untuk informasi selengkapnya, lihat [gateway NAT di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) Pengguna Amazon VPC.

Saat bekerja dengan AWS Glue Schema Registry, perhatikan poin-poin berikut:
+ Pastikan bahwa teks di bidang **Description** dari AWS Glue Schema Registry menyertakan string`{AthenaFederationMSK}`. String penanda ini diperlukan untuk AWS Glue Registries yang Anda gunakan dengan konektor MSK Amazon Athena.
+ Untuk kinerja terbaik, gunakan hanya huruf kecil untuk nama database dan nama tabel Anda. Menggunakan casing campuran menyebabkan konektor melakukan pencarian case insensitive yang lebih intensif secara komputasi.

**Untuk mengatur lingkungan MSK Amazon dan Registri AWS Glue Skema**

1. Siapkan lingkungan MSK Amazon Anda. Untuk informasi dan langkah-langkahnya, lihat [Menyiapkan MSK Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/before-you-begin.html) dan [Memulai menggunakan MSK Amazon di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) Amazon Managed Streaming for Apache Kafka.

1. Unggah file deskripsi topik Kafka (yaitu skema) dalam format JSON ke Schema Registry. AWS Glue Untuk informasi selengkapnya, lihat [Mengintegrasikan dengan Registri AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) di Panduan AWS Glue Pengembang. Misalnya skema, lihat bagian berikut.

### Contoh skema untuk Registri AWS Glue Skema
<a name="connectors-msk-setup-schema-examples"></a>

Gunakan format contoh di bagian ini saat Anda mengunggah skema Anda ke Registri [AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Contoh skema tipe JSON
<a name="connectors-msk-setup-schema-examples-json"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `json` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypejson` `topicName`

**catatan**  
Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Contoh skema tipe CSV
<a name="connectors-msk-setup-schema-examples-csv"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `csv` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypecsvbulk` `topicName` Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

### Mengkonfigurasi otentikasi untuk konektor MSK Athena
<a name="connectors-msk-setup-configuring-authentication"></a>

Anda dapat menggunakan berbagai metode untuk mengautentikasi ke kluster MSK Amazon Anda, termasuk IAM, SSL, SCRAM, dan Kafka mandiri.

Tabel berikut menunjukkan jenis otentikasi untuk konektor dan protokol keamanan dan mekanisme SASL untuk masing-masing. Untuk informasi selengkapnya, lihat [Otentikasi dan otorisasi untuk Apache Kafka di](https://docs.aws.amazon.com/msk/latest/developerguide/kafka_apis_iam.html) Panduan APIs Pengembang Amazon Managed Streaming for Apache Kafka.


****  

| auth\_type | security.protocol | sasl.mekanisme | 
| --- | --- | --- | 
| SASL\_SSL\_PLAIN | SASL\_SSL | PLAIN | 
| SASL\_PLAINTEXT\_PLAIN | SASL\_PLAINTEXT | PLAIN | 
| SASL\_SSL\_AWS\_MSK\_IAM | SASL\_SSL | AWS\_MSK\_IAM | 
| SASL\_SSL\_SCRAM\_SHA512 | SASL\_SSL | SCRAM-SHA-512 | 
| SSL | SSL | N/A | 

**catatan**  
Jenis `SASL_SSL_PLAIN` dan `SASL_PLAINTEXT_PLAIN` otentikasi didukung oleh Apache Kafka tetapi tidak oleh Amazon MSK.

#### SELEMPANG/IAM
<a name="connectors-msk-setup-configuring-authentication-sasl-iam"></a>

Jika klaster menggunakan autentikasi IAM, Anda harus mengonfigurasi kebijakan IAM untuk pengguna saat menyiapkan klaster. Untuk informasi selengkapnya, lihat [Kontrol akses IAM](https://docs.aws.amazon.com/msk/latest/developerguide/IAM-access-control.html) di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.

Untuk menggunakan jenis otentikasi ini, setel variabel lingkungan `auth_type` Lambda untuk konektor. `SASL_SSL_AWS_MSK_IAM` 

#### SSL
<a name="connectors-msk-setup-configuring-authentication-tls"></a>

Jika klaster diautentikasi SSL, Anda harus membuat file trust store dan key store dan mengunggahnya ke bucket Amazon S3. Anda harus memberikan referensi Amazon S3 ini saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di file. AWS Secrets Manager Anda memberikan kunci AWS rahasia saat Anda menggunakan konektor.

Untuk informasi tentang cara membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Untuk menggunakan jenis otentikasi ini, atur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\_type | SSL | 
| certificates\_s3\_reference | Lokasi Amazon S3 yang berisi sertifikat. | 
| secrets\_manager\_secret | Nama kunci AWS rahasiamu. | 

Setelah Anda membuat rahasia di Secrets Manager, Anda dapat melihatnya di konsol Secrets Manager.

**Untuk melihat rahasia Anda di Secrets Manager**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Di panel navigasi, pilih **Rahasia**.

1. Pada halaman **Rahasia**, pilih tautan ke rahasia Anda.

1. Pada halaman detail untuk rahasia Anda, pilih **Ambil nilai rahasia**.

   Gambar berikut menunjukkan contoh rahasia dengan tiga pasangan kunci/nilai:`keystore_password`,`truststore_password`, dan. `ssl_key_password`  
![Mengambil rahasia SSL di Secrets Manager](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-msk-setup-1.png)

#### SASL/SCRAM
<a name="connectors-msk-setup-configuring-authentication-sasl-scram"></a>

Jika klaster Anda menggunakan otentikasi SCRAM, berikan kunci Secrets Manager yang terkait dengan cluster saat Anda menerapkan konektor. AWS Kredensyal pengguna (kunci rahasia dan kunci akses) digunakan untuk mengautentikasi dengan cluster.

Mengatur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\_type | SASL\_SSL\_SCRAM\_SHA512 | 
| secrets\_manager\_secret | Nama kunci AWS rahasiamu. | 

Gambar berikut menunjukkan contoh rahasia di konsol Secrets Manager dengan dua key/value pasang: satu untuk`username`, dan satu untuk`password`.

![Mengambil rahasia SCRAM di Secrets Manager](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-msk-setup-2.png)


## Informasi lisensi
<a name="connectors-msk-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-msk-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-msk) GitHub di.com.