将 OpenSearch 摄取管道与 OpenSearch - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 OpenSearch 摄取管道与 OpenSearch

您可以使用带自我管理 OpenSearch 或 Elastic OpenSearch search 的摄取管道将数据迁移到亚马逊 OpenSearch 服务域和无服务器集合。 OpenSearch OpenSearch Ingestion 支持公用和私有网络配置,用于迁移来自自管理 OpenSearch 和 Elasticsearch 的数据。

与公共集 OpenSearch群的连接

您可以使用 OpenSearch Ingestion 管道从具有公共配置的自管理集群 OpenSearch 或 Elasticsearch 集群迁移数据,这意味着可以公开解析域DNS名。为此,请设置一个以自我管理 OpenSearch 或 Elast OpenSearch icsearch 为源,以 OpenSearch 服务或 OpenSearch 无服务器为目标的采集管道。这可以有效地将您的数据从自我管理的源集群迁移到托管的 AWS目标域或集合。

先决条件

在创建 OpenSearch 摄取管道之前,请执行以下步骤:

  1. 创建包含您要迁移的数据的自管理集群 OpenSearch 或 Elastisearch 集群,并配置一个公共名称。DNS

  2. 创建要将数据迁移到的 OpenSearch 服务域或 OpenSearch 无服务器集合。有关更多信息,请参阅创建 OpenSearch 服务域创建集合

  3. 使用在您的自管理集群上设置身份验证。 AWS Secrets Manager按照轮换密钥中的步骤启用AWS Secrets Manager 密钥轮换

  4. 基于资源的策略附加到您的网域,或者将数据访问策略附加到您的馆藏。这些访问策略允许 OpenSearch Ingestion 将数据从您的自管理集群写入您的域或集合。

    以下示例域访问策略允许您在下一步中创建的管道角色向域写入数据。请务必使用自己的版本resource进行更新ARN。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:{region}:{account-id}:domain/domain-name" ] } ] }

    要创建具有访问集合或域名写入数据的正确权限的IAM角色,请参阅域的必需权限集合的必需权限

步骤 1:配置管道角色

设置好 OpenSearch 管道先决条件后,配置要在管道配置中使用的管道角色,添加写入 OpenSearch 服务域或 OpenSearch 无服务器集合的权限,以及从 Secrets Manager 读取密钥的权限。

步骤 2:创建管道

然后,您可以配置如下所示的 OpenSearch Ingestion 管道,该管道指定 OpenSearch 为来源。

您可以指定多个 OpenSearch 服务域作为数据的目的地。此功能允许有条件地路由或将传入数据复制到多个 OpenSearch 服务域。

您还可以将数据从源集 OpenSearch 或 Elasticsearch 集群迁移到 OpenSearch 无服务器VPC集合。确保在管道配置中提供网络访问策略。

version: "2" opensearch-migration-pipeline: source: opensearch: acknowledgments: true host: [ "https://my-self-managed-cluster-name:9200" ] indices: include: - index_name_regex: "include-.*" exclude: - index_name_regex: '\..*' authentication: username: ${aws_secrets:secret:username} password: ${aws_secrets:secret:password} scheduling: interval: "PT2H" index_read_count: 3 start_time: "2023-06-02T22:01:30.00Z" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" region: "us-east-1" #Uncomment the following lines if your destination is an OpenSearch Serverless collection #serverless: true # serverless_options: # network_policy_name: "network-policy-name" index: "${getMetadata(\"opensearch-index\")}" document_id: "${getMetadata(\"opensearch-document_id\")}" enable_request_compression: true dlq: s3: bucket: "bucket-name" key_path_prefix: "apache-log-pipeline/logs/dlq" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" extension: aws: secrets: secret: secret_id: "my-opensearch-secret" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" refresh_interval: PT1H

您可以使用预配置的蓝图来创建此管道。有关更多信息,请参阅 使用蓝图创建管道

与 a 中的 OpenSearch 集群的连接 VPC

您还可以使用 OpenSearch 摄取管道从在中运行的自管理集群 OpenSearch 或 Elasticsearch 集群迁移数据。VPC为此,请设置一个以自我管理 OpenSearch 或 Elast OpenSearch icsearch 为源,以 OpenSearch 服务或 OpenSearch 无服务器为目标的采集管道。这可以有效地将您的数据从自我管理的源集群迁移到托管的 AWS目标域或集合。

先决条件

在创建 OpenSearch 摄取管道之前,请执行以下步骤:

  1. 使用包含要迁移的数据的VPC网络配置创建自管理集群 OpenSearch 或 Elastisearch 集群。

  2. 创建要将数据迁移到的 OpenSearch 服务域或 OpenSearch 无服务器集合。有关更多信息,请参阅创建 OpenSearch 服务域创建集合

  3. 使用在您的自管理集群上设置身份验证。 AWS Secrets Manager按照轮换密钥中的步骤启用AWS Secrets Manager 密钥轮换

  4. 获取有权访问自我管理 OpenSearch 或 Elasticsearch 的用户的 ID。VPC选择VPCCIDR要由 OpenSearch Ingestion 使用的。

    注意

    如果您使用创建管道,则还必须将您的 OpenSearch 摄取管道连接到您的管道,才能使用自我管理 OpenSearch 或 Elasticsearch。 AWS Management Console VPC为此,请找到 “网络配置” 部分,选中 “连接到” VPC 复选框,然后CIDR从提供的默认选项中选择您的,或者选择自己的选项。

    要提供自定义CIDR,请从下拉菜单中选择 “其他”。为避免 OpenSearch 摄取和自我管理之间的 IP 地址冲突 OpenSearch,请确保自我管理与 for Ingest OpenSearch VPC CIDR ion 不同。CIDR OpenSearch

  5. 基于资源的策略附加到您的网域,或者将数据访问策略附加到您的馆藏。这些访问策略允许 OpenSearch Ingestion 将数据从您的自管理集群写入您的域或集合。

    以下示例域访问策略允许您在下一步中创建的管道角色向域写入数据。请务必使用自己的版本resource进行更新ARN。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:{region}:{account-id}:domain/domain-name" ] } ] }

    要创建具有访问集合或域名写入数据的正确权限的IAM角色,请参阅域的必需权限集合的必需权限

步骤 1:配置管道角色

设置好管道先决条件后,配置要在工作流配置中使用的管道角色,并在该角色中添加以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": ["arn:aws:secretsmanager:{region}:{account-id}:secret:secret-name"] }, { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:{account-id}:network-interface/*", "arn:aws:ec2:*:{account-id}:subnet/*", "arn:aws:ec2:*:{account-id}:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

您必须为用于创建 OpenSearch Ingestion 管道的IAM角色提供上述 Amazon EC2 权限,因为管道使用这些权限在您的中创建和删除网络接口。VPC管道只能通过此网络接口访问 OpenSearch 集群。

步骤 2:创建管道

然后,您可以配置如下所示的 OpenSearch Ingestion 管道,该管道指定 OpenSearch 为来源。

您可以指定多个 OpenSearch 服务域作为数据的目的地。此功能允许有条件地路由或将传入数据复制到多个 OpenSearch 服务域。

您还可以将数据从源集 OpenSearch 或 Elasticsearch 集群迁移到 OpenSearch 无服务器VPC集合。确保在管道配置中提供网络访问策略。

version: "2" opensearch-migration-pipeline: source: opensearch: acknowledgments: true host: [ "https://my-self-managed-cluster-name:9200" ] indices: include: - index_name_regex: "include-.*" exclude: - index_name_regex: '\..*' authentication: username: ${aws_secrets:secret:username} password: ${aws_secrets:secret:password} scheduling: interval: "PT2H" index_read_count: 3 start_time: "2023-06-02T22:01:30.00Z" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" region: "us-east-1" #Uncomment the following lines if your destination is an OpenSearch Serverless collection #serverless: true # serverless_options: # network_policy_name: "network-policy-name" index: "${getMetadata(\"opensearch-index\")}" document_id: "${getMetadata(\"opensearch-document_id\")}" enable_request_compression: true dlq: s3: bucket: "bucket-name" key_path_prefix: "apache-log-pipeline/logs/dlq" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" extension: aws: secrets: secret: secret_id: "my-opensearch-secret" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" refresh_interval: PT1H

您可以使用预配置的蓝图来创建此管道。有关更多信息,请参阅 使用蓝图创建管道