

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Mise en route de l’ingestion en streaming à partir de sources Apache Kafka
<a name="materialized-view-streaming-ingestion-getting-started-MSK"></a>

Cette rubrique explique comment utiliser des données de streaming depuis Amazon MSK, Apache Kafka ou Confluent Cloud à 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 des clusters alloués Amazon MSK et Amazon MSK sans serveur, avec Apache Kafka open source et avec Confluent Cloud. L’ingestion en flux continu Amazon Redshift élimine la nécessité de stocker temporairement une rubrique Apache Kafka dans Amazon S3 avant d’ingérer les données de flux dans Redshift.

 Sur le plan technique, l’ingestion en streaming fournit une ingestion à faible latence et à haute vitesse des données de flux ou de rubrique 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. 

Vous devez disposer d’une source Apache Kafka avant de configurer l’ingestion en streaming Amazon Redshift. Si vous n’avez pas de source, créez-en une en suivant les instructions suivantes :
+ **Amazon MSK** : [mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html)
+ **Apache Kafka** : [démarrage rapide d’Apache Kafka](https://kafka.apache.org/quickstart)
+ **Confluent Cloud** : [démarrage rapide pour Confluent Cloud](https://docs.confluent.io/cloud/current/get-started/index.html)

## Configuration de l’ingestion en streaming depuis Kafka
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup"></a>

Utilisez les procédures suivantes pour configurer l'ingestion de flux vers Amazon Redshift à partir d'Amazon MSK ou de sources Apache Kafka non AWS gérées (Apache Kafka et Confluent Cloud).

**Topics**
+ [Configurer l’authentification](#materialized-view-streaming-ingestion-getting-started-MSK-setup-auth)
+ [Configuration de votre VPC](#materialized-view-streaming-ingestion-getting-started-MSK-Setup-VPC)
+ [Créer une vue matérialisée](#materialized-view-streaming-ingestion-getting-started-MSK-setup-materialized-view)

### Configurer l’authentification
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup-auth"></a>

Cette section décrit la configuration de l’authentification pour permettre à votre application Amazon Redshift d’accéder à une source Amazon MSK. 

Après avoir créé le rôle de votre application, attachez l’une des politiques suivantes pour autoriser l’accès à votre cluster Amazon MSK, Apache Kafka ou Confluent Cloud. Pour l’authentification mTLS, vous pouvez stocker les certificats utilisés par Amazon Redshift dans ACM ou Secrets Manager. Vous devez donc choisir la politique correspondant à l’endroit où le certificat est stocké. 

Notez que les certificats autosignés ne sont pas pris en charge pour l’authentification ou les données en transit lorsque vous utilisez l’ingestion en streaming directe dans Amazon Redshift avec l’une des sources de streaming Apache Kafka prises en charge. Il s’agit notamment d’Amazon MSK, d’Apache Kafka et de Confluent Cloud. Envisagez d'utiliser des certificats générés par AWS Certificate Manager ou toute autre autorité de certification approuvée publiquement.

L’authentification IAM Amazon Redshift avec MSK n’est prise en charge que sur Kafka version 2.7.1 ou supérieure.

**AUTHENTIFICATION IAM (Amazon MSK uniquement) :**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKIAMpolicy",
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic",
                "kafka-cluster:Connect"
            ],
            "Resource": [
                "arn:aws:kafka:*:{{111122223333}}:cluster/MyTestCluster/*",
                "arn:aws:kafka:*:{{111122223333}}:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:*:{{111122223333}}:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

**AUTHENTIFICATION MTLS : à l'aide d'un certificat stocké dans AWS Certificate Manager**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKmTLSACMpolicy",
            "Effect": "Allow",
            "Action": [
                "acm:ExportCertificate" 
            ],
            "Resource": [
                "arn:aws:acm:us-east-1:444455556666:certificate/certificate_ID"
            ]
        }
    ]
}
```

------

**AUTHENTIFICATION MTLS : à l'aide d'un certificat stocké dans AWS Secrets Manager**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKmTLSSecretsManagerpolicy",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue" 
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:444455556666:secret:secret_ID"
            ]
        }
    ]
}
```

------

------
#### [ Amazon MSK ]

Si vous utilisez AUTHENTICATION NONE pour vous connecter à une source Amazon MSK, aucun rôle IAM n’est requis. Toutefois, si vous utilisez AUTHENTICATION IAM ou MTLS pour vous authentifier auprès de votre cluster Amazon MSK, votre cluster Amazon Redshift ou votre espace de noms Amazon Redshift sans serveur, un rôle IAM avec les autorisations appropriées doit être attaché. Créez un rôle IAM avec une politique d’approbation permettant à votre cluster Amazon Redshift ou à votre espace de noms Amazon Redshift sans serveur d’endosser le rôle. Après avoir créé le rôle, ajoutez l’une des autorisations suivantes pour prendre en charge IAM ou MTLS. Pour l'authentification mTLS, les certificats utilisés par Amazon Redshift peuvent être stockés AWS Certificate Manager dans AWS Secrets Manager ou. Vous devez donc choisir la politique correspondant à l'endroit où le certificat est stocké. Attachez le rôle à votre cluster Amazon Redshift alloué ou votre espace de noms Redshift sans serveur. Pour plus d'informations sur la façon de configurer la politique de confiance pour le rôle IAM, consultez [Autoriser Amazon Redshift à accéder à AWS d'autres services](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) en votre nom. 

Le tableau suivant montre les options de configuration complémentaires à définir pour l’ingestion en streaming depuis Amazon MSK :


| Configuration Amazon Redshift | Configuration d’Amazon MSK | Port à ouvrir entre Redshift et Amazon MSK | 
| --- | --- | --- | 
|  AUTHENTICATION NONE  |  Transport TLS désactivé  | 9092 | 
|  AUTHENTICATION NONE  |  Transport TLS activé  | 9094 | 
|  AUTHENTICATION IAM  |  IAM  | 9098/9198 | 
|  AUTHENTICATION MTLS  |  Transport TLS activé  | 9094 | 

L’authentification Amazon Redshift est définie dans l’instruction CREATE EXTERNAL SCHEMA.

**Note**  
Si l’authentification mTLS (Mutual Transport Layer Security) est activée sur le cluster Amazon MSK, la configuration d’Amazon Redshift pour utiliser AUTHENTICATION NONE lui indique d’utiliser le port 9094 pour un accès non authentifié. Toutefois, cela échouera, car le port est utilisé par l’authentification mTLS. De ce fait, nous vous recommandons de passer à la configuration AUTHENTICATION mtls quand vous utilisez mTLS.

------
#### [ Apache Kafka or Confluent Cloud ]

Pour Apache Kafka et Confluent Cloud, Amazon Redshift prend en charge les protocoles de connexion suivants :
+ Vous pouvez utiliser le protocole mTLS ou le texte brut avec le transport TLS pour l’authentification lorsque vous vous connectez à Apache Kafka.
+ Vous pouvez uniquement utiliser mTLS pour l’authentification lorsque vous vous connectez à Confluent Cloud.

Amazon Redshift prend en charge les protocoles de chiffrement suivants pour la connexion à Apache Kafka ou à Confluent Cloud :

**Méthodes d’authentification prises en charge pour Apache Kafka et Confluent Cloud**


| Amazon Redshift | Protocole de sécurité Kafka | Prise en charge d’Apache Kafka | Prise en charge de Confluent Cloud | 
| --- | --- | --- | --- | 
| AUTHENTICATION NONE | PLAINTEXT | Non | Non | 
| AUTHENTICATION NONE | SSL | Oui | Non | 
| AUTHENTICATION IAM | SASL\_SSL | Non | Non | 
| AUTHENTICATION MTLS | SSL | Oui (avec certificat) | Oui (avec certificat) | 

Notez qu'Amazon Redshift ne prend pas en charge SASL/SCRAM le protocole SASL/PLAINTEXT.

------

### Configuration de votre VPC
<a name="materialized-view-streaming-ingestion-getting-started-MSK-Setup-VPC"></a>

Après avoir créé vos ressources d’authentification, consultez votre VPC et vérifiez que votre cluster Amazon Redshift ou groupe de travail Amazon Redshift sans serveur dispose d’une itinéraire pour accéder à votre source Apache Kafka. 

**Note**  
Pour Amazon MSK, les règles de groupe de sécurité entrant pour votre cluster Amazon MSK doivent autoriser le groupe de sécurité de votre cluster Amazon Redshift ou de votre groupe de travail Redshift sans serveur. Les ports que vous spécifiez dépendent des méthodes d’authentification configurées sur votre cluster Amazon MSK. Pour plus d'informations, consultez les [sections Informations sur les ports](https://docs.aws.amazon.com/msk/latest/developerguide/port-info.html) et [Accès depuis le VPC AWS mais depuis l'extérieur](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access.html).

Ensuite, activez le routage VPC amélioré sur votre cluster Amazon Redshift ou dans votre groupe de travail Amazon Redshift sans serveur. Pour plus d’informations, consultez [Activation du routage VPC amélioré](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-enabling-cluster.html).

### Créer une vue matérialisée
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup-materialized-view"></a>

Dans cette section, vous allez configurer la vue matérialisée qu’Amazon Redshift utilise pour accéder à vos données de streaming Apache Kafka.

En supposant que vous avez un cluster Apache Kafka disponible, la première étape consiste à définir un schéma dans Redshift avec `CREATE EXTERNAL SCHEMA` et de référencer le cluster en tant que 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 des enregistrements de votre rubrique en utilisant le type de données Amazon Redshift par défaut VARBYTE, ou définir un schéma qui convertit les données au format `SUPER` semi-structuré. Lorsque vous interrogez la vue matérialisée, les enregistrements renvoyés sont une point-in-time vue du sujet.

1. Dans Amazon Redshift, créez un schéma externe à mapper au cluster Apache Kafka. La syntaxe est la suivante :

   ```
   CREATE EXTERNAL SCHEMA MySchema
   FROM KAFKA
   [ IAM_ROLE [ default | 'iam-role-arn' ] ]
   AUTHENTICATION [ none | iam | mtls ]
   {AUTHENTICATION_ARN 'acm-certificate-arn' |  SECRET_ARN 'asm-secret-arn'};
   ```

   Dans la clause `FROM`, `KAFKA` indique que le schéma mappe les données à partir d’une source Apache Kafka. 

    `AUTHENTICATION` indique le type d’authentification pour l’ingestion en streaming. Trois types sont disponibles : 
   + **none** : indique l’absence de toute authentification requise. Cela correspond à un accès non authentifié sur MSK. Cela correspond à l’authentification SSL dans Apache Kafka. Cette méthode d’authentification n’est pas prise en charge pour Confluent Cloud.
   + **iam** – Indique une authentification IAM. Vous pouvez uniquement utiliser l’authentification IAM avec Amazon MSK. Lorsque vous choisissez cette option, vérifiez que le rôle IAM dispose des autorisations nécessaires à l’authentification IAM. Pour plus d’informations sur la configuration des politiques IAM requises, consultez [Configuration de l’ingestion en streaming depuis Kafka](#materialized-view-streaming-ingestion-getting-started-MSK-setup).
   + **mtls** : indique que le protocole mTLS (Mutual Transport Layer Security) 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 Apache Kafka. Pour de plus amples informations sur la configuration de l’ingestion en streaming avec mTLS, consultez [Authentification avec mTLS pour l’ingestion en streaming Redshift à partir de sources Apache Kafka](materialized-view-streaming-ingestion-mtls.md).

   Notez que l’authentification Amazon MSK avec nom d’utilisateur et mot de passe n’est pas prise en charge pour l’ingestion en streaming. 

   Le paramètre `AUTHENTICATION_ARN` spécifie l’ARN du certificat mTLS (Mutual Transport Layer Security) ACM que vous utilisez pour établir une connexion cryptée.

   Le `SECRET_ARN` paramètre spécifie l'ARN du AWS Secrets Manager secret contenant le certificat à utiliser par Amazon Redshift pour les MTL.

   Les exemples suivants montrent comment définir l’URI de l’agent pour le cluster Amazon MSK lorsque vous créez le schéma externe :

   **Avec l’authentification IAM :**

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   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 KAFKA 
   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'
   ```

   **Avec mTLS :**

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   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 'asm-secret-arn'}
   ```

   Pour plus d’informations sur la façon de créer un schéma externe, consultez [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html).

1. Créez une vue matérialisée pour consommer les données de la rubrique. Utilisez une commande SQL 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 ingérer à partir de rubriques dont les noms sont en majuscules, vous pouvez définir la configuration `enable_case_sensitive_identifier` sur `true` au niveau de la session ou de la base de données. Pour plus d’informations, consultez [Noms et identificateurs](https://docs.aws.amazon.com/redshift/latest/dg/r_names.html) et [enable\_case\_sensitive\_identifier](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_case_sensitive_identifier.html).

   Pour activer l’actualisation automatique, utilisez `AUTO REFRESH YES`. L’actualisation manuelle est le comportement par défaut. 

1. Les colonnes de métadonnées incluent ce qui suit :    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/redshift/latest/dg/materialized-view-streaming-ingestion-getting-started-MSK.html)

   Il est important de noter que s’il existe une logique métier dans votre définition de vue matérialisée qui entraîne des erreurs de logique métier, cela peut entraîner des échecs d’ingestion en streaming dans certains cas. Cela peut vous amener à supprimer et recréer la vue matérialisée. Pour éviter cela, nous vous recommandons de simplifier votre logique métier et d’exécuter une logique supplémentaire sur les données après l’ingestion.

1. 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;
   ```

1. 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 de l’ingestion en streaming et types de données](materialized-view-streaming-ingestion.md#materialized-view-streaming-ingestion-limitations).