即使我遵循 terraform 文档来准确启用动态分区(https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kinesis_firehose_delivery_stream),我仍然收到以下错误:
错误:创建 Kinesis Firehose 传输流时出错:InvalidArgumentException:启用动态分区时,动态分区命名空间只能是前缀表达式的一部分。
我完全困惑为什么我会收到此错误,因为启用的processing_configuration设置为true,所以我不确定为什么它会给我一个错误,其中说动态分区根本没有启用。任何帮助,将不胜感激。谢谢!
我遇到了类似的问题:
InvalidArgumentException: BufferingHints.SizeInMBs must be at least 64 when Dynamic Partitioning is enabled.
我使用 buffer_size = "64"
来解决同样的问题。我使用 lambda 来获取动态分区键。
具有动态分区的 Kinesis Firehose 的整个脚本如下:
resource "aws_kinesis_firehose_delivery_stream" "firehose" {
name = "firehose_test"
destination = "extended_s3"
tags = {
env = "PROD"
}
extended_s3_configuration {
role_arn = aws_iam_role.firehose_stream_role.arn
bucket_arn = var.s3_arn
buffer_size = "64"
# https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html
dynamic_partitioning_configuration {
enabled = "true"
}
# Example prefix using partitionKeyFromQuery
prefix = "ingest/data/!{partitionKeyFromLambda:year}/!{partitionKeyFromLambda:month}/!{partitionKeyFromLambda:day}/!{partitionKeyFromLambda:hour}/"
error_output_prefix = "ingest/errors/"
cloudwatch_logging_options {
enabled = "true"
log_group_name = aws_cloudwatch_log_group.logging_group.name
log_stream_name = aws_cloudwatch_log_stream.logging_stream.name
}
processing_configuration {
enabled = "true"
processors {
type = "Lambda"
parameters {
parameter_name = "LambdaArn"
parameter_value = "${aws_lambda_function.lambda_function.arn}:$LATEST"
}
parameters {
parameter_name = "BufferSizeInMBs"
parameter_value = 0.2
}
parameters {
parameter_name = "BufferIntervalInSeconds"
parameter_value = 60
}
}
}
}
}```
动态分区的示例不完整。 他们没有提到的是,您还需要指定一个
dynamic_partitioning_configuration
块来启用它。
dynamic_partitioning_configuration {
enabled = "true"
}