如何在Terraform中配置API Gateway与Kinesis数据流的集成请求?
API Gateway集成Kinesis动态分片的Terraform配置问题及解决
我需要用Terraform配置API Gateway的集成请求资源,实现通过API Gateway Method向Kinesis数据流推送数据。之前找到的示例里指定了固定分片,但我的需求是基于user_id这类标识动态选择分片,一开始的配置如下:
resource "aws_api_gateway_integration" "post_method_integration" { rest_api_id = aws_api_gateway_rest_api.my_api.id resource_id = aws_api_gateway_resource.the_resource.id http_method = aws_api_gateway_method.the_method.http_method integration_http_method = "POST" type = "AWS" uri = format( "arn:%s:apigateway:%s:kinesis:action/PutRecord", data.aws_partition.current.partition, var.default_region ) }
问题解决
我已经解决了这个问题,修正后的关键配置如下:
uri = "arn:aws:apigateway:${var.default_region}:kinesis:action/PutRecord" credentials = aws_iam_role.api_gw_kinesis_role.arn
额外说明:要实现动态分片,还需在API Gateway的request_templates中配置请求映射模板,将请求中的user_id作为PartitionKey传入Kinesis的PutRecord接口,Kinesis会基于该键值哈希后自动分配到对应分片。示例映射模板如下:
{ "StreamName": "${var.kinesis_stream_name}", "Data": "$util.base64Encode($input.body)", "PartitionKey": "$input.path('$.user_id')" }
内容的提问来源于stack exchange,提问作者OctaveParango
相关产品推荐
相关产品推荐

