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.
Commencer à intégrer le streaming depuis Amazon Managed Streaming for Apache Kafka (Amazon) MSK
Cette rubrique explique comment utiliser les données de streaming d'Amazon à MSK l'aide d'une vue matérialisée.
L’objectif de l’ingestion en streaming Amazon Redshift est de simplifier le processus afin d’ingérer directement des données de flux depuis un service de streaming vers Amazon Redshift ou Amazon Redshift sans serveur. Cela fonctionne avec Amazon MSK Provisioned et Amazon MSK Serverless, ainsi qu'avec Kinesis Data Streams. L'ingestion du streaming par Amazon Redshift élimine le besoin de préparer un flux Kinesis Data Streams ou un sujet Amazon dans MSK Amazon S3 avant d'ingérer les données du flux dans Redshift.
Sur le plan technique, l'ingestion du streaming, à la fois depuis Amazon Kinesis Data Streams et MSK Amazon, permet une ingestion rapide et à faible latence des données de flux ou de sujets dans une vue matérialisée Amazon Redshift. Après la configuration, l’actualisation de la vue matérialisée vous permet d’intégrer de gros volumes de données.
Configurez l'ingestion du streaming Amazon Redshift pour Amazon MSK en effectuant les étapes suivantes :
Créez un schéma externe qui correspond à la source de données en streaming.
Créez une vue matérialisée qui fait référence au schéma externe.
Vous devez disposer d'une MSK source Amazon avant de configurer l'ingestion du streaming par Amazon Redshift. Si vous n'avez pas de source, suivez les instructions de la section Getting Started Using Amazon MSK.
Note
Ingestion en streaming et Amazon Redshift Serverless – Les étapes de configuration décrites dans cette rubrique s'appliquent aux clusters provisionnés Amazon Redshift et à Amazon Redshift Serverless. Pour de plus amples informations, veuillez consulter Comportement d'ingestion du streaming et types de données.
Configuration des IAM autorisations et exécution de l'ingestion du streaming depuis Kafka
En supposant qu'un MSK cluster Amazon soit disponible, la première étape consiste à définir un schéma dans Redshift avec CREATE EXTERNAL SCHEMA
et à référencer le MSK cluster Amazon comme source de données. Ensuite, pour accéder aux données dans la rubrique, définissez le STREAM
dans une vue matérialisée. Vous pouvez stocker les enregistrements de votre rubrique en utilisant le VARBYTE type de données Amazon Redshift par défaut ou définir un schéma qui convertit les données au format semi-structuré. SUPER
Lorsque vous interrogez la vue matérialisée, les enregistrements renvoyés sont une point-in-time vue du sujet.
-
Si vous vous connectez AUTHENTICATION NONE àMSK, aucun IAM rôle n'est requis. Toutefois, si vous utilisez AUTHENTICATION IAM ou MTLS pour vous authentifier auprès de votre MSK cluster Amazon, votre cluster Amazon Redshift ou votre espace de noms Amazon Redshift Serverless doit avoir un rôle attaché avec les autorisations appropriées. IAM Créez un IAM rôle avec une politique de confiance qui permet à votre cluster Amazon Redshift ou à votre espace de noms Amazon Redshift Serverless d'assumer le rôle. Après avoir créé le rôle, ajoutez l'une des autorisations suivantes à support IAM ouMTLS. Pour l'TLSauthentification m, les certificats utilisés par Amazon Redshift peuvent être stockés dans AWS Certificate Manager ou AWS Secrets Manager. Vous devez donc choisir la politique correspondant à l'endroit où le certificat est stocké. Associez le rôle à votre cluster provisionné Amazon Redshift ou à votre espace de noms Redshift Serverless. Pour plus d'informations sur la façon de configurer la politique de confiance pour le IAM rôle, consultez Autoriser Amazon Redshift à accéder à AWS d'autres services en votre nom.
AUTHENTICATION IAM:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "MSKIAMpolicy", "Effect": "Allow", "Action": [ "kafka-cluster:ReadData", "kafka-cluster:DescribeTopic", "kafka-cluster:Connect" ], "Resource": [ "arn:aws:kafka:*:0123456789:cluster/MyTestCluster/*", "arn:aws:kafka:*:0123456789:topic/MyTestCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:*:0123456789:group/MyTestCluster/*" ] } ] }
AUTHENTICATIONMTLS: à l'aide d'un certificat stocké dans AWS Certificate Manager
{ "Version": "2012-10-17", "Statement": [ { "Sid": "MSKmTLSACMpolicy", "Effect": "Allow", "Action": [ "acm:ExportCertificate" ], "Resource": [ "arn:aws:acm:us-east-1:444455556666:certificate/certificate_ID" ] } ] }
AUTHENTICATIONMTLS: à l'aide d'un certificat stocké dans AWS Secrets Manager
{ "Version": "2012-10-17", "Statement": [ { "Sid": "MSKmTLSSecretsManagerpolicy", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:444455556666:secret:secret_ID" ] } ] }
Vérifiez VPC et vérifiez que votre cluster Amazon Redshift ou Amazon Redshift Serverless dispose d'un itinéraire pour accéder à votre cluster Amazon. MSK Les règles du groupe de sécurité entrant pour votre MSK cluster Amazon doivent autoriser le groupe de sécurité de votre cluster Amazon Redshift ou de votre groupe de travail Amazon Redshift Serverless. Les ports que vous spécifiez dépendent des méthodes d'authentification configurées sur votre MSK cluster Amazon. Pour plus d'informations, consultez les sections Informations sur le port et Accès depuis l'intérieur AWS mais depuis l'extérieur du VPC.
Le tableau suivant présente les options de configuration complémentaires à configurer pour l'ingestion de streaming depuis Amazon MSK :
Configuration Amazon Redshift MSKConfiguration d'Amazon Port à ouvrir entre Redshift et Amazon MSK AUTHENTICATION NONE TLStransport pour personnes handicapées 9092 AUTHENTICATION NONE TLStransport activé 9094 AUTHENTICATION IAM IAM 9098/9198 AUTHENTICATION MTLS TLStransport activé 9094 L'authentification Amazon Redshift est définie dans la CREATE EXTERNAL SCHEMA déclaration.
Note
Dans le cas où l'authentification Mutual Transport Layer Security (mTLS) est activée sur le MSK cluster Amazon, la configuration d'Amazon Redshift lui permet d'utiliser AUTHENTICATION NONE le port 9094 pour un accès non authentifié. Cependant, cela échouera car le port est utilisé par TLS l'authentification m. Pour cette raison, nous vous recommandons de passer à AUTHENTICATION MTLS lorsque vous utilisez m. TLS
Activez le VPC routage amélioré sur votre cluster Amazon Redshift ou votre groupe de travail Amazon Redshift Serverless. Pour plus d'informations, consultez la section Activation du VPC routage amélioré.
-
Dans Amazon Redshift, créez un schéma externe à mapper au cluster AmazonMSK. La syntaxe est la suivante :
CREATE EXTERNAL SCHEMA MySchema FROM MSK [ IAM_ROLE [ default | 'iam-role-arn' ] ] AUTHENTICATION [ none | iam | mtls ] [AUTHENTICATION_ARN 'acm-certificate-arn' | SECRET_ARN 'ssm-secret-arn' ];
Dans la
FROM
clause,MSK
indique que le schéma mappe les données provenant de Managed Kafka Services.AUTHENTICATION
indique le type d'authentification pour l'ingestion du streaming avec AmazonMSK. Trois types sont disponibles :none — Spécifie qu'aucune authentification n'est requise. Cela correspond à un accès non authentifié activé. MSK
iam — Spécifie IAM l'authentification. Lorsque vous choisissez cette option, assurez-vous que le IAM rôle dispose des autorisations d'IAMauthentification. Pour plus d'informations sur la configuration des IAM politiques requises, consultezConfiguration des IAM autorisations et exécution de l'ingestion du streaming depuis Kafka.
mtls — Spécifie que la sécurité mutuelle de la couche de transport assure une communication sécurisée en facilitant l'authentification entre un client et un serveur. Dans ce cas, le client est Redshift et le serveur est Amazon. MSK Pour plus d'informations sur la configuration de l'ingestion du streaming avec mTLS, consultezAuthentification avec m TLS pour l'ingestion du streaming Redshift depuis Amazon MSK.
Notez que MSK l'authentification Amazon avec un nom d'utilisateur et un mot de passe n'est pas prise en charge pour l'ingestion du streaming.
AUTHENTICATION_ARN
indique le certificat ARN de sécurité ACM mutuelle de la couche de transport (mTLS) que vous utilisez pour établir une connexion cryptée.SECRET_ARN
spécifie l'ARN du AWS Secrets Manager secret contenant le certificat à utiliser par Amazon Redshift pour m. TLSLes exemples suivants montrent comment définir le broker URI pour le MSK cluster Amazon lorsque vous créez le schéma externe :
CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION IAM URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098'
Sans authentification :
CREATE EXTERNAL SCHEMA my_schema FROM MSK AUTHENTICATION none URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092'
En utilisant m TLS
CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION MTLS URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b- 2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' AUTHENTICATION_ARN 'acm-certificate-arn' | [ SECRET_ARN 'ssm-secret-arn' ];
Pour plus d'informations sur la création d'un schéma externe, consultez CREATEEXTERNALSCHEMA.
-
Créez une vue matérialisée pour consommer les données de la rubrique. Utilisez une SQL commande telle que l'exemple suivant.
CREATE MATERIALIZED VIEW MyView AUTO REFRESH YES AS SELECT * FROM MySchema."mytopic";
Les noms de rubrique Kafka sont sensibles à la casse et peuvent contenir des lettres majuscules et minuscules. Pour effectuer une ingestion à partir de rubriques dont les noms sont en majuscules, vous pouvez définir la configuration
enable_case_sensitive_identifier
true
au niveau de la session ou de la base de données. Pour plus d’informations, consultez Noms et identificateurs et enable_case_sensitive_identifier.Pour activer l’actualisation automatique, utilisez
AUTO REFRESH YES
. L’actualisation manuelle est le comportement par défaut.Les colonnes de métadonnées incluent ce qui suit :
Colonne de métadonnées Type de données Description kafka_partition bigint ID de partition de l’enregistrement issu de la rubrique Kafka kafka_offset bigint Décalage de l’enregistrement dans la rubrique Kafka pour une partition donnée kafka_timestamp_type char(1) Type d’horodatage utilisé dans l’enregistrement Kafka :
C — Date de création de l'enregistrement (CREATE_TIME) côté client
L — Enregistrer le temps d'ajout (LOG_ APPEND _TIME) côté serveur Kafka
U — L'heure de création de l'enregistrement n'est pas disponible (NO_ TIMESTAMP _TYPE)
kafka_timestamp horodatage sans fuseau horaire Valeur timestamp de l’enregistrement kafka_key varbyte La clé de l’enregistrement de Kafka kafka_value varbyte L’enregistrement reçu de Kafka kafka_headers super L’en-tête de l’enregistrement reçu de Kafka refresh_time horodatage sans fuseau horaire L’heure de début de l’actualisation Il est important de noter que si la définition de votre vue matérialisée comporte une logique métier qui entraîne des erreurs de logique métier, cela peut entraîner des échecs d'ingestion lors de l'ingestion du streaming dans certains cas. Cela peut vous obliger à supprimer et à recréer la vue matérialisée. Pour éviter cela, nous vous recommandons de conserver une logique métier simple et d'exécuter une logique supplémentaire sur les données après les avoir ingérées.
Actualisez la vue, ce qui appelle Amazon Redshift à lire à partir de la rubrique et à charger des données dans la vue matérialisée.
REFRESH MATERIALIZED VIEW MyView;
Interrogez les données dans la vue matérialisée.
select * from MyView;
La vue matérialisée est mise à jour directement à partir de la rubrique lorsque
REFRESH
est exécuté. Vous créez une vue matérialisée qui se mappe à la source de données de la rubrique Kafka. Vous pouvez effectuer des filtrages et des agrégations sur les données dans le cadre de la définition de la vue matérialisée. Votre vue matérialisée de l’ingestion en streaming (la vue matérialisée de base) ne peut référencer qu’une seule rubrique Kafka. Toutefois, vous pouvez créer des vues matérialisées supplémentaires qui se joignent à la vue matérialisée de base et à d’autres vues ou tables matérialisées.
Pour plus d’informations sur les limites relatives à l’ingestion en streaming, consultez Comportement d'ingestion du streaming et types de données.