

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

# 使用 Logstash 将数据加载到亚马逊 OpenSearch 服务
<a name="managedomains-logstash"></a>

Logstash（Logstash OSS）的开源版本为使用批量 API 将数据上传到您的亚马逊服务域提供了一种便捷的方式。 OpenSearch 该服务支持所有标准的 Logstash 输入插件，包括 Amazon S3 输入插件。 OpenSearch 服务支持[logstash-output-opensearch](https://github.com/opensearch-project/logstash-output-opensearch)输出插件，该插件同时支持基本身份验证和 IAM 证书。该插件适用于 Logstash OSS 版本 8.1 及更低版本。

## 配置
<a name="logstash-config"></a>

Logstash 配置因域使用的身份验证类型不同而不同。

无论使用何种身份验证方法，都必须在配置文件的输出部分中将 `ecs_compatibility` 设置为 `disabled`。Logstash 8.0 引入了一项突破性更改，其中所有插件都[默认以 ECS 兼容模式](https://www.elastic.co/guide/en/logstash/current/ecs-ls.html#_specific_plugin_instance)运行。必须覆盖此默认值才能保持旧有的行为。

### 精细访问控制配置
<a name="logstash-config-fgac"></a>

如果您的 OpenSearch 服务域使用[精细的访问控制](fgac.md)和 HTTP 基本身份验证，则配置与任何其他 OpenSearch集群类似。此示例配置文件从开源版本的 Filebeat (Filebeat OSS) 获取其输入。

```
input {
  beats  {
    port => 5044
  }
}

output {
  opensearch {
    hosts       => "https://domain-endpoint:443"
    user        => "my-username"
    password    => "my-password"
    index       => "logstash-logs-%{+YYYY.MM.dd}"
    ecs_compatibility => disabled
    ssl_certificate_verification => false
  }
}
```

配置因 Beats 应用程序和用例而异，但您的 Filebeat OSS 配置可能如下所示：

```
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /path/to/logs/dir/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.ilm.enabled: false
setup.ilm.check_exists: false
setup.template.settings:
  index.number_of_shards: 1
output.logstash:
  hosts: ["logstash-host:5044"]
```

### IAM 配置
<a name="logstash-config-iam"></a>

如果您的网域使用基于 IAM 的域访问策略或主用户的精细访问控制，则必须使用 IAM 凭证签署所有向 Ser OpenSearch vice 发出的请求。以下基于身份的策略将所有 HTTP 请求授予域的子资源。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
    }
  ]
}
```

------

要设置 Logstash 配置，请将您的配置文件更改为使用插件进行输出。此示例配置文件从 S3 存储桶中的文件获取其输入：

```
input {
  s3 {
    bucket => "amzn-s3-demo-"
    region => "us-east-1"
  }
}

output {        
  opensearch {     
    hosts => ["domain-endpoint:443"]             
    auth_type => {    
      type => 'aws_iam'     
      aws_access_key_id => 'your-access-key'     
      aws_secret_access_key => 'your-secret-key'     
      region => 'us-east-1'         
      }         
      index  => "logstash-logs-%{+YYYY.MM.dd}"  
      ecs_compatibility => disabled    
  }            
}
```

如果您不想在配置文件中提供 IAM 凭证，则可以将其导出（或运行 `aws configure`）:

```
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_SESSION_TOKEN="your-session-token"
```

如果您的 OpenSearch 服务域位于 VPC 中，则 Logstash OSS 计算机必须能够连接到 VPC 并能够通过 VPC 安全组访问该域。有关更多信息，请参阅 [关于 VPC 域的访问策略](vpc.md#vpc-security)。