Comment configurer le streaming entre comptes de Kinesis Data Firehose vers Amazon OpenSearch Service ?
Je souhaite configurer un flux Amazon Kinesis Data Firehose qui envoie des données vers un cluster Amazon OpenSearch Service dans un autre compte. Comment diffuser en continu mes ressources de données sur différents comptes ?
Brève description
Vous pouvez configurer Kinesis Data Firehose et ses dépendances, par exemple Amazon Simple Storage Service (Amazon S3) et Amazon CloudWatch, pour diffuser des données en continu sur différents comptes. La diffusion de données en streaming fonctionne pour les clusters OpenSearch Service publiquement accessibles, qu'importe si le contrôle précis des accès (FGAC) est activé ou non. Cet article couvre les deux cas d'utilisation.
Pour configurer un flux Kinesis Data Firehose de manière à ce qu'il envoie des données à un cluster OpenSearch Service, procédez comme suit :
1. Créez un compartiment Amazon S3 dans le compte A.
2. Créez un groupe de journaux CloudWatch et un flux de journaux dans le compte A.
3. Créez un rôle Kinesis Data Firehose et une stratégie dans le compte A.
4. Créez un cluster OpenSearch Service publiquement accessible dans le compte B vers lequel le rôle Kinesis Data Firehose du compte A diffusera les données.
5. (Facultatif) Si le contrôle précis des accès (FGAC) est activé, connectez-vous à OpenSearch Dashboards et ajoutez un mappage de rôles.
6. Mettez à jour la stratégie de rôle AWS Identity Access Management (IAM) de votre rôle Kinesis Data Firehose dans le compte A pour envoyer des données vers le compte B.
7. Créez le flux Kinesis Data Firehose dans le compte A.
8. Testez le streaming entre comptes vers le cluster OpenSearch Service.
Solution
Créer un compartiment Amazon S3 dans le compte A
Créez un compartiment S3 dans le compte A. Le compartiment Amazon S3 génère un Amazon Resource Name (ARN).
Remarque : l'ARN complet est utilisé ultérieurement pour accorder à Kinesis Data Firehose l'accès pour enregistrer et récupérer des enregistrements à partir de ce compartiment Amazon S3.
Créer un groupe de journaux CloudWatch et un flux de journaux dans le compte A
Pour créer un groupe de journaux CloudWatch, effectuez les opérations suivantes :
1. Ouvrez la console CloudWatch.
2. Dans le volet de navigation, sélectionnez Groupes de journaux.
3. Sélectionnez Créer un groupe de journaux.
4. Saisissez un nom de Groupe de journaux.
5. Cliquez sur le bouton Créer un groupe de journaux pour enregistrer votre nouveau groupe de journaux.
6. Recherchez le groupe de journaux que vous venez de créer et sélectionnez-le. Cette tâche vous permet de savoir si vous pouvez maintenant créer un flux de journaux.
Pour créer un flux de journaux Amazon CloudWatch, effectuez les opérations suivantes :
1. Sélectionnez Créer un flux de journaux.
2. Saisissez un Nom du flux de journaux.
3. Sélectionnez Créer un flux de journaux. Cette action enregistre le flux de journaux que vous venez de créer.
Important : les noms de groupes de journaux et de flux de journaux CloudWatch sont requis lors de la création de stratégies de rôle Kinesis Data Firehose.
Créer un rôle Kinesis Data Firehose et une stratégie dans le compte A
1. Accédez à la console AWS Identity and Access Management (IAM).
2. Créer une politique IAM qui permet à Kinesis Data Firehose d'effectuer les opérations suivantes : Enregistre les journaux de flux dans CloudWatch, Enregistre les données Amazon S3 Streams dans le cluster OpenSearch Service
Par exemple :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "<Bucket ARN>", "<Bucket ARN>/*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>:<account-id>:log-group:/aws/kinesisfirehose/<Firehose Name>:log-stream:*" ] } ] }
Remarque : vous ajouterez des autorisations de diffusion en streaming à la stratégie de cluster OpenSearch Service ultérieurement. Toutefois, vous devez d'abord créer le cluster dans le compte B.
3. Enregistrez la stratégie.
4. Sélectionnez Créer un rôle.
5. Ajoutez la stratégie que vous venez de créer à votre rôle Kinesis Data Firehose.
Créez un cluster OpenSearch Service accessible au public dans le compte B vers le rôle Kinesis Data Firehose du compte A chargé de diffuser des données.
1. Créez votre cluster OpenSearch Service publiquement accessible dans le compte B.
2. Enregistrez l'ARN du domaine OpenSearch Service. Vous aurez besoin de l'ARN pour une étape ultérieure.
3. Configurez les paramètres de sécurité de votre cluster.
Important : vous devez configurer vos paramètres de sécurité OpenSearch Service pour permettre au rôle Kinesis Data Firehose du compte A de diffuser en streaming vers votre cluster OpenSearch Service.
Pour configurer vos paramètres de sécurité, effectuez les opérations suivantes :
1. Dans OpenSearch Service, accédez à la stratégie d'accès.
2. Sélectionnez la stratégie d'accès défini en JSON. Votre politique doit disposer des autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "<ES Domain ARN in Account B>/*", "Condition": { "IpAddress": { "aws:SourceIp": "<Your IP Address for OpenSearch Dashboards access>" } } }, { "Effect": "Allow", "Principal": { "AWS": "<Firehose Role ARN in Account A>" }, "Action": [ "es:ESHttpPost", "es:ESHttpPut" ], "Resource": [ "<ES Domain ARN in Account B>", "<ES Domain ARN in Account B>/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "<Firehose Role ARN in Account A>" }, "Action": "es:ESHttpGet", "Resource": [ "<ES Domain ARN in Account B>/_all/_settings", "<ES Domain ARN in Account B>/_cluster/stats", "<ES Domain ARN in Account B>/index-name*/_mapping/type-name", "<ES Domain ARN in Account B>/roletest*/_mapping/roletest", "<ES Domain ARN in Account B>/_nodes", "<ES Domain ARN in Account B>/_nodes/stats", "<ES Domain ARN in Account B>/_nodes/*/stats", "<ES Domain ARN in Account B>/_stats", "<ES Domain ARN in Account B>/index-name*/_stats", "<ES Domain ARN in Account B>/roletest*/_stats" ] } ] }
Pour en savoir plus sur les autorisations au sein de la politique OpenSearch Service, consultez Diffusion entre comptes vers une destination OpenSearch Service.
3. (Facultatif) Si le contrôle précis des accès (FGAC) est activé sur votre cluster, connectez-vous à OpenSearch Dashboards et ajoutez un mappage de rôles. Le mappage de rôles permet au rôle Kinesis Data Firehose d'envoyer des requêtes à OpenSearch Service.
(Facultatif) Si le contrôle précis des accès (FGAC) est activé, connectez-vous à OpenSearch Dashboards et ajoutez un mappage de rôles.
Si le contrôle précis des accès est activé pour le cluster OpenSearch Service, vous devez vous connecter à OpenSearch Dashboards et ajouter un mappage de rôles au rôle Kinesis Data Firehose. Le mappage de rôles permet au rôle Kinesis Data Firehose d'accéder à la diffusion vers le cluster OpenSearch Service.
Pour vous connecter à OpenSearch Dashboards et ajouter un mappage de rôles, effectuez les opérations suivantes :
1. Ouvrez les tableaux de bord.
2. Choisissez l'onglet Sécurité.
3. Choisissez Rôles.
4. Choisissez le rôle all_access.
5. Choisissez l'onglet Utilisateurs mappés.
6. Choisissez Gérer le mappage.
7. Dans la section Rôles de backend, saisissez le rôle Kinesis Data Firehose.
8. Choisissez Carte.
Mettez à jour la politique de rôle IAM de votre rôle Kinesis Data Firehose dans le compte A pour envoyer des données vers le compte B.
Pour envoyer les données de votre rôle Kinesis Data Firehose du compte A vers votre cluster OpenSearch Service du compte B, mettez à jour la stratégie Kinesis Data Firehose comme suit :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "<Bucket ARN>", "<Bucket ARN>/*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>:<account-id>:log-group:/aws/kinesisfirehose/<Firehose Name>:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpPost", "es:ESHttpPut", "es:DescribeDomain", "es:DescribeDomains", "es:DescribeDomainConfig" ], "Resource": [ "<Domain ARN in Account B>", "<Domain ARN in Account B>/*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpGet" ], "Resource": [ "<Domain ARN in Account B>/_all/_settings", "<Domain ARN in Account B>/_cluster/stats", "<Domain ARN in Account B>/index-name*/_mapping/superstore", "<Domain ARN in Account B>/_nodes", "<Domain ARN in Account B>/_nodes/stats", "<Domain ARN in Account B>/_nodes/*/stats", "<Domain ARN in Account B>/_stats", "<Domain ARN in Account B>/index-name*/_stats" ] } ] }
Pour en savoir plus sur l'envoi de données Kinesis Data Firehose à votre cluster OpenSearch Service, consultez Attribution de l'accès à une destination Amazon OpenSearch Service à Kinesis Data Firehose.
Créer le flux Kinesis Data Firehose dans le compte A
Pour créer un flux Kinesis Data Firehose avec un accès entre comptes au cluster OpenSearch Service, utilisez et configurez AWS Command Line Interface (AWS CLI).
Vérifiez que votre AWS CLI est à jour :
aws --version
Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS CLI, assurez-vous d'utiliser la version la plus récente d'AWS CLI.
Une fois AWS CLI mise à jour, créez un fichier nommé input.json avec le contenu suivant :
{ "DeliveryStreamName": "<Firehose Name>", "DeliveryStreamType": "DirectPut", "ElasticsearchDestinationConfiguration": { "RoleARN": "", "ClusterEndpoint": "", "IndexName": "local", "TypeName": "TypeName", "IndexRotationPeriod": "OneDay", "BufferingHints": { "IntervalInSeconds": 60, "SizeInMBs": 50 }, "RetryOptions": { "DurationInSeconds": 60 }, "S3BackupMode": "FailedDocumentsOnly", "S3Configuration": { "RoleARN": "", "BucketARN": "", "Prefix": "", "BufferingHints": { "SizeInMBs": 128, "IntervalInSeconds": 128 }, "CompressionFormat": "UNCOMPRESSED", "CloudWatchLoggingOptions": { "Enabled": true, "LogGroupName": "/aws/kinesisfirehose/<Firehose Name>", "LogStreamName": "S3Delivery" } }, "CloudWatchLoggingOptions": { "Enabled": true, "LogGroupName": "/aws/kinesisfirehose/<Firehose Name>", "LogStreamName": "ElasticsearchDelivery" } } }
Assurez-vous que la valeur du point de terminaison est correctement saisie dans le champ d'attribut ClusterEndpoint.
Remarque : les types sont obsolètes dans Elasticsearch version 7.x. Si vous utilisez Elasticsearch version 7.x, veillez à supprimer l'attribut TypeName du fichier input.json.
Exécutez ensuite la commande CLI suivante dans le même répertoire que l'emplacement du fichier input.json :
aws firehose create-delivery-stream --cli-input-json file://input.json
Cette syntaxe de commande crée un flux Kinesis Data Firehose dans le compte A avec une destination vers un cluster OpenSearch Service dans le compte B.
Tester le streaming entre comptes vers le cluster OpenSearch Service
Utilisez Kinesis Data Generator pour diffuser en streaming des enregistrements dans le flux Kinesis Data Firehose du compte A.
Kinesis Data Generator (KDG) génère de nombreux enregistrements par seconde. Avec ce niveau de productivité, OpenSearch Service dispose de suffisamment de points de données pour déterminer le mappage approprié d'une structure d'enregistrement.
Voici la structure de modèle utilisée dans Kinesis Data Generator :
{ "device_id": {{random.number(5)}}, "device_owner": "{{name.firstName}} {{name.lastName}}", "temperature": {{random.number( { "min":10, "max":150 } )}}, "timestamp": "{{date.now("DD/MMM/YYYY:HH:mm:ss Z")}}" }
Pour vérifier si la diffusion entre comptes a réussi, examinez les entrées d'index sous l'onglet Index de votre cluster. Vérifiez s'il existe un nom d'index à l'aide du préfixe « local » avec la date actuelle. Vous pouvez également vérifier si les enregistrements sont présents dans OpenSearch Dashboards.
Remarque : OpenSearch Service prend quelques minutes pour déterminer le mappage correct.
Informations connexes
Création d'un flux de diffusion Amazon Kinesis Data Firehose
Écriture dans Kinesis Data Firehose avec Kinesis Data Streams

Contenus pertinents
- demandé il y a 6 moislg...
- demandé il y a 10 moislg...
- demandé il y a 3 moislg...
- demandé il y a un moislg...
- demandé il y a 4 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 6 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans