如何在Terraform AWS Provider 4.28.0中设置SQS触发器最大并发数
在Terraform AWS Provider 4.28.0中设置SQS触发器最大并发数
由于AWS Provider 4.28.0版本的aws_lambda_event_source_mapping资源未封装scaling_config配置项,我们可以通过结合Terraform资源与AWS CLI命令的方式实现最大并发数设为50的需求:
步骤1:创建基础Lambda事件源映射
先通过Terraform定义SQS与Lambda的关联关系:
resource "aws_lambda_event_source_mapping" "sqs_trigger" { event_source_arn = aws_sqs_queue.my_queue.arn function_name = aws_lambda_function.my_lambda.arn batch_size = 10 # 根据业务需求调整批量处理大小 enabled = true }
步骤2:通过AWS CLI更新并发配置
使用null_resource配合local-exec执行AWS CLI命令,直接调用Lambda API设置最大并发数:
resource "null_resource" "configure_sqs_concurrency" { # 确保事件源映射创建完成后再执行配置 depends_on = [aws_lambda_event_source_mapping.sqs_trigger] provisioner "local-exec" { command = <<EOT aws lambda update-event-source-mapping \ --uuid ${aws_lambda_event_source_mapping.sqs_trigger.uuid} \ --scaling-config '{"MaximumConcurrency": 50}' EOT } # 当事件源映射的UUID变化时,自动重新执行配置命令 triggers = { event_source_uuid = aws_lambda_event_source_mapping.sqs_trigger.uuid } }
注意事项
- 执行Terraform的环境需要安装AWS CLI,且配置了具备
lambda:UpdateEventSourceMapping权限的AWS凭证 - 此方式通过外部命令修改资源,Terraform状态文件不会记录
scaling_config的配置值,后续若通过Terraform修改aws_lambda_event_source_mapping资源,需确保该配置会被重新执行 - 若在CI/CD流水线中执行,需提前在流水线环境配置好AWS CLI及对应凭证
内容的提问来源于stack exchange,提问作者Ravi Sigdel
相关产品推荐
相关产品推荐

