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:PassRole
autorisation 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
-
Ouvrez la AWS Identity and Access Management console à l'adresse https://console.aws.amazon.com/iamv2/
. -
Choisissez Politiques, puis choisissez Créer une politique.
-
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.
-
Choisissez Next, puis Next et nommez votre pipeline de politiques.
-
Choisissez Create Policy (Créer une politique).
-
Créez ensuite un rôle et associez-y la politique. Cliquez sur Rôles, puis sur Créer un rôle.
-
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" } ] }
-
Choisissez Suivant. Recherchez et sélectionnez ensuite pipeline-policy (que vous venez de créer).
-
Choisissez Next et nommez le rôle PipelineRole.
-
Sélectionnez Créer un rôle.
N'oubliez pas le nom de ressource Amazon (ARN) du rôle (par exemple,arn:aws:iam::
). Vous en aurez besoin lors de la création de votre pipeline.your-account-id
:role/PipelineRole
É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
-
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'PipelineRole
accè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-
). Vous l'utiliserez à l'étape suivante pour configurer votre pipeline.ingestion-domain
.us-east-1.es.amazonaws.com
É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
-
Dans la console Amazon OpenSearch Service, choisissez Pipelines dans le volet de navigation de gauche.
-
Choisissez Créer un pipeline.
-
Sélectionnez le pipeline vide, puis sélectionnez Sélectionner le plan.
-
Nommez le pipeline d'ingestion et conservez les paramètres de capacité par défaut.
-
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_logs
index.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'
path
option 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. -
Remplacez le
hosts
URL par le point de terminaison du domaine que vous avez créé (ou modifié) dans la section précédente. Remplacez lests_role_arn
paramètre par le signe ARN dePipelineRole
. -
Choisissez Valider le pipeline et assurez-vous que la validation aboutit.
-
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 .
-
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
-
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
Note
Le principal signataire de la demande doit avoir l'osis:Ingest
IAMautorisation.
Tout d'abord, récupérez l'ingestion URL depuis la page des paramètres du pipeline :
Ensuite, ingérez des exemples de données. La requête suivante utilise awscurlapplication_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_logs
index 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 :