![](/img/trans.png)
[英]Filter output of cloudtrail logs obtained using get_object from S3
[英]Cloudtrail using terraform
我正在使用 terraform 创建一个 cloudtrail。问题是我的源存储桶在 3 个月后不断变化。 现在我想为 field_selector 提供动态 S3 存储桶值。 我正在做这样的事情:
resource "aws_cloudtrail" "test" {
name = "test_trail"
s3_bucket_name = bucket.id
enable_logging = true
include_global_service_events = true
is_multi_region_trail = true
enable_log_file_validation = true
advanced_event_selector {
name = "Log download event data"
field_selector {
field = "eventCategory"
equals = ["Data"]
}
field_selector {
field = "resources.type"
equals = ["AWS::S3::Object"]
}
field_selector {
field = "eventName"
equals = ["GetObject"]
}
field_selector {
field = "resources.ARN"
**starts_with = ["aws_s3_bucket.sftp_file_upload_bucket.arn"]**
}
}
在这里,我给出了 arn,但日志不是以这种方式创建的,但是如果我对存储桶名称进行硬编码,它就会被创建。
当您想记录存储桶的 object 事件时,ARN 是不够的。 正如 AWS CLI 文档所述 [1]:
例如,如果 resources.type 等于 AWS::S3::Object,则 ARN 必须采用以下格式之一。 要记录特定 S3 存储桶中所有对象的所有数据事件,请使用 StartsWith 运算符,并仅包括存储桶 ARN 作为匹配值。 尾部斜杠是有意的; 不要排除它。
因此,在您的情况下,您必须将最后一个字段选择器修复为:
field_selector {
field = "resources.ARN"
starts_with = ["${aws_s3_bucket.sftp_file_upload_bucket.arn}/"]
}
使用资源的属性时,您应该像这样指定它
"${aws_s3_bucket.sftp_file_upload_bucket.arn}"
或者没有像这样的引号
aws_s3_bucket.sftp_file_upload_bucket.arn
所以,正确的版本是
field_selector {
field = "resources.ARN"
starts_with = [aws_s3_bucket.sftp_file_upload_bucket.arn]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.