Connecteur Amazon Athena pour MSK
Le connecteur Amazon Athena pour Amazon MSK
Ce connecteur n’utilise pas les connexions Glue 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 Utilisation d’AWS Serverless Application Repository pour déployer un connecteur de source de données.
Limitations
-
Les opérations DDL 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 date et horodatage ne sont pas pris en charge pour le type de fichier CSV et sont traités comme des valeurs varchar.
-
Le mappage dans des champs JSON 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 travailler avec des valeurs JSON complexes, utilisez les fonctions relatives à JSON disponibles dans Athena. Pour plus d’informations, consultez Extraction de données JSON à 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 connecteur MSK peut être utilisé avec les types de clusters suivants.
-
Cluster provisionné MSK – Vous spécifiez, surveillez et adaptez manuellement la capacité du cluster.
-
Cluster sans serveur MSK – Il fournit une capacité à la demande qui évolue automatiquement en fonction de 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.
-
SASL/PLAIN
-
SASL/PLAINTEXT
-
NO_AUTH
Pour plus d’informations, consultez Configuration de l'authentification pour le connecteur Athena MSK.
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 rubrique pour configurer le connecteur Athena pour MSK.
-
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 instance EC2 qui n'utilise pas l'authentification).
-
SASL_SSL_PLAIN – Cette méthode utilise le protocole de sécurité
SASL_SSLet le mécanisme SASLPLAIN. -
SASL_PLAINTEXT_PLAIN – Cette méthode utilise le protocole de sécurité
SASL_PLAINTEXTet le mécanisme SASLPLAIN.Note
Les types d'authentification
SASL_SSL_PLAINetSASL_PLAINTEXT_PLAINsont pris en charge par Apache Kafka, mais pas par Amazon MSK. -
SASL_SSL_AWS_MSK_IAM – Le contrôle d'accès IAM pour Amazon MSK vous permet de gérer à la fois l'authentification et l'autorisation pour votre cluster MSK. Utilisez les informations d'identification AWS de votre utilisateur (clé secrète et clé d'accès) pour vous connecter au cluster. Pour plus d'informations, voir la rubrique Contrôle d'accès IAM du 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 clusters Amazon MSK. Cette méthode enregistre le nom d'utilisateur et le mot de passe sur AWS Secrets Manager. Le secret doit être associé au cluster Amazon MSK. Pour plus d'informations, voir la rubrique Configuration de l'authentification SASL/SCRAM pour un cluster Amazon MSK du Guide du développeur Amazon Managed Streaming for Apache Kafka.
-
SSL – L’authentification SSL utilise des fichiers keystore et truststore pour se connecter au cluster Amazon MSK. 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. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Votre client doit fournir la clé secrète AWS lorsque le connecteur est déployé. Pour plus d'informations, voir la rubrique Authentification TLS mutuelle du Guide du développeur Amazon Managed Streaming for Apache Kafka.
Pour plus d’informations, consultez 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é. La valeur par défaut estFalseafin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de 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 cluster Amazon MSK, vous fournissez une URL d'amorçage 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 l'authentification IAM.
-
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_bucketObligatoire. Le nom du compartiment Amazon S3 où la fonction Lambda peut déverser des données. spill_prefixObligatoire. Le préfixe dans le compartiment de déversement où la fonction Lambda peut déverser des données. spill_put_request_headers(Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObjectAmazon S3 utilisée pour le déversement (par exemple,{"x-amz-server-side-encryption" : "AES256"}). Pour les autres en-têtes possibles, consultez PutObject dans la Référence d'API Amazon Simple Storage Service.
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 connecteur MSK
Pour pouvoir utiliser le connecteur, vous devez configurer votre cluster Amazon MSK, utiliser le Registre de schémas AWS Glue pour définir votre schéma et configurer l'authentification pour le connecteur.
Note
Si vous déployez le connecteur dans un VPC afin d’accéder à des ressources privées et si 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 passerelle NAT. Pour plus d’informations, consultez Passerelles NAT dans le Guide de l’utilisateur Amazon VPC.
Lorsque vous utilisez le registre de schémas AWS Glue, notez les 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 marqueurs est requise pour les registres AWS Glue que vous utilisez avec le connecteur Amazon Athena MSK. -
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.
Configuration de votre environnement Amazon MSK et votre registre de schémas AWS Glue
-
Configurez votre environnement Amazon MSK. Pour plus d'informations et d'étapes, voir la rubrique Configuration d'Amazon MSK et Mise en route avec Amazon MSK dans le Guide du développeur Amazon Managed Streaming for Apache Kafka.
-
Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) au format JSON dans le registre des schémas AWS Glue. Pour plus d'informations, voir la rubrique Intégration dans le registre des schémas AWS Glue du Guide du développeur AWS Glue. 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.
Exemple de schéma de type JSON
Dans l'exemple suivant, le schéma à créer dans le registre de schémas AWS Glue spécifie json comme valeur pour dataFormat et utilise datatypejson pour topicName.
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" } ] } }
Exemple de schéma de type CSV
Dans l'exemple suivant, le schéma à créer dans le registre de schémas AWS Glue spécifie csv comme valeur pour dataFormat et utilise datatypecsvbulk pour topicName. 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 diverses méthodes pour vous authentifier dans votre cluster Amazon MSK, notamment IAM, SSL, SCRAM et Kafka autonome.
Le tableau suivant présente les types d'authentification pour le connecteur ainsi que le protocole de sécurité et le mécanisme SASL pour chacun d'entre eux. Pour plus d'informations, voir la rubrique Authentification et autorisation pour les API Apache Kafka du 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 d'authentification SASL_SSL_PLAIN et SASL_PLAINTEXT_PLAIN sont pris en charge par Apache Kafka, mais pas par Amazon MSK.
SASL/IAM
Si le cluster utilise l'authentification IAM, vous devez configurer la politique IAM pour l'utilisateur lorsque vous configurez le cluster. Pour plus d'informations, voir la rubrique Contrôle d'accès IAM du 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 authentifié SSL, vous devez générer les fichiers truststore (magasin d'approbations) et keystore (magasin de clés) et les télécharger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Vous fournissez la clé secrète AWS 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é secrète AWS. |
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
Ouvrez la console Secrets Manager à l’adresse https://console.aws.amazon.com/secretsmanager/
. -
Dans le volet de navigation, sélectionnez Secrets.
-
Sur la page Secrets, choisissez le lien vers votre secret.
-
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_passwordetssl_key_password.
SASL/SCRAM
Si votre cluster utilise l'authentification SCRAM, fournissez la clé Secrets Manager qui est 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é secrète AWS. |
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.
Informations de licence
En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier pom.xml
Ressources supplémentaires
Pour plus d'informations sur ce connecteur, consultez le site correspondant