Terraform文档提供了添加过滤前缀或后缀的选项。在一个完整的对象键中,前缀在桶名本身之后。
resource "aws_s3_bucket_notification" "bucket_notification" {
bucket = aws_s3_bucket.bucket.id
lambda_function {
lambda_function_arn = aws_lambda_function.func.arn
events = ["s3:ObjectCreated:*"]
filter_prefix = "AWSLogs/"
filter_suffix = ".log"
}
depends_on = [aws_lambda_permission.allow_bucket]
}
是否可以在事件通知配置中使用完整的s3对象键来确保只考虑对特定文件的更改,而不是仅仅使用前缀?
例如,我想用mybucketname/AWSLogs/file.txt
代替filter_prefix"AWSLogs/"
。
令人惊讶的是,正如您所发现的,没有内置的方法可以仅在一个对象上触发S3事件通知。
如果您控制插入AWSLogs/file.txt
对象的进程,请尝试将其插入只包含该文件&设置前缀
如果您不控制该过程,将前缀和后缀设置为AWSLogs/file.txt
将是唯一的破解方法。
使用Amazon EventBridge也不能工作,因为没有精确匹配的类型,所以它只会增加复杂性。
AWS应该加入这个功能,早该加入了。