我想将输入发送到logstash在S3上传的特定文件。
我有一个S3存储桶,并且想要指定文件名,以便只能将该特定的S3文件名作为Elasticsearch的输入而不是整个存储桶的内容。
知道如何做到这一点。试图给出文件名,但没有工作。
我也未能找到类似的问题。
编辑..这是我正在使用的conf文件的输入。
输入 {
s3
{
bucket => "logstashtestbucket1"
access_key_id => "Key"
secret_access_key => "SecretKey"
region => "us-west-2"
}
}
答案 0 :(得分:0)
当您只想使用logstash从s3加载一个对象时,请指定prefix
及其中对象的完整路径。
如果您的文件是logstashtestbucket1,并且您的对象具有路径“ a / b / c.txt”和“ a / b / d.txt”,而您只想加载“ a / b / c.txt”,则您的logstash输入将显示为:
a ← 2 3 3⍴⍳4
b ← 3 3 4⍴⍳5
f ← {⍺+⊂⍵}
g ← {⍺⍵}
⎕←(a f.g b) ≡ (↓[≢⍴a]a) ∘.{⊃ f/ ⍺ g¨ ⍵} (↓[1]b)
需要设置 input {
s3
{
bucket => "logstashtestbucket1"
prefix => "a/b/c.txt"
region => "us-west-2"
watch_for_new_files => false
}
}
来告诉logstash加载已经存在的对象,然后退出。否则,它将等待带有该前缀的新对象到达,因此永远不会退出或进行任何工作。
经过logstash 7.6测试,watch_for_new_files
自从至少logstash 2.x以来一直是一项功能。
我从配置块中删除了秘密,以防有人复制该引用而又不理解它。如果您未在EC2的instance profile中拥有权限,则请将您的机密信息放入环境变量中。