Connecteur Amazon Athena MSK - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connecteur Amazon Athena MSK

Le connecteur Amazon Athena pour Amazon MSK permet à Amazon Athena d'SQLexécuter des requêtes sur vos sujets Apache Kafka. Utilisez ce connecteur pour afficher les rubriques Apache Kafka sous forme de tableaux et les messages sous forme de lignes dans Athena. Pour plus d'informations, consultez Analyser les données de streaming en temps réel sur Amazon MSK avec Amazon Athena sur le blog AWS Big Data.

Ce connecteur n'utilise pas Glue Connections pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s'effectue via Lambda.

Prérequis

Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez Création d'une connexion à une source de données ou Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données.

Limites

  • Les DDL opérations d'écriture ne sont pas prises en charge.

  • Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section Quotas Lambda du Guide du développeur AWS Lambda .

  • Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.

  • Les types de données de date et d'horodatage ne sont pas pris en charge pour le type de CSV fichier et sont traités comme des valeurs varchar.

  • Le mappage dans des JSON champs imbriqués n'est pas pris en charge. Le connecteur ne mappe que les champs de niveau supérieur.

  • Le connecteur ne prend pas en charge les types complexes. Les types complexes sont interprétés comme des chaînes.

  • Pour extraire ou utiliser des JSON valeurs complexes, utilisez les fonctions JSON associées disponibles dans Athena. Pour de plus amples informations, veuillez consulter Extraire JSON des données à partir de chaînes.

  • Le connecteur ne prend pas en charge l’accès aux métadonnées des messages Kafka.

Conditions

  • Gestionnaire de métadonnées – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.

  • Gestionnaire d’enregistrements – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.

  • Gestionnaire de composites – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.

  • Point de terminaison Kafka – Chaîne de texte qui établit une connexion à une instance Kafka.

Compatibilité des clusters

Le MSK connecteur peut être utilisé avec les types de clusters suivants.

  • MSKCluster provisionné : vous spécifiez, surveillez et dimensionnez manuellement la capacité du cluster.

  • MSKCluster sans serveur : fournit une capacité à la demande qui s'adapte automatiquement à l'évolution des E/S des applications.

  • Kafka autonome – Connexion directe à Kafka (authentifiée ou non).

Méthodes d'authentification prises en charge

Le connecteur prend en charge les méthodes d'authentification suivantes.

Formats de données d'entrée pris en charge

Le connecteur prend en charge les formats de données d'entrée suivants.

  • JSON

  • CSV

Paramètres

Utilisez les paramètres de cette section pour configurer le connecteur AthenaMSK.

  • auth_type – Spécifie le type d'authentification du cluster. Le connecteur prend en charge les types d'authentification suivants :

    • NO_ AUTH — Connectez-vous directement à Kafka sans authentification (par exemple, à un cluster Kafka déployé sur une EC2 instance qui n'utilise pas d'authentification).

    • SASL_SSL_ PLAIN — Cette méthode utilise le protocole SASL_SSL de sécurité et le PLAIN SASL mécanisme.

    • SASL_PLAINTEXT_ PLAIN — Cette méthode utilise le protocole SASL_PLAINTEXT de sécurité et le PLAIN SASL mécanisme.

      Note

      Les types SASL_PLAINTEXT_PLAIN d'authentification SASL_SSL_PLAIN et sont pris en charge par Apache Kafka mais pas par AmazonMSK.

    • SASL_SSL_ AWS_MSK _ IAM — Le contrôle IAM d'accès pour Amazon vous MSK permet de gérer à la fois l'authentification et l'autorisation pour votre MSK cluster. Les informations d' AWS identification de votre utilisateur (clé secrète et clé d'accès) sont utilisées pour se connecter au cluster. Pour plus d'informations, consultez la section sur le contrôle IAM d'accès dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

    • SASL_SSL_ SCRAM _ SHA512 — Vous pouvez utiliser ce type d'authentification pour contrôler l'accès à vos MSK clusters Amazon. Cette méthode enregistre le nom d'utilisateur et le mot de passe sur AWS Secrets Manager. Le secret doit être associé au MSK cluster Amazon. Pour plus d'informations, consultez la section Configuration et SASL SCRAM authentification pour un MSK cluster Amazon dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

    • SSL— SSL l'authentification utilise des fichiers de stockage de clés et de stockage de confiance pour se connecter au MSK cluster Amazon. Vous devez générer les fichiers keystore et truststore, les charger dans un compartiment Amazon S3 et fournir la référence à Amazon S3 lorsque vous déployez le connecteur. Le magasin de clés, le magasin de confiance et les SSL clés sont stockés dans AWS Secrets Manager. Votre client doit fournir la clé AWS secrète lors du déploiement du connecteur. Pour plus d'informations, consultez la section TLSAuthentification mutuelle dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

      Pour de plus amples informations, veuillez consulter Configuration de l'authentification pour le connecteur Athena MSK.

  • certificates_s3_reference – L'emplacement Amazon S3 qui contient les certificats (les fichiers keystore et truststore).

  • disable_spill_encryption – (Facultatif) Lorsque la valeur est définie sur True, le chiffrement des déversements est désactivé. Par défaut, les données False transmises à S3 sont chiffrées à l'aide de AES GCM -, soit à l'aide d'une clé générée de manière aléatoire, soit KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le chiffrement côté serveur.

  • kafka_endpoint – Les détails du point de terminaison à fournir à Kafka. Par exemple, pour un MSK cluster Amazon, vous fournissez un bootstrap URL pour le cluster.

  • secrets_manager_secret – Le nom du secret AWS dans lequel sont enregistrées les informations d'identification. Ce paramètre n'est pas obligatoire pour IAM l'authentification.

  • Paramètres de déversement – Les fonctions Lambda stockent temporairement (« déversent ») les données qui ne tiennent pas en mémoire vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement. Utilisez les paramètres du tableau suivant pour spécifier l'emplacement de déversement.

    Paramètre Description
    spill_bucket Obligatoire. Le nom du compartiment Amazon S3 où la fonction Lambda peut déverser des données.
    spill_prefix Obligatoire. Le préfixe dans le compartiment de déversement où la fonction Lambda peut déverser des données.
    spill_put_request_headers (Facultatif) Carte JSON codée des en-têtes et des valeurs de la putObject demande Amazon S3 utilisée pour le déversement (par exemple,{"x-amz-server-side-encryption" : "AES256"}). Pour les autres en-têtes possibles, consultez PutObjectle Amazon Simple Storage Service API Reference.

Prise en charge du type de données

Le tableau suivant indique les types de données correspondants pris en charge par Kafka et Apache Arrow.

Kafka Flèche
CHAR VARCHAR
VARCHAR VARCHAR
TIMESTAMP MILLISECOND
DATE DAY
BOOLEAN BOOL
SMALLINT SMALLINT
INTEGER INT
BIGINT BIGINT
DECIMAL FLOAT8
DOUBLE FLOAT8

Partitions et déversements

Les rubriques Kafka sont divisées en partitions. Chaque partition est ordonnée. Chaque message dans une partition a un ID incrémentiel appelé offset. Chaque partition Kafka est ensuite divisée en plusieurs parties pour un traitement parallèle. Les données sont disponibles pour la période de rétention configurée dans les clusters Kafka.

Bonnes pratiques

Il est recommandé d'utiliser la poussée vers le bas des prédicats lorsque vous interrogez Athena, comme dans les exemples suivants.

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'

Configuration du MSK connecteur

Avant de pouvoir utiliser le connecteur, vous devez configurer votre MSK cluster Amazon, utiliser le registre des AWS Glue schémas pour définir votre schéma et configurer l'authentification pour le connecteur.

Note

Si vous déployez le connecteur VPC dans un afin d'accéder à des ressources privées et que vous souhaitez également vous connecter à un service accessible au public tel que Confluent, vous devez associer le connecteur à un sous-réseau privé doté d'une NAT passerelle. Pour plus d'informations, consultez les NATpasserelles dans le guide de l'VPCutilisateur Amazon.

Lorsque vous travaillez avec le registre des AWS Glue schémas, tenez compte des points suivants :

  • Assurez-vous que le texte du champ Description du registre de schémas AWS Glue inclut la chaîne {AthenaFederationMSK}. Cette chaîne de marqueur est obligatoire pour les AWS Glue registres que vous utilisez avec le connecteur Amazon MSK Athena.

  • Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

Pour configurer votre MSK environnement Amazon et votre registre AWS Glue de schémas
  1. Configurez votre MSK environnement Amazon. Pour plus d'informations et pour connaître les étapes à suivre, consultez les sections Configurer Amazon MSK et Getting started using Amazon MSK dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

  2. Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) JSON au format dans le registre des AWS Glue schémas. Pour plus d'informations, consultez la section Intégration à AWS Glue Schema Registry dans le guide du AWS Glue développeur. Pour des exemples de schémas, voir la rubrique suivante.

Utilisez le format des exemples de cette rubrique lorsque vous téléchargez votre schéma dans le registre de schémas AWS Glue.

JSONexemple de schéma de type

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue json schémas indique la valeur pour dataFormat et les utilisations datatypejson pourtopicName.

Note

La valeur de topicName doit utiliser la même casse que le nom de la rubrique de 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" } ] } }

CSVexemple de schéma de type

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue csv schémas indique la valeur pour dataFormat et les utilisations datatypecsvbulk pourtopicName. La valeur de topicName doit utiliser la même casse que le nom de la rubrique de 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" } ] } }

Configuration de l'authentification pour le connecteur Athena MSK

Vous pouvez utiliser différentes méthodes pour vous authentifier auprès de votre MSK cluster Amazon, notamment, IAM SSLSCRAM, et Kafka autonome.

Le tableau suivant indique les types d'authentification pour le connecteur ainsi que le protocole et le SASL mécanisme de sécurité pour chacun d'eux. Pour plus d'informations, consultez Authentification et autorisation pour Apache Kafka APIs dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

auth_type security.protocol sasl.mechanism
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
Note

Les types SASL_PLAINTEXT_PLAIN d'authentification SASL_SSL_PLAIN et sont pris en charge par Apache Kafka mais pas par AmazonMSK.

SASL/IAM

Si le cluster utilise IAM l'authentification, vous devez configurer la IAM politique pour l'utilisateur lors de la configuration du cluster. Pour plus d'informations, consultez la section sur le contrôle IAM d'accès dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

Pour utiliser ce type d'authentification, définissez la variable d'environnement Lambda auth_type pour le connecteur sur SASL_SSL_AWS_MSK_IAM.

SSL

Si le cluster est SSL authentifié, vous devez générer les fichiers Trust Store et Key Store et les charger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Le magasin de clés, le magasin de confiance et les SSL clés sont stockés dans le AWS Secrets Manager. Vous fournissez la clé AWS secrète lorsque vous déployez le connecteur.

Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique Créer un secret AWS Secrets Manager.

Pour utiliser ce type d'authentification, définissez les variables d'environnement comme indiqué dans le tableau suivant.

Paramètre Valeur
auth_type SSL
certificates_s3_reference L'emplacement Amazon S3 qui contient les certificats.
secrets_manager_secret Le nom de votre clé AWS secrète.

Après avoir créé un secret dans Secrets Manager, vous pouvez le consulter dans la console Secrets Manager.

Visualisation de votre secret dans Secrets Manager
  1. Ouvrez la console Secrets Manager à l'adresse https://console.aws.amazon.com/secretsmanager/.

  2. Dans le volet de navigation, sélectionnez Secrets.

  3. Sur la page Secrets, choisissez le lien vers votre secret.

  4. Sur la page de détails de votre secret, sélectionnez Retrieve secret value (Récupérer la valeur du secret).

    L'image suivante montre un exemple de secret avec trois paires clé/valeur : keystore_password, truststore_password et ssl_key_password.

    Récupération d'un SSL secret dans Secrets Manager

SASL/SCRAM

Si votre cluster utilise SCRAM l'authentification, fournissez la clé Secrets Manager associée au cluster lorsque vous déployez le connecteur. Les informations d'identification AWS de l'utilisateur (clé secrète et clé d'accès) sont utilisées pour s'authentifier au cluster.

Définissez les variables d'environnement comme indiqué dans le tableau suivant.

Paramètre Valeur
auth_type SASL_SSL_SCRAM_SHA512
secrets_manager_secret Le nom de votre clé AWS secrète.

L'image suivante montre un exemple de secret dans la console Secrets Manager avec deux paires clé/valeur : une pour username et une pour password.

Récupération d'un SCRAM secret dans Secrets Manager

Informations de licence

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier pom.xml de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier LICENSE.txt sur GitHub .com.

Ressources supplémentaires

Pour plus d'informations sur ce connecteur, rendez-vous sur le site correspondant sur GitHub .com.