Tutoriel : Ingestion de données dans un domaine à l'aide d'Amazon OpenSearch Ingestion - Amazon OpenSearch Service

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.

Tutoriel : Ingestion de données dans un domaine à l'aide d'Amazon OpenSearch Ingestion

Ce didacticiel explique comment utiliser Amazon OpenSearch Ingestion pour configurer un pipeline simple et ingérer des données dans un domaine Amazon OpenSearch Service. Un pipeline est une ressource qu' OpenSearch Ingestion approvisionne et gère. Vous pouvez utiliser un pipeline pour filtrer, enrichir, transformer, normaliser et agréger des données à des fins d'analyse et de visualisation en aval dans OpenSearch Service.

Ce didacticiel vous explique les étapes de base nécessaires à la mise en service rapide d'un pipeline. Pour en savoir plus, consultez Création de pipelines.

Dans le cadre de ce didacticiel, vous suivrez les étapes suivantes :

Dans le didacticiel, vous allez créer les ressources suivantes :

  • Un pipeline nommé ingestion-pipeline

  • Un nom de domaine dans ingestion-domain lequel le pipeline va écrire

  • Un IAM rôle nommé PipelineRole que le pipeline assumera pour écrire dans le domaine

Autorisations nécessaires

Pour suivre ce didacticiel, vous devez disposer des IAM autorisations appropriées. Votre utilisateur ou rôle doit être associé à une politique basée sur l'identité avec les autorisations minimales suivantes. Ces autorisations vous permettent de créer un rôle de pipeline (iam:Create), de créer ou de modifier un domaine (es:*) et d'utiliser des pipelines (osis:*).

En outre, l'iam:PassRoleautorisation est requise sur la ressource de rôle du pipeline. Cette autorisation vous permet de transmettre le rôle de pipeline à OpenSearch Ingestion afin qu'elle puisse écrire des données dans le domaine.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "es:*" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

Étape 1 : Création du rôle de pipeline

Tout d'abord, créez un rôle que le pipeline assumera afin d'accéder au récepteur du domaine de OpenSearch service. Vous allez inclure ce rôle dans la configuration du pipeline plus loin dans ce didacticiel.

Pour créer le rôle de pipeline
  1. Ouvrez la AWS Identity and Access Management console à l'adresse https://console.aws.amazon.com/iamv2/.

  2. Choisissez Politiques, puis choisissez Créer une politique.

  3. Dans ce didacticiel, vous allez ingérer des données dans un domaine appeléingestion-domain, que vous allez créer à l'étape suivante. Sélectionnez JSONet collez la politique suivante dans l'éditeur. {your-account-id}Remplacez-le par votre identifiant de compte et modifiez la région si nécessaire.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain" }, { "Effect": "Allow", "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain/*" } ] }

    Si vous souhaitez écrire des données dans un domaine existant, remplacez-les ingestion-domain par le nom de votre domaine.

    Note

    Pour simplifier ce didacticiel, nous utilisons une politique d'accès assez large. Dans les environnements de production, nous vous recommandons toutefois d'appliquer une politique d'accès plus restrictive à votre rôle de pipeline. Pour un exemple de politique fournissant les autorisations minimales requises, voirAccorder aux OpenSearch pipelines Amazon Ingestion l'accès aux domaines.

  4. Choisissez Next, puis Next et nommez votre pipeline de politiques.

  5. Choisissez Create Policy (Créer une politique).

  6. Créez ensuite un rôle et associez-y la politique. Cliquez sur Rôles, puis sur Créer un rôle.

  7. Choisissez Politique de confiance personnalisée et collez la politique suivante dans l'éditeur :

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. Choisissez Suivant. Recherchez et sélectionnez ensuite pipeline-policy (que vous venez de créer).

  9. Choisissez Next et nommez le rôle PipelineRole.

  10. Sélectionnez Créer un rôle.

N'oubliez pas le nom de ressource Amazon (ARN) du rôle (par exemple,arn:aws:iam::your-account-id:role/PipelineRole). Vous en aurez besoin lors de la création de votre pipeline.

Étape 2 : créer un domaine

Créez ensuite un nom de domaine dans lequel ingestion-domain les données seront ingérées.

Accédez à la console Amazon OpenSearch Service à l'https://console.aws.amazon.com/aos/accueil et créez un domaine répondant aux exigences suivantes :

  • Exécute la OpenSearch version 1.0 ou ultérieure, ou Elasticsearch 7.4 ou version ultérieure

  • Utilise l'accès public

  • N'utilise pas de contrôle d'accès détaillé

Note

Ces exigences visent à garantir la simplicité de ce didacticiel. Dans les environnements de production, vous pouvez configurer un domaine avec VPC accès et/ou utiliser un contrôle d'accès précis. Pour utiliser un contrôle d'accès précis, voir Cartographier le rôle du pipeline.

Le domaine doit disposer d'une politique d'accès qui accorde l'autorisationPipelineRole, que vous avez créée à l'étape précédente. Le pipeline assumera ce rôle (nommé sts_role_arn dans la configuration du pipeline) afin d'envoyer des données au récepteur du domaine de service. OpenSearch

Assurez-vous que le domaine applique la politique d'accès au niveau du domaine suivante, qui autorise l'PipelineRoleaccès au domaine. Remplacez la région et le numéro de compte par les vôtres :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-account-id:role/PipelineRole" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain/*" } ] }

Pour plus d'informations sur la création de politiques d'accès au niveau du domaine, consultez la section Politiques d'accès basées sur les ressources.

Si vous avez déjà créé un domaine, modifiez sa politique d'accès existante pour accorder les autorisations ci-dessus àPipelineRole.

Note

N'oubliez pas le point de terminaison du domaine (par exemple,https://search-ingestion-domain.us-east-1.es.amazonaws.com). Vous l'utiliserez à l'étape suivante pour configurer votre pipeline.

Étape 3 : Création d'un pipeline

Maintenant que vous disposez d'un domaine et d'un rôle dotés des droits d'accès appropriés, vous pouvez créer un pipeline.

Pour créer un pipeline
  1. Dans la console Amazon OpenSearch Service, choisissez Pipelines dans le volet de navigation de gauche.

  2. Choisissez Créer un pipeline.

  3. Sélectionnez le pipeline vide, puis sélectionnez Sélectionner le plan.

  4. Nommez le pipeline d'ingestion et conservez les paramètres de capacité par défaut.

  5. Dans ce didacticiel, vous allez créer un sous-pipeline simple appelé log-pipeline qui utilise le plugin source Http. Ce plugin accepte les données du journal sous forme JSON de tableau. Vous allez spécifier un seul domaine de OpenSearch service comme récepteur et intégrer toutes les données dans l'application_logsindex.

    Sous Configuration du pipeline, collez la YAML configuration suivante dans l'éditeur :

    version: "2" log-pipeline: source: http: path: "/${pipelineName}/test_ingestion_path" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://search-ingestion-domain.us-east-1.es.amazonaws.com" ] index: "application_logs" aws: sts_role_arn: "arn:aws:iam::your-account-id:role/PipelineRole" region: "us-east-1"
    Note

    L'pathoption indique le URI chemin d'ingestion. Cette option est requise pour les sources basées sur le pull. Pour de plus amples informations, veuillez consulter Spécification du chemin d'ingestion.

  6. Remplacez le hosts URL par le point de terminaison du domaine que vous avez créé (ou modifié) dans la section précédente. Remplacez le sts_role_arn paramètre par le signe ARN dePipelineRole.

  7. Choisissez Valider le pipeline et assurez-vous que la validation aboutit.

  8. Pour simplifier ce didacticiel, configurez l'accès public pour le pipeline. Sous Network (Réseau), choisissez Public Access (Accès public).

    Pour plus d'informations sur la configuration de VPC l'accès, consultezConfiguration de l'accès VPC pour les pipelines Amazon Ingestion OpenSearch .

  9. Maintenez la publication des journaux activée au cas où vous rencontreriez des problèmes lors de la réalisation de ce didacticiel. Pour de plus amples informations, veuillez consulter Surveillance des journaux du pipeline.

    Spécifiez le nom du groupe de journaux suivant : /aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs

  10. Choisissez Suivant. Passez en revue la configuration de votre pipeline et choisissez Create pipeline. Le pipeline prend 5 à 10 minutes pour devenir actif.

Étape 4 : Ingérer des exemples de données

Lorsque l'état du pipeline est atteintActive, vous pouvez commencer à y ingérer des données. Vous devez signer toutes les HTTP demandes adressées au pipeline à l'aide de la version 4 de Signature. Utilisez un HTTP outil tel que Postman ou awscurl pour envoyer des données au pipeline. Comme pour l'indexation de données directement dans un domaine, l'ingestion de données dans un pipeline nécessite toujours un IAM rôle ou une clé d'IAMaccès et une clé secrète.

Note

Le principal signataire de la demande doit avoir l'osis:IngestIAMautorisation.

Tout d'abord, récupérez l'ingestion URL depuis la page des paramètres du pipeline :

Pipeline settings page showing ingestion URL for an active ingestion pipeline.

Ensuite, ingérez des exemples de données. La requête suivante utilise awscurl pour envoyer un seul fichier journal à l'index : application_logs

awscurl --service osis --region us-east-1 \ -X POST \ -H "Content-Type: application/json" \ -d '[{"time":"2014-08-11T11:40:13+00:00","remote_addr":"122.226.223.69","status":"404","request":"GET http://www.k2proxy.com//hello.html HTTP/1.1","http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)"}]' \ https://pipeline-endpoint.us-east-1.osis.amazonaws.com/log-pipeline/test_ingestion_path

Vous devriez voir une 200 OK réponse. Si vous recevez une erreur d'authentification, cela peut être dû au fait que vous ingérez des données provenant d'un compte distinct de celui dans lequel se trouve le pipeline. Consultez Résoudre les problèmes d'autorisations.

Maintenant, interrogez l'application_logsindex pour vous assurer que votre entrée de journal a été correctement ingérée :

awscurl --service es --region us-east-1 \ -X GET \ https://search-ingestion-domain.us-east-1.es.amazonaws.com/application_logs/_search | json_pp

Exemple de réponse:

{ "took":984, "timed_out":false, "_shards":{ "total":1, "successful":5, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"application_logs", "_type":"_doc", "_id":"z6VY_IMBRpceX-DU6V4O", "_score":1.0, "_source":{ "time":"2014-08-11T11:40:13+00:00", "remote_addr":"122.226.223.69", "status":"404", "request":"GET http://www.k2proxy.com//hello.html HTTP/1.1", "http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)", "@timestamp":"2022-10-21T21:00:25.502Z" } } ] } }

Résoudre les problèmes d'autorisations

Si vous avez suivi les étapes du didacticiel et que des erreurs d'authentification persistent lorsque vous essayez d'ingérer des données, cela peut être dû au fait que le rôle qui écrit dans un pipeline se trouve dans un pipeline différent de Compte AWS celui du pipeline lui-même. Dans ce cas, vous devez créer et assumer un rôle qui vous permet spécifiquement d'ingérer des données. Pour obtenir des instructions, consultez Fournir un accès à l'ingestion entre comptes.

Ressources connexes

Ce didacticiel a présenté un cas d'utilisation simple consistant à ingérer un seul document. HTTP Dans les scénarios de production, vous allez configurer vos applications clientes (telles que Fluent Bit, Kubernetes ou le OpenTelemetry Collector) pour envoyer des données vers un ou plusieurs pipelines. Vos pipelines seront probablement plus complexes que le simple exemple de ce didacticiel.

Pour commencer à configurer vos clients et à ingérer des données, consultez les ressources suivantes :