2015-11-10 94 views
0

在logstash配置文件中,我给出了以下输入插件。如何从s3获取数据到logstash?

input{ 
    s3{ 
    bucket => 'bucket_name' 
    region => 'eu-west-1' 
    } 
} 

当我开始logstash时,它抛出一个错误,要求提供AWS证书。但我无法提供AWS access_key_id和secret_key。我发现,在EC2实例上使用IAM角色时,我们不应该为发出这些请求的应用程序明确提供AWS凭证。我试图了解如何从a logstash Github issue配置IAM角色,但失败。请建议我应该如何配置logstash文件,以便我可以从S3获取数据,而无需明确提供AWS凭证。

回答

0

当您是创建 EC2实例时,您可以为其分配一个IAM角色。如果你在创建它的时候没有给它一个角色,你永远不能给它一个角色。您可以修改角色的属性(例如,,例如赋予角色更多或更少的访问权限),但您无法更改实例创建后实例具有的角色。

测试如果一个实例有你需要的凭据,最简单的方法是使用命令行工具:

$ echo $AWS_ACCESS_KEY_ID 
$ 

这表明,我们没有环境变量,所以如果我们获得证书,他们必须是实例的信誉。

$ aws --region=eu-west-1 s3 ls my.bucket 
          PRE some-directory/ 
          PRE another-dir/ 
2015-11-05 18:03:53  464 little-file 
2014-10-28 15:32:13  19740 bigger-file.html 
$ 

我能列出桶含量,所以在那里我运行此命令的EC2实例必须允许它列出此斗内容的IAM角色!

+0

好的,我将创建EC2实例并分配一个IAM角色。我的疑问是,如果我必须在logstash文件中指定更多内容。反正我会先按照你的建议创建和检查。为ypur做出回应。 – AV94

+0

我不完全清楚s3输入插件的哪个版本默认可用。但是,如果没有提供凭据,[最近的代码](https://github.com/logstash-plugins/logstash-input-s3/blob/master/lib/logstash/inputs/s3.rb#L397)将会正确运行并在具有角色的机器上运行。确保你的角色具有正确的权限(最简单的事情就是做不好的安全性并赋予它“S3完全访问”角色)。 –

相关问题