如何通过Terraform配置DynamoDB触发器仅响应INSERT类型事件
解决方案
你需要在aws_lambda_event_source_mapping资源中添加事件过滤规则,仅匹配DynamoDB流的INSERT事件即可,该过滤逻辑会在Lambda事件源侧直接生效,不符合条件的事件不会触发Lambda运行。
前置要求
确保你的AWS Terraform Provider版本 >= 3.64.0,该版本首次引入了filter_criteria参数用于事件源过滤。
修改后的Terraform配置
DynamoDB表的配置不需要改动,仅调整Lambda事件源映射部分即可,完整修改后的资源代码如下:
resource "aws_dynamodb_table" "filenames" { name = local.dynamodb_table_filenames billing_mode = "PROVISIONED" read_capacity = 1000 write_capacity = 1000 hash_key = "filename" stream_enabled = true stream_view_type = "NEW_IMAGE" attribute { name = "filename" type = "S" } tags = var.tags } resource "aws_lambda_event_source_mapping" "allow_dynamodb_table_to_trigger_lambda" { event_source_arn = aws_dynamodb_table.filenames.stream_arn function_name = aws_lambda_function.trigger_stepfunction_lambda.arn starting_position = "LATEST" # 新增的事件过滤配置 filter_criteria { filter { pattern = jsonencode({ eventName = ["INSERT"] }) } } }
配置说明
- 过滤规则中
eventName = ["INSERT"]表示仅匹配DynamoDB流的新增条目事件,如果你后续需要同时支持其他事件类型,可直接在数组中追加,例如["INSERT", "MODIFY"]表示新增和修改条目时都会触发Lambda。 - 该过滤规则无需修改Lambda代码即可生效,也不会产生不符合条件事件的Lambda调用费用。
内容的提问来源于stack exchange,提问作者user13067694
相关产品推荐
相关产品推荐

